Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
«Разработка программ на С++ и в системе MathCAD» Вариант № 26 Р,РС 1 курс, 2 семестр (преподаватель Назарова).doc
Скачиваний:
6
Добавлен:
20.05.2014
Размер:
109.06 Кб
Скачать

Задача № 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 строк треугольника Паскаля

Алгоритм:

  1. Создаем массив (2n+1)хn, заполняем первую строчку нулями, кроме n+1ой позиции, куда ставим 1

  2. Первый и последний столбец заполняем нулями.

  3. Все оставшиеся позиции заполняем следующим образом: MasA[i][j]=MasA[i-1][j-1]+MasA[i-1][j+1]

  4. Выводим на экран массив, только заменяем нули пробелами.

#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