Programma per contare frequenze parole in C

di il
1 risposte

Programma per contare frequenze parole in C

Ciao a tutti,
mi sto esercitando su funzioni e array in C, e ho un esercizio da svolgere che mi sta creando particolari problemi:
devo inserire una serie di parole in input, con certi criteri di limitazione (max 100 parole, max 100 caratteri per parola), e fornire in output le parole inserite (non ripetute) e la frequenza con di inserimento.
Esempio input TORINO MILANO TORINO ROMA GENOVA MILANO;
Esempio output:
TORINO 2
MILANO 2
ROMA 1
GENOVA 1
Ho scritto questo codice, la parte di input è gestita (credo) bene, ho dei dubbi sui confronti, e non riesco a produrre l'output richiesto.
#include <stdio.h>
#include <string.h>
#define MAXCITY 100
#define MAXCHAR 20


int main (int argc, const char * argv[])
{   
    
    
    typedef enum {TRUE, FALSE} bool;
    char parole[MAXCITY][MAXCHAR];	//array di stringhe (stringa=array di char)
                
    char end[5]="fine"; //parola per terminare ciclo
    bool esci=FALSE;    //inizializzo la variabile booleana a false
    int kparole;        //contatore numero parole
    int i,j;            //contatori di servizio   
    char citta[MAXCITY][MAXCHAR];
    
    printf("\nInserire città\n");
//input si interrompe quando viene raggiunto il numero massimo di parole=100 oppure viene         
//inserita la parola fine 
    while ((kparole<MAXCITY)||(esci==FALSE)){       

        gets(parole[kparole]);	
        
        if (strcmp(parole[kparole],end)==0){       //se la parola inserita è fine esce dal ciclo
            esci=TRUE;
            break;
        }
        else if (strlen(parole[kparole])>MAXCHAR){        
//se la parola è più lunga di maxchar=20 non la conteggia           
            printf("\nparola troppo lunga");
        }
        else{
            kparole++;
        }
    }
    
    for (i=0;i<kparole;i++){                                //stampo a video parole 
         printf("\n%s",parole[i]);
    }
    
    for (i=0;i<=kparole;i++){
        
           for (j=i+1;j<kparole;j++){
                if (strcmp(parole[i],parole[j])!=0){            //confronto stringhe
                strcpy(citta[i], parole[i]);
            
            
            }
        }
    }

    
    
    printf("\n");
    return 0;
}
Grazie.

1 Risposte

  • Re: Programma per contare frequenze parole in C

    Sarebbe meglio usare un array di struct con all interno la city e il count occorrenze. se non sai usare le struct un array di interi in parallelo ad un array di char
Devi accedere o registrarti per scrivere nel forum
1 risposte