[C] problema con contatori di numeri pari e dispari

frab1
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:
#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 :?: :roll:

Risposte
apatriarca
Hai dimenticato di aprire e chiudere le parentesi graffe intorno alla parte del codice da eseguire nell'else.

frab1
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 :-(

apatriarca
Nella condizione hai usato un solo uguale invece di due.

frab1
grazie...faccio sempre sti errorini...che sono stupidate...
riassumendo:

-uso "=" per assegnare
-uso "==" per verificare l'uguaglianza ad un valore

giusto?

apatriarca
Esatto.

frab1
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);
}

frab1
trovato! Mi ero dimenticato di inizializzare i, che era il mio contatore! la printf è un potente strumento di debug! :-)

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