Semplice problema sulle funzioni

di il
6 risposte

Semplice problema sulle funzioni

Salve a tutti, sono un principiante con il C, e stavo "smanettando" un po' sulle funzione per cercare di capire il loro utilizzo.
Ho scritto quindi un programmino che mi chiede di inserire un numero intero fino a quando non inserirò 0, quindi dovrebbe stamparmi a video la somma di tutti i numeri che ho inserito e chiudersi.

Ecco il sorgente:

#include<stdio.h>
 
int main(int n)
{
	printf("Inserisci N ");
	scanf("%d%*c",&n);
	if(n==0)
	{
		printf("%d",n);
		return 0;
	}
	n=n+main(n);
}



il problema è che il programma mi stampa sempre 0, ma la cosa curiosa è che, usando Dev-C++ ho impostato i dati per il debug, e quando finisco il programma, sotto appare scritto:

Process exited with return value 6.

Quel valore che scrive è quello giusto della somma dei numeri che ho inserito( avevo inserito 1,2,3).

Sapreste spiegarmi come fare in modo di farmi printare quel valore sullo schermo durante il programma e non dal debug?
E poi, se volessi usare quel valore che mi risulta in un'altra funzione, magari per calcolare la media dei numeri che ho inserito, posso? se sì, come?
grazie a tutti.

6 Risposte

  • Re: Semplice problema sulle funzioni

    Prova questo, è la prima soluzione che mi viene in mente con questa sorta di main ricorsivo...
    #include<stdio.h>
    int n=0;
    int main()
    {
    	int a;
       printf("Inserisci N ");
       scanf("%d%*c",&a);
       if(a==0)
       {
          printf("%d",n);
          getchar();
          return 0;
       }
       n+=a;
       return main();
    }
  • Re: Semplice problema sulle funzioni

    Ma la return che scopo ha?
  • Re: Semplice problema sulle funzioni

    In questo caso la puoi anche togliere scrivendo solo "main();" indicando che la funzione deve essere rieseguita... comunque c'erano altri modi più consoni senza ripetere in questo modo la main
  • Re: Semplice problema sulle funzioni

    Meglio farlo in un altro modo comunque.
    Non è che la ricorsione sul main sia proprio il massimo.
  • Re: Semplice problema sulle funzioni

    Ok grazie...
    Ancora non capisco perchè mi faceva così.
    AHAHAHAHAH
  • Re: Semplice problema sulle funzioni

    Non funzionava perché la variabile n deve essere dichiarata globale e quindi fuori dal main e posta a 0. dentro al main devi usare una variabile temporanea di appoggio (a) da aggiungere ad n prima di richiamare il main stesso
Devi accedere o registrarti per scrivere nel forum
6 risposte