Как сделать треугольник Паскаля, используя C - PullRequest
0 голосов
/ 03 мая 2019

В качестве домашней работы я пытаюсь построить треугольник Паскаля с C. Я могу сделать треугольник с числами, но я не могу превратить этот код в треугольник Паскаля. Как я могу это сделать?

Я пытался напечатать треугольник Паскаля, используя силы 11, но это не сработало.

#include <stdio.h>
#include <conio.h>

int main( void )
{
    int rows,space, number, s , j, k,x;
    printf("Number of rows  : ");
    scanf("%d",&rows);
    space = rows - 1; 
    for (j = 0 ; j <= rows; j++ )
    {
        for( k = 0 ; k <= space ; k++)
        {
            printf(" ");
        }
        for ( s = 0 ; s <= number-2 ; s++)
        {
            printf("%2d",s+1);
        }
        number++;
        space--;
        printf("\n");
    }
    getch();

В результате я хотел бы правильно напечатать треугольник Паскаля.

Ответы [ 2 ]

0 голосов
/ 03 мая 2019
void print(int num);
int main(void)
{
    int rows, space, k,j,power_11;
    printf("Enter the number of rows: ");
    scanf("%d",&rows);
    space = rows;
    for (j = 0;j < rows;j++)//< and not <=
     {
        power_11 = pow(11, j);
         for (k = 0;k<space;k++)//< and not <=
            printf(" ");
        print(power_11);
        space--;
        printf("\n");
}
 _getch();
 return 0;
}

Этот код заменяет ваш цикл for на 's' для вызова пользовательской функции print, целью этой функции является печать 11-степеней с пробелами. Например, если вы просто напишите printf ("% d", power_11) вместо print (power_11), он напечатает: 1, 11, 121, 1331 ... в отдельных строках, что вам нужно сделать, это print 1, 1 1 , 1 2 1, 1 3 3 1 ... в отдельных строках, поэтому попробуйте написать для нее функцию печати. ​​

0 голосов
/ 03 мая 2019

Я могу сделать треугольник с числами, но не могу превратить этот код в треугольник Паскаля.

У вас есть этот цикл:

for ( s = 0 ; s <= number-2 ; s++)
{
    printf("%2d",s+1);
}

Этопечатает набор последовательных чисел.

Вам необходимо заменить напечатанное значение (s+1) на правильное значение для этой позиции в треугольнике Паскаля.

Существует множество способов вычислениянеобходимые значения:

  • Реверсивно, добавив два числа над ним
  • факториально n!/(r! (n-r)!)
  • последовательно line[k+1] = line[k] * (n-k) / (k+1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...