Media lunghezza parole in file

di il
4 risposte

Media lunghezza parole in file

Buongiorno,

non riesco né a creare e né a trovare una funzione che possa calcolare la media della lunghezza delle parole all'interno di un file.

Grazie in anticipo.

4 Risposte

  • Re: Media lunghezza parole in file

    Aiutino. Leggi ogni stringa e dopo aver letto la sua lunghezza scartala. Tieni il conto del numero delle stringhe lette e la somma delle lunghezze totali. Media sará uguale alla somma diviso il numero delle stringhe lette.
    Funzioni utili: fscanf, strlen se lavori in C
    Operatore >> su std::string e std::string::length() se lavori in C++
  • Re: Media lunghezza parole in file

    Ciao Skynet, non sarebbe più conveniente un approccio di questo tipo (questo considera come parole qualsiasi sequenza di caratteri diversa da spazi,newline e tab)?
    Una volta ottenute le occorrenze delle parole lette, salvate in array_length, ed il numero di carattere come indice dell'array penso sia banale concludere l'esercizio no?
    
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX_LEN 1000
    
    typedef enum {FALSE,TRUE} bool_t;
    
    int main()
    {
    int c,i,n_char,n_words;
    int array_length[MAX_LEN + 1];
    bool_t in_word;
    FILE *file;
    file=fopen("prova.txt","r");
    if(file==NULL)
        {
        fprintf(stderr,"Impossibile aprire file\n");
        exit(1);
        }
    for(i = 0; i <= MAX_LEN; ++i)
        array_length[i] = 0;
    n_char=0;
    in_word=TRUE;
    while((c = fgetc(file)) != EOF)
        {
        n_char++;
        if(c == ' ' || c == '\t' || c == '\n')
            {
            in_word = FALSE;
            n_char--;
            }
        if(in_word==FALSE)
            {
            if(n_char != 0 && n_char <= MAX_LEN)
                array_length[n_char]++;
            in_word = TRUE;
            n_char = 0;
            }
        }
    
    for(i=1;i<MAX_LEN;i++)
        if(array_length[i]!=0)
            printf("%d Parole da %d caratteri\n",array_length[i],i);
    return 0;
    }
  • Re: Media lunghezza parole in file

    Io dicevo qualsoca di questo genere
    
    while(fscanf(fp,"%s",str))
    {
           length += strlen(str);
           count++;
    }
    
    media = length / count;
    
    fine.
    Come vedi è più corto.
  • Re: Media lunghezza parole in file

    In effetti su un file di 69 MB ( numero volutamente esagerato) differiscono di neanche 0,100 s quindi visto il risparmio di codice va decisamente meglio questa versione
Devi accedere o registrarti per scrivere nel forum
4 risposte