Ciclo while

lepre561
Ho dei problemi con questo programma in cui data una sequenza di numeri bisogna determinare quanti numeri sono positivi negativi,... In pratica funziona solamente che si ferma al primo numero e non completa tutta la sequenza


#include
#include

int main (void)
{

int numero;
int positivo,negativo,nullo;
int pari,dispari;
int N;
int totale;
positivo=0;
negativo=0;
nullo=0;
pari=0;
dispari=0;

printf("scrivere quanti numeri inserire");
scanf("%d",&totale);
N=0;
while(N {
printf("inserisci un numero",N+1);
scanf("%d",&numero);

if(numero>0)
positivo=positivo+1;
else
{
if(numero==0)
nullo=nullo+1;


else

negativo=negativo+1;
}
if(numero%2==0)
pari=pari+1;
else
dispari=dispari+1;

N=N+1;
printf("i numeri positivi sono : %d, i numeri negativi sono: %d, i numeri nulli sono: %d\n", positivo, negativo, nullo);
printf("i numeri pari sono: %d, i numeri dispari sono:%d\n",pari,dispari);
exit(0);

}
}


secondo me è un problema del contatore N possibile??? Non risco a capirne il perchè!!!

Risposte
vict85
C'è un [inline]exit(0)[/inline] all'interno del ciclo while. Quindi alla fine della prima ripetizione del ciclo la funzione esce. Personalmente penso che in 15 anni di programmazione in C, di non aver mai usato la funzione [inline]exit[/inline](direttamente). Ti suggerisco di rimuoverla: non ti serve.
Inoltre hai scritto i printf finali all'interno del ciclo, quindi devi spostare i due printf all'esterno del ciclo. In sostanza il tuo errore è che hai chiuso la parentesi nel posto sbagliato.

Detto questo
printf("inserisci un numero", N + 1);
ha poco senso, anche se è più un errore sintattico che un bug.

Una volta rimosso exit puoi anche rimuovere [inline]stdlib.h[/inline]. Te l'ho corretto sotto (ho anche aggiunto qualche parentesi, cambiato la formattazione e cambiato dell'altro codice per preferenze stilistiche).
#include <stdio.h>

int main(void)
{
    int N = 0;
    int totale = 0;

    /* contatori */
    int numero = 0;
    int positivo = 0;
    int negativo = 0;
    int nullo = 0;
    int pari = 0;
    int dispari = 0;

    fputs("Scrivere quanti numeri inserire:\t", stdout);
    scanf("%d", &totale);
    while (N < totale)
    {
        fputs("inserisci un numero:\t", stdout);
        scanf("%d", &numero);

        if (numero > 0)
        {
            positivo++;
        }
        else if (numero == 0)
        {
            nullo++;
        }
        else
        {
            negativo++;
        }

        if (numero % 2 == 0)
        {
            pari++;
        }
        else
        {
            dispari++;
        }

        N++;
    }
    printf("I numeri positivi sono:\t%d\n", positivo);
    printf("I numeri negativi sono:\t%d\n", negativo);
    printf("Gli zeri sono:\t%d\n", nullo);
    printf("I numeri pari sono:\t%d\n", pari );
    printf("I numeri dispari sono:\t%d\n", dispari );
}


Comunque gli errori sono stati scritti prima.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.