Mam wielka prosbe moglibyscie sprawdzic ten program, czy jest dobrze napisany i ewentualnie poprawic bledy.z gory dziekuje. W konsoli Linuxa wywala mi bledy:(
#include
#include
int function silnia(int n){ //Funkcja liczaca silnie. Mnozymy przez
//siebie kolejne liczby naturalne, az do n. Uzywamy for'a.
int i=1;
int sil=1;
for(i=1;i<=n;i++)
sil*=i;
return sil;
}
float function symbol_newtona(int n,k){ //tu policzymy symbol newtona
//mozna by to samo zrobic w main'ie ale tak jest ladniej
float wynik=silnia(n)/(silnia(k)*silnia(n-k));
return wynik;
}
int main(){
clrscr(); //czyscimy ekran
printf("Program policzy symbol Newtona (m po n).\nPodaj m: ");
int n,m;
scanf("%d",&m);
printf("Podaj n: ");
scanf("%d",&n);
printf("Symbol Newtona %d po %d wynosi %f.",m,n,symbol_newtona(m,n));
return 0;
}
Co to za biblioteka conio? Widzę ją bardzo często na forum, ale raczej że to nic fajnego. Do kosza.
Podejrzewam, że chodziło ci o C - to nie Pascal, nie ma słowa kluczowego function.
clrscr() to pewnie z tego conio.h, chociaż nie ma żadnej przestrzeni nazw… nie wiem. Trzeba by było poszukać jakiegoś przenośnego sposobu czyszczenia ekranu.
int → unsigned long. Większe precyzja, chociaż i tak niezbyt wystarczająca do zagadnienia.
A float niepotrzebnie, to nie Pascal, tutaj można wynik dzielenia przypisać do całkowitej.Również daj unsigned long.
No i formatowanie, trochę spacji gdzieniegdzie na pewno uczyniłoby kod czytelniejszym.
Coś takiego działa… ale w raczej ograniczonym zakresie, do dużych liczb się nie nadaje.
#include
unsigned long silnia(unsigned int n) {
int i = 1, sil = 1;
for(i=1; i <= n; i++) sil*=i;
return sil;
}
unsigned long symbol_newtona(unsigned int n, unsigned int k){
return silnia(n) / (silnia(k) * silnia(n-k));
}
int main(){
printf("Program policzy symbol Newtona (m po n).\nPodaj m: ");
int n, m;
scanf("%d",&m);
printf("Podaj n: ");
scanf("%d",&n);
printf("Symbol Newtona %d po %d wynosi %d.\n", m, n, symbol_newtona(m,n));
return 0;
}