Sprawdzenie kodu programu


(Siwy17 87) #1

Witam

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;

}

(Sawyer47) #2

Po pierwsze wstaw w znacznik code na forum.

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;

}

Co do czyszczenia ekranu: tu