Задача № 555
Треугольник Паскаля называется числовой треугольник
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
…………………………………………………….
в котором по краям стоят единицы, а каждое число внутри равно сумме двух стоящих над ним в ближайшей строке сверху. Дано натуральное n. Получить первые n строк треугольника Паскаля.
Дано:n
Получить: n строк треугольника Паскаля
Алгоритм:
Создаем массив (2n+1)хn, заполняем первую строчку нулями, кроме n+1ой позиции, куда ставим 1
Первый и последний столбец заполняем нулями.
Все оставшиеся позиции заполняем следующим образом: MasA[i][j]=MasA[i-1][j-1]+MasA[i-1][j+1]
Выводим на экран массив, только заменяем нули пробелами.
#include <vcl.h> // Я не знаю что это означает, оно автоматически задается в Builder6
#pragma hdrstop // Я не знаю что это означает, оно автоматически задается в Builder6
#pragma argsused // Я не знаю что это означает, оно автоматически задается в Builder6
#include<iostream.h>
#include<fstream.h>
#include<conio.h>
#include<iomanip.h>
void main()
{
int i,j;
int n;
int MasA[101][101];
cout<<"vvedite 0<n<=50"<<endl; // запрос, ввод и проверка n.
cin>>n;
while(n>50||n==0||n<0){
cout<<"Error! 0<n<=50"<<endl;
cout<<"vvedite 0<n<=50"<<endl;
cin>>n;}
for(i=0;i<2*n+1;i++){ // Пунт 1.
if(i==n)
MasA[0][i]=1;
else MasA[0][i]=0;
}
for(i=0;i<n;i++){ //Пункт 2.
MasA[i][0]=0;
MasA[i][2*n]=0;
}
for(i=1;i<n;i++) //Пункт 3.
for(j=1;j<2*n;j++)
MasA[i][j]=MasA[i-1][j-1]+MasA[i-1][j+1];
for(i=0;i<n;i++){ // Пункт 4.
for(j=0;j<2*n+1;j++){
if(MasA[i][j]==0)
cout<<setw(3)<<" "; // setw - форматирование данных,
else
cout<<setw(3)<<MasA[i][j];
}
cout<<endl;
}
ofstream ptk("k555.txt"); // Объявление потока вывода в файл
if(ptk==0)cout<<"error otkr faila"<<endl;
for(i=0;i<n;i++){ // Эхо вывод в файл.
for(j=0;j<2*n+1;j++){
if(MasA[i][j]==0)
ptk<<setw(3)<<" ";
else
ptk<<setw(3)<<MasA[i][j];
}
ptk<<endl;
}
getch();
}
Тест:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1