[C] Esercizio: conteggio dei valori pari

di Anonimizzato22694 il
11 risposte
Ciao a tutti, da poco ho iniziato a programmare in linguaggio C e sto avendo un problema con un esercizio.
Scrivere un programma in linguaggio C che, data una serie di numeri interi positivi inseriti da tastiera la cui terminazione è indicata dall'inserimento del valore -1, calcoli e visualizzi il numero di valori pari inseriti dall'utente e il numero totale dei valori inseriti.
Vi lascio di seguito ciò che sono riuscito a fare, non capisco cosa ho sbagliato. Vi ringrazio in anticipo.

#include<stdio.h>
int main(void) {
	int n = 0, sommap, sommat;
	sommap = 0, sommat = 1;
	printf("Data una serie di numeri interi positivi; calcolare la somma dei valori pari e quella totale.\n");
	for (; n != -1;) {
		if (n % 2 == 0); {
			sommap += n;
		}
		printf("Inserire un numero intero(-1 per terminare): ");
		scanf("%d", &n);
		sommat += n;
	}
	printf("\nRisultato pari:%d", sommap);
	printf("\nRisultato totale:%d\n", sommat);
}

11 Risposte

  • Spiega cosa non va

    E comunque controlla la if ... non è scritta correttamente
  • Il problema è che quando eseguo il programma e inserisco 5 numeri, 3 dei quali pari, in out mi dà lo stesso risultato per tutte e due le somme.
  • Perchè sommat parte da 1 e non da 0 ?
    Perchè sommap viene aggiornato prima di leggere n, mentre sommat viene aggiornato dopo aver letto n?
  • Ho aggiornato il codice e ho messo la scanf prima dell'if. Ho inserito sommap prima di sommat e nel blocco dell'if per fare in modo che il suo valore venga incrementato solo se il numero è pari e credo di aver scritto bene la condizione dell'if(n%2==00 vuol dire che il resto della divisione del numero per 2 è 0 quindi il numero è pari), mentre il sommat l'ho messo fuori dal blocco dell'if per incrementare il suo valore con qualunque numero inserito dall'utente ma ho comunque lo stesso problema. Alla fine i due risultati mi vengono uguali e non riesco a capire il motivo. Vi prego aiutatemi in qualche modo perchè ci sto uscendo pazzo da 2 giorni.
  • Posta il nuovo codice
  • /*Scrivere un programma in linguaggio C che, data una serie di numeri interi positivi inseriti da tastiera la cui terminazione è indicata dall'inserimento del valore -1, calcoli e visualizzi il numero di valori pari inseriti dall'utente e il nuemero totale dei valori inseriti.*/
    #include<stdio.h>
    int main(void) {
    	int n = 0, sommap, sommat;
    	sommap = 0, sommat = 0;
    	printf("Data una serie di numeri interi positivi; calcolare la somma dei valori pari e quella totale.\n");
    	for (; n != -1;) {
    		printf("Inserire un numero intero(-1 per terminare): ");
    		scanf("%d", &n);
    		if (n % 2 == 0); {
    			sommap += n;
    		}
    		sommat += n;
    	}
    	printf("\nRisultato pari:%d", sommap);
    	printf("\nRisultato totale:%d\n", sommat);
  • Ad ogni ciclo inserisci una printf() così:
       for (; n != -1;) {
          printf("Inserire un numero intero(-1 per terminare): ");
          scanf("%d", &n);
          if (n % 2 == 0); {
             sommap += n;
          }
          sommat += n;
          printf("valore inserito %d sommap parziale %d sommat parziale %d\n", n, sommap, sommat ); /* ******** */
       }
    
    esegui e scoprirai che...
  • Ti avevo detto di controllare la if ...

    Secondo te il ; finale della if è corretto?
  • Finalmente ci sono riuscito!!! Aveva ragione oregon, avevo scritto giusto il codice ma non serviva il ; dopo l'if. Comunque candaluar ho provato anche come mi hai detto tu ma non risultava lo stesso. Grazie tantissimo ad entrambi.
  • Comunque candaluar ho provato anche come mi hai detto tu ma non risultava lo stesso
    Il mio suggerimento non era per darti la soluzione ma bensì per darti un modo per trovarla da solo; mi sorprende che tu non l'abbia capito .
  • @candaluar ... a me non sorprende ...
Devi accedere o registrarti per scrivere nel forum
11 risposte