Come faccio a contare le presenze di determinati caratteri in una stringa ?

di il
7 risposte

Come faccio a contare le presenze di determinati caratteri in una stringa ?

Salve a tutti , sto cercando di risolvere un problema che mi è sopraggiunto nel risolvere la seguente traccia :" dire quali e quante volte compaiono in una stringa di caratteri lunga al massimo 250 caratteri, i seguenti segni di punteggiatura: virgola, punto, punto e virgola, due punti, punto interrogativo, punto esclamativo ". Ora per contare i segni di punteggiatura ho utilizzato uno switch che incrementa una variabile non appena trova nella stringa il segno di punteggiatura corrispondente. Ma non appena eseguo il programma e inserisco un testo (fatto di parole e segni di punteggiatura), il programma incrementa anche le variabili dei segni di punteggiatura che non sono presenti nella stringa. Come faccio a contare esattamente quali e quanti segni di punteggiatura ci sono nella stringa? cosa ho sbagliato ?
Ecco il codice:

#include<stdio.h>
#include<string.h>
#define card 250
                   
             void legge(char campo[], int MAX){
             	char c;
             	int i=0;
             	while((c=getchar())!='\n'&&i<MAX ){
             		campo[i]=c;
                    i++;             	
				 }
              campo[i]='\0';
			 }
main()
{   
    int i,  c_virgola, c_punto, c_puntoevirgola, c_duepunti, c_puntoiterrogativo , c_puntoesclamativo;
    char Vet[card];
 
    
      printf("INSERISCI STRINGA\n");
	   legge(Vet,card); 
	   
     	
 
 
 c_virgola=0; c_punto=0; c_puntoevirgola=0; c_duepunti=0; c_puntoiterrogativo=0; c_puntoesclamativo=0;
 
 for(i=0;i<card;i++){
 
 switch(Vet[i]){
     
	case ',' : c_virgola++;break;
	case '.' : c_punto++;break; 
	case ';' : c_puntoevirgola++;break;
	case ':' : c_duepunti++;break;
	case '?' : c_puntoiterrogativo++;break;
	case '!' : c_puntoesclamativo++;break;
	}
 
}    

printf("la stringa contiene :\n %d','\n %d'.'\n %d';'\n %d':'\n %d'?'\n %d'!' ", c_virgola, c_punto, c_puntoevirgola, c_duepunti, c_puntoiterrogativo, c_puntoesclamativo);

   
}

7 Risposte

Devi accedere o registrarti per scrivere nel forum
7 risposte