Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C] Conteggio lettere con puntatori

    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?

    codice:
    #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;
    }
    Ultima modifica di AmedeoFalco; 17-09-2017 a 16:23

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Rivedi la precedenza degli operatori e capisci dove sbagli
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Quindi sarebbe (*aCcount)++, per esempio

  4. #4
    Aggiungo: prima di andare avanti a fare "case" per tutte le lettere interrogati se non è possibile che non ci sia un modo migliore...
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5

    Codice funzionante

    Posto come sempre il codice funzionante e ringrazio gli accorsi!!

    codice:
    #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;
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.