Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 30.05.2021
Сообщений: 18
1

Треугольник Паскаля через рекуррентную формулу

18.06.2021, 12:07. Показов 1155. Ответов 8
Метки нет (Все метки)

Добрый день, помогите, пожалуйста с дз: Напишите программу, которая выводит на экран N первых строк треугольника Паскаля. N задаётся пользователем с клавиатуры. Треугольник Паскаля — это числа, расположенные в виде треугольника, где по краям стоят единицы, а каждое число внутри треугольника равно сумме двух чисел, расположенных над ним. Обеспечьте контроль ввода

моя программа выглядит так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
using namespace std;
 
int main() {
   cout << "11. Треугольник Паскаля.\n";
 
  int height;
  cout << "Введите высоту для треугольника Паскаля до 13: ";
  cin >> height;
 
  if (height > 0 && height <= 13) {
    for (int i = 0; i < height; i++) {
      
      for (int tab = 0; tab < height - i; tab++)
        cout << "\t";
 
      int factI = 1;
      for (int tempI = 1; tempI <= i; tempI++)
        factI *= tempI; 
      
      for (int j = 0; j <= i; j++) {
        
        int factJ = 1;
        for (int tempJ = 1; tempJ <= j; tempJ++)
          factJ *= tempJ;
 
        int factIJ = 1;
        for (int tempIJ = 1; tempIJ <= i - j; tempIJ++)
          factIJ *= tempIJ;
 
        int result = factI / (factJ * factIJ);
        cout << result << "\t\t";
      }
      cout << "\n";
    }
  } else cout << "Некорректный ввод данных";
}
нужно решить через C(n,k) = C(n,k-1) * x / y

C(n,0) = 1
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.06.2021, 12:07
Ответы с готовыми решениями:

Для заданного с консоли значения n определить сумму числового ряда через рекуррентную формулу
При запуске программы выводит s как 0. Во всех итерациях. Формула: \sum_{n = 1}^{\infty }...

Построить треугольник Паскаля. Используя треугольник Паскаля, вычислить 𝑘−ое число Фиббоначчи. Нумерация чисел Фиббона
#include &lt;iostream&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;Russian&quot;); ...

Кто-нибудь знает, как запрограммировать выражение (x+y)^n через треугольник Паскаля в C++?
Кто-нибудь знает, как запрограммировать выражение (x+y)^n через треугольник Паскаля в C++?

вывести рекуррентную формулу c++
Правильно ли я все сделал(Сомневаюсь на счет правильности вывода рекуррентной формулы)? Если нет...

8
Эксперт С++
2349 / 1639 / 273
Регистрация: 29.05.2011
Сообщений: 3,368
18.06.2021, 12:50 2
Лучший ответ Сообщение было отмечено Nebraska как решение

Решение

Цитата Сообщение от Nebraska Посмотреть сообщение
нужно решить через C(n,k) = C(n,k-1) * x / y
Кажется правильная формула C(n,k) = C(n-1,k-1) * n / k

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
using namespace std;
 
int C(int n, int k)
{
    if (k <= 0 or n <= 0)
        return 1;
    return C(n-1,k-1)*n/k;
}
 
int main() {
    cout << "11. Треугольник Паскаля.\n";
 
    int height;
    cout << "Введите высоту для треугольника Паскаля до 13: ";
    cin >> height;
 
    if (height > 0 && height <= 13) {
        for (int i = 0; i < height; i++) {
 
            for (int tab = 0; tab < height - i; tab++)
                cout << "\t";
 
            for (int j = 0; j <= i; j++) {
                cout << C(i, j) << "\t\t";
            }
            cout << "\n";
        }
    } else cout << "Некорректный ввод данных";
}
1
0 / 0 / 0
Регистрация: 30.05.2021
Сообщений: 18
18.06.2021, 18:13  [ТС] 3
Спасибо, Ваш код лучше выглядит) и вопрос: а можно сделать без рекурсии, циклом?
0
Эксперт С++
2349 / 1639 / 273
Регистрация: 29.05.2011
Сообщений: 3,368
18.06.2021, 19:43 4
Без рекурсии.
C++
1
2
3
4
5
6
7
8
int C(int n, int k)
{
    int c = 1;
    for (int i = 1; i <= k; ++i)
        c = c * (n-k+i) / i;
 
    return c;
}
0
0 / 0 / 0
Регистрация: 30.05.2021
Сообщений: 18
18.06.2021, 20:12  [ТС] 5
я попробовала, но у меня выдает ошибку, мол определение функции не допускается
начала делать самостоятельно, но с циклом, но у меня опять получается какой-то бред, ошибку не показывает, но на любое число отвечает : некорректный ввод данных
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <iomanip>
using namespace std;
 
int main() {
  cout << "11. Треугольник Паскаля.\n";
 
int height;
  cout << "Введите высоту для треугольника Паскаля до 13: ";
  cin >> height;
 
  if (height > 0 && height <= 13) {
    cout << "Некорректный ввод данных";
  } else {
    for (int i = 1; i <= height; ++i) {
      cout << setw(1 + height * 2 - i * 2);
 
  int с = 1; 
    for (int j = 0; i <= j; j++) {
      cout << с << setw(4);
      с = с * (i - j) / j;
      }
        cout << "\n";
    }
  } 
}
0
Эксперт С++
2349 / 1639 / 273
Регистрация: 29.05.2011
Сообщений: 3,368
18.06.2021, 21:14 6
Цитата Сообщение от Nebraska Посмотреть сообщение
я попробовала, но у меня выдает ошибку, мол определение функции не допускается
Кто выдаёт? Компилятор или некая тестирующая система?
Вот без функции, но с функцией лучше же.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
using namespace std;
 
int main() {
    cout << "11. Треугольник Паскаля.\n";
 
    int height;
    cout << "Введите высоту для треугольника Паскаля до 13: ";
    cin >> height;
 
    if (height > 0 && height <= 13) {
        for (int i = 0; i < height; i++) {
 
            for (int tab = 0; tab < height - i; tab++)
                cout << "\t";
 
            for (int j = 0; j <= i; j++) {
                int c = 1;
                for (int k = 1; k <= j; ++k)
                    c = c * (i-j+k) / k;
                cout << c << "\t\t";
            }
            cout << "\n";
        }
    } else cout << "Некорректный ввод данных";
}
0
0 / 0 / 0
Регистрация: 30.05.2021
Сообщений: 18
18.06.2021, 21:28  [ТС] 7
да это replit
Цитата Сообщение от grizlik78 Посмотреть сообщение
Кто выдаёт?
преподавателю не нравится, целый день вожусь с этим треугольником, а ему все не так(
и я допустила ошибку по невнимательности
if (height <= 0 && height > 13) вот так должно быть записано, поэтому и выдавал некорректное значение, зато сейчас выдает бесконечные 0
0
Эксперт С++
2349 / 1639 / 273
Регистрация: 29.05.2011
Сообщений: 3,368
18.06.2021, 22:17 8
Вариант с массивом вместо дополнительного цикла.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
 
int main() {
    cout << "11. Треугольник Паскаля.\n";
 
    int Cn[13];
    int height;
    cout << "Введите высоту для треугольника Паскаля до 13: ";
    cin >> height;
 
    if (height > 0 && height <= 13) {
        for (int i = 0; i < height; i++) {
 
            for (int tab = 0; tab < height - i; tab++)
                cout << "\t";
 
            for (int j = 0; j <= i; j++) {
                Cn[i-j] = (j > 0) ? Cn[i-j]*i/j : 1;
                cout << Cn[i-j] << "\t\t";
            }
            cout << "\n";
        }
    } else cout << "Некорректный ввод данных";
}
Цитата Сообщение от Nebraska Посмотреть сообщение
преподавателю не нравится, целый день вожусь с этим треугольником, а ему все не так(
Знать бы что не так.
0
0 / 0 / 0
Регистрация: 30.05.2021
Сообщений: 18
18.06.2021, 22:37  [ТС] 9
Он говорит, что нужен цикл еще
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2021, 22:37

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Вычислить рекуррентную формулу
даны действительное число а и натуральное число n.Вычислить p=a(a+1)..(a+n-1).Си++ ,циклом do while...

Вычислить рекуррентную формулу
Есть код С++ #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; ...

Создать рекуррентную формулу
Помогите, пожалуйста, написать рекуррентную формулу для задания по с++ Вот само задание: Вывести...

Необходимо найти рекуррентную формулу
Необходимо найти рекуррентную формулу! Помогите,пожалуйста!

Из условий задачи найти рекуррентную формулу
Из условий задачи найти рекуррентную формулу. Используя найденную формулу решить поставленную...

Вычислить значение x:=sqrt(a), используя рекуррентную формулу / C++
Доброго времени суток вам уважаемые форумчане... Мне нужна ваша скорая помощь в решении данной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.