PDA

Visualizza la versione completa : [C] Conteggio lettere con puntatori


AmedeoFalco
17-09-2017, 16:05
Salve ragazzi ho questo esrcizio che mi chiede di contare quante lettere sono state inserite in input dall'utente! Quello che mi succede č che i contatori delle varie lettere nella funzione Stampa non vengono aggiornati e mi ritornano sempre con il valore uguale a 0 cosė come li ho inizializzati nel main! Qualcuno sa dirmi dove sta lo sbaglio?



#include<iostream>
#include<stdio.h>
#include<cstdlib>




void Conta (char *grade, int *aCount, int *cCount, int *bCount){


printf("Inserisci dei voti a lettera\n");

while((*grade=getchar())!=EOF){

switch(*grade){
case 'A':
case 'a':
*aCount++;
break;
case'B':
case'b':
*bCount++;
break;
case 'C':
case'c':
*cCount++;
break;
case '\n':
case'\t':
case ' ':
break;
default:
printf("\nLettera non corretta\n");
printf("\nPrego inserire una lettera tipo A,B o C(o loro minuscole)\n");
break;
}
}
return;
}

void Stampa( int *aCount, int *bCount, int *cCount){

printf("\nIl numero delle lettere digitato e': ");
printf("\nA: %d",*aCount);
printf("\nB: %d",*bCount);
printf("\nC: %d",*cCount);
return ;
}


int main () {

char grade;
int aCount=0,bCount=0,cCount=0;
Conta(&grade,&aCount,&bCount,&cCount);
Stampa(&aCount,&bCount,&cCount);


return 0;
}

Scara95
17-09-2017, 16:25
Rivedi la precedenza degli operatori e capisci dove sbagli

AmedeoFalco
17-09-2017, 16:41
Quindi sarebbe (*aCcount)++, per esempio

MItaly
17-09-2017, 17:49
Aggiungo: prima di andare avanti a fare "case" per tutte le lettere interrogati se non č possibile che non ci sia un modo migliore... :stordita:

AmedeoFalco
18-09-2017, 10:56
Posto come sempre il codice funzionante e ringrazio gli accorsi!! ;)



#include<iostream>
#include<stdio.h>
#include<cstdlib>




void Conta (char *grade, int *aCount, int *cCount, int *bCount){




switch(*grade){
case 'A':
case 'a':
(*aCount)++;
break;
case'B':
case'b':
(*bCount)++;
break;
case 'C':
case'c':
(*cCount)++;
break;
case '\n':
case'\t':
case ' ':
break;
default:
printf("\nLettera non corretta\n");
printf("\nPrego inserire una lettera tipo A,B o C(o loro minuscole)\n");
break;
}

return;
}

void Stampa( int *aCount, int *bCount, int *cCount){

printf("\nA: %d",*aCount);
printf("\nB: %d",*bCount);
printf("\nC: %d",*cCount);
return ;
}


int main () {

char grade;
int aCount=0,bCount=0,cCount=0;

printf("Inserisci dei voti a lettera\n");

while((grade=getchar())!=EOF){

Conta(&grade,&aCount,&bCount,&cCount);

}

printf("\nIl numero delle lettere digitato e': ");
Stampa(&aCount,&bCount,&cCount);


return 0;
}

Loading