Calcolare facoltà di numeri pari

di il
2 risposte

Calcolare facoltà di numeri pari

Ciao a tutti!
sono nuovo su questo forum e fra l'altro ho anch'io iniziato a programmare in c; ho un corso all'università. allora, il prof ci ha dato un compito che non riesco a risolvere:
devo creare dei cicli annidati (for...) per calcolare le facoltà dei numeri pari da 2 a 24.
ora, un mio amico mi ha cercato di spiegare come fare, mandandomi una bozza del programma.
if-else mi dice solo se il numero 24 è un numero dispari o pari..quella parte l'ho scritta io.
compilando il tutto (e questa è la parte buffa) il programma però mi calcola le facoltà dei numeri dispari!!
ecco il programma:

#include <stdio.h>

int s = 24;
double result = 0.0;
int i = 1;
int j = 1;

int main ()
{
if (s % 2 != 0){
printf("s=24 è un numero dispari.\n");
}
else {
printf("s=24 è un numero pari.\n");
}

{
for(i = 1; i <= s; i+=2){
result = 1;

for(j = 1; j <= i; j++){
result *= j;
}
printf("%e \n", result);
}

}
return 0;
}

questo è il risultato:
s=24 è un numero pari.
1.000000e+00
6.000000e+00
1.200000e+02
5.040000e+03
3.628800e+05
3.991680e+07
6.227021e+09
1.307674e+12
3.556874e+14
1.216451e+17
5.109094e+19
2.585202e+22

...ma i risultati sono di numeri dispari-->2.585202e+22 è la facoltà di 23!

qualcuno mi potrebbe dare una mano, anche solo spiegandomi in poche righe che cosa succede nella parte for....?
per vostra informazione: il compito mi serve per mercoledì.
grazie mille,
ciao
Elganon

2 Risposte

  • Re: Calcolare facoltà di numeri pari

    Fai partire i e j da 0 non da 1
  • Re: Calcolare facoltà di numeri pari

    Grazie per la risposta!
    con far partire i e j da 0 intendi mettere i e j all'interno di for(...) a zero o mettere int i = 0 e int j = 0 ?
    se faccio int i = 0 e int j = 0 il risultato è zero. se invece cambio da 1 a 0 dentro "for" il risultato rimane sempre quello per numeri dispari...
Devi accedere o registrarti per scrivere nel forum
2 risposte