trójkąt Pascala

0

Witam serdecznie, uczę się programować w c++ i napotkałam na problem przy pisaniu trójkąta Pascala. Napisałam kod ktory rysuje trójkątną tablicę cyfr:

#include<iostream>
#include<iomanip>

using namespace std;

int main () {
	
	int wiersz = 5;
	
	int wciecie = 2*(wiersz-1);
	
	int i, j, s;
	
	
	for (i=0 ; i<wiersz ; i++) {
		
		
		for (j=0; j<wciecie; j++) {
			
			cout << " ";
		}
		
		
		for(s=0 ; s <= i ; s++) {
				
				cout << setw(3) << 1 << " " ;

		}
		
			cout << endl;
			wciecie = wciecie - 2;
		}
	
	return 0;
}

Napisałam też program, który oblicza symbol Newtona:

#include <iostream>

using namespace std;

int main () {

	int newton=1;

	int n, k;
	
	cout << "podaj n= " ;
	cin >> n;
	
	cout << "podaj k= " ;
	cin >> k;
	
	if (k==0 || k==n) {
		
		newton =1;
	}
	
	else {
	
		for (int i=1; i<=n ; i++){
		
			newton = newton*i; }
		
		for (int i=1; i<=k ; i++){
		
			newton = newton / i;
		}

		for (int i=1 ; i<=(n-k) ; i++) {
		
			newton = newton / i;
		}
	}

		cout << "symbol newtona wynosi " << newton << endl; 

		return 0;

	}

Mam problem, żeby wstawić fragment kodu obliczającego symbol Newtona do trójkątnej tablicy cyfr. Próbowałam wstawiać go w pętli for ze zmienną s, ale niestety bez skutku. Będę bardzo wdzięczna za pomoc.

0

A razem to jeszcze mniej:

#include <iostream>
using namespace std;
 
int main()
  {
   unsigned tb[100]={1};
   for(unsigned row=1;row<10;++row)
     {
      for(unsigned i=0;i<row;++i) cout<<tb[i]<<' ';
      cout<<endl;
      for(unsigned i=row-1;i;--i) tb[i]+=tb[i-1];
      tb[row]=1;
     }   
   return 0;
  }
0

Na czym miała by polegać dokładnie ta zmiana? Chcesz aby program najpierw narysował trójkąt i potem obliczył ci symbol? Jeśli chodzi o symbol, to kod może być bardziej przejrzysty:

unsigned silnia(unsigned n)
{
	unsigned wynik = 1;
	for(int i = 2; i <= n; i++) wynik *= i;
	return wynik;
}

// lub

unsigned silnia(unsigned n)
{
	return n ? silnia(n - 1) * n : 1;
}

inline unsigned symbol(unsigned n, unsigned k)
{
	return silnia(n) / (silnia(k) * silnia(n - k)); // nawias "for sure"
}
// lub bardziej rekursywnie :>
unsigned symbol(unsigned n, unsigned k)
{
	return !k || k == n ? 1 : symbol(n - 1, k - 1) + symbol(n - 1, k);
}

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