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