Problema esercizio in c++

di il
2 risposte

Problema esercizio in c++

Ciao ragazzi,sto provando a fare un esercizio con il c++ ma non sono molto bravo a programmare.Il mio prgramma legge solo la prima parola della frase inserita e mi da la lunghezza solo di questa, non capisco dove sia l'errore.Qualcuno potrebbe aiutarmi?Grazie

Siano dati in ingresso, da file o da tastiera, una stringa rappresentante una frase composta da parole
Si progetti un programma che conti il numero delle parole contenute nella frase e determini la lunghezza della parola più lunga contenuta nella frase. Si Stampino i valori di ingresso e le risultanze dell’elaborazione .
(Si supponga che la frase inserita sia priva di punteggiatura: pertanto le parole nella frase sono separate solo tramite uno o più caratteri spazio bianco’ ’.)
#include <iostream>
#define MAXLEN 50
using namespace std;
int main()
{
   char frase[MAXLEN]; 
   int   parole;
   int   max;
   int   i;
   int   temp;
    max=0;
    parole=0;
    cout<<"inserire la frase \n";
    cin>>frase;
    i=0; 
    temp=0;
    for (i=0;i<=strlen(frase);i++){                     
    
        if ((frase[i] != ' ' ) & (frase[i] != '\0' )) 
                          
                temp++;                                 
        else{
                parole++;                               
                
                if (temp>max){                          
                                                        
                    max=temp;
                    temp=0;
                    
                }else
                     temp=0;
            }
    
    }
    cout<<"la frase inserita è" <<frase <<"\n";
    cout<<"il numero di parole è " <<parole <<"\n";
    cout<<"la parola più lunga è pari a:" <<max <<"\n";
    system("pause");
    return 0;
}

2 Risposte

  • Re: Problema esercizio in c++

    Al posto di fare
    cin >> frase;
    fai
    cin.getline(frase,MAXLEN); quindi
    
    #include <iostream>
        #define MAXLEN 50
        using namespace std;
        int main()
        {
           char frase[MAXLEN], parola[MAXLEN];
           int   parole;
           int   max;
           int   i;
           int   temp;
            max=0;
            parole=0;
            cout<<"inserire la frase \n";
    		cin.getline(frase,MAXLEN);
    		
    		
            i=0;
            temp=0;
            for (i=0;i<=strlen(frase);i++){                     
           
                if ((frase[i] != ' ' ) & (frase[i] != '\0' ))
                                 
                        temp++;                                 
                else{
                        parole++;                               
                       
                        if (temp>max){                         
                                                               
                            max=temp;
                            temp=0;
                           
                        }else
                             temp=0;
                    }
           
            }
            cout<<"la frase inserita è" <<frase <<"\n";
            cout<<"il numero di parole è " <<parole <<"\n";
            cout<<"la parola più lunga è pari a:" <<max <<"\n";
            system("pause");
            return 0;
        }
    
  • Re: Problema esercizio in c++

    Grazie dell'aiuto
Devi accedere o registrarti per scrivere nel forum
2 risposte