[C] problema con contatori di numeri pari e dispari
Buongiorno,
continua il mio studio da autodidatta del C...
sto provando a risolvere il seguente quesito:
""Progettare un algoritmo che effettui le seguenti operazioni:
• continui a leggere da tastiera una serie di terne di valori interi A , B e C finchè non vengono
inseriti dei valori tali per cui A + B < C
• conteggi il numero di volte in cui la differenza tra A e B è pari, dispari, e quando è nulla
• prima di terminare, visualizzi il valore dei valori conteggiati ""
ho provato a risolverlo con un DO WHILE e degli if, ecco cosa ho scritto:
Il problema sta nel fatto che questo codice non conta correttamente le DIFFERENZE NULLE, e rileva tutte le altre come dispari...come se eseguisse solo gli ELSE dei vari IF_ELSE..come potrei provare a sistemarlo
continua il mio studio da autodidatta del C...
sto provando a risolvere il seguente quesito:
""Progettare un algoritmo che effettui le seguenti operazioni:
• continui a leggere da tastiera una serie di terne di valori interi A , B e C finchè non vengono
inseriti dei valori tali per cui A + B < C
• conteggi il numero di volte in cui la differenza tra A e B è pari, dispari, e quando è nulla
• prima di terminare, visualizzi il valore dei valori conteggiati ""
ho provato a risolverlo con un DO WHILE e degli if, ecco cosa ho scritto:
#include <stdio.h> #include <stdlib.h> int main(void) { int a=0,b=0,c=0,diff,pari_disp,count_pari=0,count_dispari=0,count_null=0; do { printf("Inserire una terna di interi:\n"); scanf("%d %d %d",&a,&b,&c); diff=a-b; if (diff=0) count_null++; else count_null=0; pari_disp=diff/2; if(pari_disp=0){ count_pari++; } else { count_dispari++; } } while (a+b>c); printf("Numero di differenze pari:%d\n",count_pari); printf("Numero di differenze DISpari:%d\n",count_dispari); printf("Numero di differenze nulle:%d\n",count_null); }
Il problema sta nel fatto che questo codice non conta correttamente le DIFFERENZE NULLE, e rileva tutte le altre come dispari...come se eseguisse solo gli ELSE dei vari IF_ELSE..come potrei provare a sistemarlo


Risposte
Hai dimenticato di aprire e chiudere le parentesi graffe intorno alla parte del codice da eseguire nell'else.
si quello l'avevo corretto subito, ma i problemi restavano comunque...le differenze nulle non me le rileva, le altre me le rileva tutte dispari

Nella condizione hai usato un solo uguale invece di due.
grazie...faccio sempre sti errorini...che sono stupidate...
riassumendo:
-uso "=" per assegnare
-uso "==" per verificare l'uguaglianza ad un valore
giusto?
riassumendo:
-uso "=" per assegnare
-uso "==" per verificare l'uguaglianza ad un valore
giusto?
Esatto.
ho provato a risolvere, funziona la lettura, ma ho problemi sulla media...ho fatto il casting ma non va..
#include <stdio.h> #include <stdlib.h> int main(void) { int A,B,n=0,i; int totale=0; int sum=0; float media; printf("Inserire gli estremi dell'intervallo [A,B]:\n"); scanf("%d %d",&A,&B); printf("Estremo basso:%d\n",A); printf("Estremo alto:%d\n",B); do{ printf("Inserire intero:\n"); scanf("%d",&n); sum=n+sum; i++; } while (n<B && n>A); totale=(i-1); sum=sum-n; media=(float)sum/totale; printf("La media vale:%f\n",media); }
trovato! Mi ero dimenticato di inizializzare i, che era il mio contatore! la printf è un potente strumento di debug!
