Witam.
To mój pierwszy post na forum, mógłby ktoś pomóc mi w poprawie tego programu bo jestem Świeżakiem w programowaniu, kazali zrobić to się starałem, ale cienko wyszło :)
Generalnie zadanie brzmiało tak: Napisz program, który wyznacza silnię dla dowolnej liczby naturalnej n wpisywanej z klawiatury metodą wybraną przez użytkownika. Program powinien posiadać dwie funkcje do wyznaczania silni:
metodą iteracyjną ze wzoru definicyjnego: n! = 12...n,
metodą rekurencyjną zgodnie z definicją: n! = n(n-1)! przy czym 0! = 1.
Wyznacz doświadczalnie maksymalne wartości n, dla których można wyznaczyć silnię przy zastosowaniu w programie wszystkich poznanych typów zmiennych całkowitych i rzeczywistych.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int rekr() //int - 12, float - , double -
{
int wynik,n,i;
wynik=1;
printf("Podaj liczbe, ktorej silnie chcesz obliczyc \n");
scanf("%d",&n);
if (n<0)
printf("Wpisales liczbe ujemna, z ktorej nie mozna obliczyc n! \n");
else if (n>20)
printf("Wpisales za duza liczbe, najwieksza dopuszczalna to 20 \n");
else
{
i=n; //będziemy mnozyć aktualny wynik przez "i" i zmniejszać "i" o 1 w każdej iteracji
while(i>0)
wynik*=i--;
printf("%d! wynosi %d \n",n,wynik);
}
//system("PAUSE");
}
int inte()
{
int wynik=1,i,n;
printf("Podaj liczbe, ktorej silnie chcesz obliczyc \n");
scanf("%d",&n);
for (i=1; i<=n; i++)
{
wynik *= i;
}
printf("%d! wynosi %d \n",n,wynik);
}
int main()
{
int choice;
printf("1.Wyznacza silnie metoda rekurencyjna\n2.Wyznacza silnie metoda iteracyjna\n3.EXIT\n");
scanf("%d", &choice);
switch(choice)
{
case 1:rekr(); break;
case 2:inte(); break;
case 3:system("PAUSE"); return 0;
}
system("PAUSE");
return 0;
}
Bardzo dziękuje za wszelaką pomoc. Pozdrawiam, abee.