Mamy więc taki kod:
Kod: Zaznacz cały
#include <stdio.h>
int silnia(int);
int main()
{
int liczba, wynik;
printf("Podaj liczbe: "); scanf("%d", &liczba); fflush(stdin);
wynik = silnia(liczba);
printf("Silnia %d to %d
", liczba, wynik);
getchar();
return 0;
}
int silnia(int n)
{
int wynik;
if (n)
wynik = n * silnia(n-1);
else
wynik=1;
return wynik;
}
Który liczy silnię z liczby. W tym momencie działa on poprawnie, natomiast gdy np oznaczę flush(stdin) znakami komentarza //, program nie działa prawidłowo (tak jakby bardzo szybko się wykonał, okienko po wpisaniu liczby znika). Podobnie gdy zapiszę liczba=getchar();
Gdy napiszę:
Wynikiem zawsze jest 0, więc ów zapis także nie jest poprawny, problem nadal pozostał więc aktualny.
Używam Dev C++ 4.9.9.2
Pisząc o klawiaturze użyłem skrótu myślowego, o ile znaki pobieram przez getchara (wtedy też stosuję fflush(stdin) bo bez tego działa jak w podanym przykładzie) o tyle liczby scanfem.