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

    [C] Calcolo lunghezza media delle parole in una frase

    Ciao a tutti!
    Ho un problema a fare un programma che calcoli la lunghezza media delle parole in una frase.
    Io l'ho fatto in un certo modo, ma stampa il numero totale di lettere e non la media.
    Qual'è l'errore?

    codice:
    #include <stdio.h>
    int main(void)
    {
    float avg;
    int n_letters = 0, n_words = 0;
    char ch;
    
    printf("Inserisci una frase: ");
    
    while ( (ch = getchar() ) != '\n')  {
             if ( ch != ' ')
             n_letters++;
             else if ( ch == ' ')
             n_words++;
            }
    
    avg = (float)(n_letters)/(float)(n_words);
    
    printf("Lunghezza media: %.1f", avg);
    
    return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quel programma non tiene conto dell'ultima parola. Ad esempio in questa frase:
    Ciao_come_va?
    2 parole

    11 caratteri

    11/2=5.5
    Inoltre nel caso due parole siano separate da più spazi vengono contate più parole.

    Potresti riscriverlo usando fgets e strtok (in modo da eliminare anche i segni di punteggiatura e gli spazi extra)
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Se è un esercizietto non penso possa usare la strtok.

    Comunque basta aggiungere un controllo per gli spazi consecutivi (e aspettare a fare l'incremento...)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    @khjaretta: i titoli delle discussioni sono importanti e servono a dare un'idea di massima del contenuto della discussione... le ultime due discussioni che hai aperto le hai intitolate entrambe "Esercizio di programmazione in C", che non dice nulla del tipo di problema trattato. Il titolo va costruito in questo modo:

    Tra parentesi quadre il linguaggio utilizzato.
    Poi una descrizione sintetica del problema trattato.


    Sistemo io le tue ultime due discussioni.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.