[C] blocco dell'IDE durante l'esecuzione

di il
6 risposte

[C] blocco dell'IDE durante l'esecuzione

Salve, sto imparando a programmare in C da autodidatta. Sto cercando di scrivere un codice che mi calcoli il fattoriale di un numero ma c'è un problema. Ogni il codice si compila senza problemi, sia con netbeans che da terminale con gcc. Durante l'esecuzione però quando il codice arriva allo scanf il programma si blocca, e non riesco a capire come mai.
Vi sarei molto grato se qualcuno mi aiutasse. Grazie.
#include <stdio.h>
#include <stdlib.h>

int num;
int fatt;

int main(int argc, char** argv) {
    printf("Calcolo del fattoriale di un numero\n");
    printf("Inserire un numero: ");
    scanf("%d", &num);
    int n = num;
    while(num > 0) {
        fatt = n * (n - 1);       
    }
    printf("%d", fatt);
    return (EXIT_SUCCESS);
}

6 Risposte

  • Re: [C] blocco dell'IDE durante l'esecuzione

    Ma come hai scritto il ciclo?

    Non ha senso, semmai
    
    	fatt = 1;
    	while (n>1) {
    		fatt = fatt * n;
    		n--;
    	}
    
  • Re: [C] blocco dell'IDE durante l'esecuzione

    Si blocca perché la variabile num evidentemente è maggiore di zero e quindi la condizione nel while è sempre vera per cui non esci mai dal ciclo.
  • Re: [C] blocco dell'IDE durante l'esecuzione

    Scusate ho sbagliato proprio a scrivere il codice... il mio problema era questo in realtà, non riesco a capire perché scrivendo così:
    
    while(n > 1) {
    	fatt = fatt * (n - 1);
    }
    Il codice si blocca.

    BTW comunque ho riscritto il codice ed adesso funziona. Ho anche fatto in modo che faccia il fattoriale di numeri negativi. Pensate sia tutto ok? Grazie 1K per l'aiuto.
    #include <stdio.h>
    #include <stdlib.h>
    
    int num;
    int fatt = 1;
    
    int main(int argc, char** argv) {
        printf("Calcolo del fattoriale di un numero\n");
        printf("Inserire un numero intero positivo o negatico: ");
        scanf("%d", &num);
        if(num > 0){
            int n = num;
            while(n > 1) {
                fatt = fatt * n;
                n--;
            }   
        }
        if(num < 0) {
            int n = num;
            n = n * -1;
            while(n > 1) {
                fatt = fatt * n;
                n--;
            }
            fatt = fatt * -1;
        }
    
        printf("Il fattoriale del numero %d è %d", num, fatt);
        return (EXIT_SUCCESS);
    }
    
    
  • Re: [C] blocco dell'IDE durante l'esecuzione

    Ma hai letto quello che ti ho scritto?
  • Re: [C] blocco dell'IDE durante l'esecuzione

    oregon ha scritto:


    Ma hai letto quello che ti ho scritto?
    Si, ma non ho capito perché non funzionava.
  • Re: [C] blocco dell'IDE durante l'esecuzione

    Controlla tutte le linee di codice che ti ho proposto, mi pare che siano diverse da quelle del tuo ciclo.
Devi accedere o registrarti per scrivere nel forum
6 risposte