Witam z programowaniem dopiero raczkuje więc mało wiem przegladając net natknołem się na 2 "proste" programy. Jeden liczy symbol Newtona drugi ciągi niemalejące.
Ale mam kłopoty ze zrozumieniem ich:/ Czy ktoś by mógł mi wytłumaczyć co się w nich dzieje?? a oto one:
Newton Kod:
#include <iostream.h>
#include <string.h>
#define MAXNK 100
#define MAXWYNIK 1000000000
/*oblicza ile jest podzbiorów k-elementowych w zbiorze n elementowym */
int newton(int n, int k);
int main()
int t,a,b;
cin >> t; /* wczytaj liczbê testów */
while(t)
cin >> a;
cin >> b;
cout << newton(a,b) << endl;
t--;
return 0;
int newton(int n, int k)
double w= 1;
if (k>n/2)
k=n-k;
else k=k;
for (int i=n; i>=n-k+1; i--)
w=w*i;
for (int i=1; i<=k; i++)
w=w/i;
if (w>MAXWYNIK)
w=-1;
return w;
else
return w;
a chodzi mi głównie o tą część Kod:
int newton(int n, int k)
double w= 1;
if (k>n/2)
k=n-k;
else k=k;
for (int i=n; i>=n-k+1; i--)
w=w*i;
for (int i=1; i<=k; i++)
w=w/i;
if (w>MAXWYNIK)
w=-1;
return w;
else
return w;
bo tu zupełnie jestem zakręcony. Może to jest z jakiegoś wzoru wzięte??
Drugi program to Kod:
oid sumy(int, int*, int);
int main()
int t,n,tab[T_SIZE];
cin >> t; /* wczytaj liczbê testów */
while(t)
cin >> n;
assert(n<=T_SIZE);
sumy(n, tab, 0);
cout << endl;
t--;
return 0;
void sumy ( int n, int * tab, int k)
if (n==0)
for (int i= 0; i<k; i++)
cout << tab << " ";
cout<<endl;
return;
k== 0 ;
for ( int i= 1; i<=n; i++)
tab[k]=i;
sumy (n-i, tab, k+1);
return ;
Z góry dziękuje za pomoc