Napisz program, który korzystajac z petli while obliczy silnie wartosci wprowadzonej z klawiatury.
Zmodyfikuj powyzszy program tak, aby zadanie liczenia silni było realizowane wewnatrz osobnej funkcji
silnia i wynik zwracany do funkcji main z uzyciem instrukcji return.
O ile pierwsza część poszła względnie łatwo, rozumiałem co pisałem, to z drugą jest słabo Wynik to jakieś cuda na kiju+ nie umiem zastosować funkcji return.
#include
void silnia(int i, int n, int silnia)
{
while(i<=n)
{
silnia=silnia*i;
i=i+1;
}
while(n=0){
silnia=1;
}
}
void main()
{
silnia(1,1,5);
printf("%d\n",silnia);
}
Wynik to nie cuda na kiju, tylko adres twojej funkcji.
Funkcja silnia jest u ciebie typu void, czyli nic nie zwraca. Możesz zmienić void silnia na np. int silnia i na końcu funkcji zwracać go (wynik): return jakiśwynik;.
Nie potrzebnie dodajesz 2 argumenty. Jeśli coś zmieniasz systematycznie co krok, lepiej wychodzi robić to pętlą for. A samą silnie najlepiej zrobić rekurencją
int silnia(int silnia)
{
int i=1,wynik=1;
while(i<=silnia)
{
wynik=wynik*i;
i=i+1;
}
return wynik;
}
int silnia(int silnia)
{
int wynik=1;
for(int i=1;i<=silnia;wynik=wynik*i,i++);
return wynik;
}
int silnia(int silnia)
{
return silnia>1?(silnia*rek(silnia-1)):1;
}
A w printf możesz bez problemu sobie wywołać. Weź też pod uwagę, że nie przypisujesz zwróconej wartości do niczego. Więc robisz tak:
printf("%d\n",silnia(5));
Lub tak:
int wartosc_silnia=silnia(5);//nie możesz mieć zmiennej globalnej o tej samej nazwie co funkcja
printf("%d\n",wartosc_silnia);