Ciao a tutti, ho qualche problema con un programma che riesco a compilare, ma non funziona come richiesto. Il testo dell'esercizio recita:
Dato un numero N > 0 fornito da linea di comando, si calcoli il più piccolo numero M tale che M! > N. Si definisca nel programma una funzione che calcoli il fattoriale di un numero e la funzione che svolge la verifica richiesta utilizzando la funzione fattoriale.
Il mio codice è questo:
#include <stdio.h>
#include <stdlib.h>
int control(int);
int fact(int);
int main(int argc, char *argv[]) {
int N = atoi(argv[1]);
if(N <= 0) {
puts("Inserire un valore N > 0");
return 1;
}
int M = control(N);
printf("Il piu' piccolo numero M tale che M! > %i e' %i\n", N, M);
return 0;
}
int control(int N) {
int Ma;
for(Ma = 1; fact(Ma) <= N; Ma++);
Ma++;
return Ma;
}
int fact(int Ma) {
int a;
for(a = 1; Ma > 1; Ma--)
a = Ma * a;
return a;
}
Credo che il problema non sia nelle singole funzioni, ma come queste interagiscono tra loro. Però non riesco a farlo funzionare: l'output è sempre 5 e da un certo valore di ingresso in poi è 6. Qualcuno ha idea di come aiutarmi per favore?