Problema con programma "Conta e somma i multipli di 2"

di il
11 risposte

Problema con programma "Conta e somma i multipli di 2"

Buonasera, sto facendo un programma che chieda di inserire un numero intero positivo, che verifichi se tale numero è multiplo di 2 e che, in caso lo fosse, lo conti e lo sommi. Deve restituire in output il numero di numeri considerati e la loro somma. Inoltre deve chiedere il reinserimento del numero in caso fosse minore di zero e deve chiedere se si vogliono inserire altri numeri.

Ecco il listato C:

#include <stdio.h>
#include <stdlib.h>

int main()
{
//dati di input
int Num;
//dati di output e variabili di calcolo
int Contnum = 0, Somma = 0;
char Risp = "0"; //variabile di calcolo

do
{

do
{
printf("Inserisci un numero\n");
scanf("%d", &Num);
}
while(Num < 0);

if(Num % 2 != 0){
Contnum++;
Somma = Somma + Num;
printf("Inserisci N per continuare, S per terminare\n");
scanf("%c", &Risp);
}
}
while((Risp = "N") || (Risp = "n"));

printf("I numeri contati sono %d, mentre la loro somma e\' %d.", Contnum, Somma);

return 0;
}

Mi segna un warning alla riga 11 e 2 alla riga 30.
Non capisco cosa ho sbagliato!

Grazie in anticipo a chi mi aiuterà!!

11 Risposte

  • Re: Problema con programma "Conta e somma i multipli di 2"

    Non vorrei sbagliare,
    char Risp = "0" ..while((Risp = "N") || (Risp = "n"));

    usi i doppi apici, mentre per i singoli caratteri si dovrebbero usare i singoli apici

    char Risp = '0' ..while((Risp = 'N') || (Risp = 'n'));
  • Re: Problema con programma "Conta e somma i multipli di 2"

    OK grazie!! Adesso non mi segna più warnings, però non mi fa inserire la N o la S per inserire altri numeri o terminare. A cosa è dovuto??
  • Re: Problema con programma "Conta e somma i multipli di 2"

    Aggiungi una pulitura del buffer all'interno dell'if prima della scanf con il comando fflush(stdin).
  • Re: Problema con programma "Conta e somma i multipli di 2"

    Controlla le parentesi { } , senza identazione non si capisce bene se ne hai messe di troppe
  • Re: Problema con programma "Conta e somma i multipli di 2"

    Ok ora mi fa inserire la N o la S, però quando premo invio, non mi compare l'ultima frase e mi continua a chiedere un numero da inserire.
  • Re: Problema con programma "Conta e somma i multipli di 2"

    Cosa hai messo dentro il while?? attento !!

    Controlla pure l'if
  • Re: Problema con programma "Conta e somma i multipli di 2"

    Comincia col fare ordine,tipo così:
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
       unsigned  int n = 0;
        printf("Inserire un numero: ");
       (void)  scanf(" %u",&n);//manca un controllo
        if( !(n & 1))
        {
             do
             {
             }
             while(.......);
        }
       (void) puts("End of programma");
         return EXIT_SUCCESS;
    }
    
    Poi ripassa il sistema di numerazione binario che % non si può vedere, prendi un programma per disegnare diagrammi di flusso come Dia e ragiona sull'algoritmo.
  • Re: Problema con programma "Conta e somma i multipli di 2"

    Ok grazie
  • Re: Problema con programma "Conta e somma i multipli di 2"

    L'ho rifatto in questo modo:

    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    //dati di input
    int Num;
    //dati di output e variabili di calcolo
    int Contnum = 0, Somma = 0;
    char Risp = '0'; //variabile di calcolo

    do
    {
    printf("Inserisci un numero\n");
    scanf("%d", &Num);
    }
    while(Num < 0);

    if(Num % 2 == 0){
    Contnum++;
    Somma = Somma + Num;
    }
    printf("Inserisci N per continuare, S per terminare\n");
    fflush(stdin);
    scanf("%c", &Risp);

    if((Risp = 'S')||(Risp = 's'))
    printf("I numeri contati sono %d, mentre la loro somma e\' %d.", Contnum, Somma);

    return 0;
    }



    Non so cosa si possa mettere nell' else dell'ultimo if. Dovrei mettere un' istruzione che mi permetta di rifare il tutto, ma non so cosa dirlo.
  • Re: Problema con programma "Conta e somma i multipli di 2"

    Attento, ti sei scordato una parentesi nell'if.

    e ripeto, controlla quello che hai scritto nel while (che ora è un if)... guarda bene la condizione.. è assegnazione o confronto?
  • Re: Problema con programma "Conta e somma i multipli di 2"

    Rispiega bene il testo dell'esercizio per favore.Non capisco se devi uscire se Num è dispari ese Num è pari per quanto devi continuare a leggere numeri.

    Un consiglio: i confronti è meglio farli al "contrario". Meglio fare 'N' == c perché se scorsi un uguale il compilatore ti da errore dato che non puoi assegnare una variabile a una costante letterale.
Devi accedere o registrarti per scrivere nel forum
11 risposte