Aplicació: Llargades de paraules

Aquesta lliçó presenta un programa per llegir un poema i obtenir-ne algunes estadístiques sobre la llargada de les paraules.

Enunciat i exemple

Donat un poema, suposem que estem interessats a saber quina n’és la paraules més llarga, quantes paraules conté, i quina n’és la llargada mitjana (en nombre de lletres).

Per exemple, en el cas que la nostra entrada fós

quan els oques van al camp la primera va al davant
la segona va al darrera i despres ve la tercera

hauríem d’obtenir com a sortida

nombre de paraules: 21
llargada mitjana: 3.7619
paraula més llarga: primera

Solució

Per resoldre aquesta tasca, considerarem que el poema consisteix en una seqüència no buida de paraules. Per tant, utilitzem un bucle

    string paraula;
    while (cin >> paraula) {
        ⋮
    }

per tal de poder tractar totes les paraules una rera l’altra. Afortunadament, el cin >> aplicat a strings ja funciona per paraules (tot entenent que estan separades per blancs o salts de línies).

Dins del bucle, només ens cal mantenir la informació necessària per poder donar les respostes al final del programa, quan ja s’hagin processat totes les paraules. Per això, usarem les variables següents:

En sortir del bucle, només cal reportar els valors calculats, però tenint en compte que cal fer una divisió real per obtenir la llargada mitjana de les paraules.

El programa sencer queda doncs així:

#include <iostream>
#include <string>
using namespace std;

int main() {
    int nombre_paraules = 0;
    int suma_llargades = 0;
    string paraula_mes_llarga = "";
    string paraula;
    while (cin >> paraula) {
        ++nombre_paraules;
        suma_llargades += paraula.size();
        if (paraula.size() > paraula_mes_llarga.size()) paraula_mes_llarga = paraula;
    }
    cout << "nombre de paraules: " << nombre_paraules << endl;
    cout << "llargada mitjana: " << double(suma_llargades)/nombre_paraules << endl;
    cout << "paraula més llarga: " << paraula_mes_llarga << endl;
}

Cal dir que aquest programa només funciona correctament si el poema té almenys una paraula, perquè altrament la llargada mitjana no estaria ben definida.


Fòrum







Lliçons.jutge.org
Jordi Petit, Salvador Roura
Universitat Politècnica de Catalunya, 2018

Prohibit copiar. Tots els drets reservats.
No copy allowed. All rights reserved.