Trójkąt Pascala

0

Witam, mam do zrobienia zadanie:
Napisać program, który obliczy współczynniki dwumianu Newtona
n - go stopnia (2 <= n <= 12) i wyswietli je na ekranie
w postaci tzw "trójkąta Pascala".
Uwaga ! Zdefiniować najpierw funkcję, która oblicza wartość k!
(k silnia) i funkcję, która obliczy wartość m po k (m!/(k! * (m - k)!),
a następnie wykorzystać te funkcje do obliczenia współczynników
dwumianu Newtona.
(5 pkt)

Program który napisałem wyświetla trójkąt Pascala z poprawnie obliczonymi współczynnikami, ale z prawej strony jest on w cholere krzywy, im więcej cyfr tym większa rozległość. Poniżej wstawiłem kod programu. Moglibyście doradzić co jest źle, albo co należy zrobić by mniej więcej to równo wyglądało?

 
#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;

long silnia(int n)
    {
      int silnia=1;
       for(int i=2;i<=n;i++)
       silnia=silnia*i;
       return silnia;
    }
    
    
    int kombinacja(int m, int k)
       {
           int komb;
           
           komb=silnia(m)/(silnia(k)*silnia(m-k));
           return komb;
       }
    
    
 

int main(int argc, char *argv[])
{
    int n;
    cout<<"Podaj n: ";
    cin>>n;
    if(n>=2 && n<=12)   // wyswietlanie trojkata pascala
     
           
     for(int i=0,x=10;i<=n;i++)
     {
             
                cout<<setw(x);
                cout<<endl;
      for(int k=0;k<=n-i+1;k++)
           {
             cout<<"  ";
             
             }
           
             for(int j=0;j<=i;j++)  
             cout<<" "<<kombinacja(i,j)<<"  ";
             
             cout<<endl;
             
             
             
                 
                 
             }
                         
 
    else
        cout<<"Program strzelil focha"<<endl;
    cout<<endl;
   
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
0

Buduj stringi w pamięci (liczba liczba ...), niech dl oznacza długość ostatniego (najdłuższego) stringa. Wypisuj w kolejnych wierszach zapamiętane stringi poprzedzając każdy pewną ilością spacji (dl-długość stringa)/2.

0

A mógłbyś ubrać to w kod? Bo ja średnio to widzę.

0

a ja to widzą jakoś tak:

              t
             [30
            ]={1}
           ;main(n
          ,k,a, b){
         puts("1 ");
        for(;n<20;n++
       ){for(b=k=0;k<=
      n;){a=t[k];t[k]=a
     +b;b=a;printf("%d "
    ,t[k++]);}puts("");}}

1 użytkowników online, w tym zalogowanych: 0, gości: 1