Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    10

    Mi aiutate a fixare questo bug?

    Ciao a tutti!Come si va?
    Ho un problemino con questo programma...
    ...oltre a fare alcune cose ke funzionano bene, dovrebbe contare il numero di parole della frase inserita dall'utente, e lo fa, solo ke se l'utente separa con più di uno spazio le parole il conteggio si "sballa"...qualkuno può aiutarmi a correggere questa cosa?

    #include <iostream>
    #include <stdio.h>

    using namespace std;

    int main()
    {
    int NumeroSpazi, Conto, Max, Indice;
    char Ch;
    char Frase[1024];
    Max = NumeroSpazi = Conto = Indice = 0;
    cout<<"Scrivi una frase e premi invio: ";
    while((Ch = getchar()) != '\n' && Indice<1024){
    Frase[Indice++] = Ch;
    if(Ch == ' ') {
    NumeroSpazi++;
    if(Max < Conto) Max = Conto;
    Conto = -1;
    }
    Conto++;
    if (Max < Conto) Max = Conto;
    }
    cout<<"La frase che hai inserito e':"<<Frase<<endl;
    cout<<"In questa frase ci sono " <<NumeroSpazi+1<<" parole"<<endl;
    cout<<"La parola piu' lunga che hai immesso e' di lunghezza pari a: "<<Max<<endl;
    system ("PAUSE");
    return 0;
    }

    Grazie, CiAuZ!

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    23
    Prova in questo modo, ho semplicemente aggiunto una variabile 'controllo', che
    permette di incrementare la variabile 'NumeroSpazi' soltanto se il carattere
    precedente non era già uno spazio. Dai un'occhiata!

    #include <iostream>
    #include <stdio.h>

    using namespace std;

    int main(){

    //VARIABILE DI CONTROLLO
    bool controllo=false;

    int NumeroSpazi, Conto, Max, Indice;
    char Ch;
    char Frase[1024];

    Max = NumeroSpazi = Conto = Indice = 0;

    cout<<"Scrivi una frase e premi invio: ";

    while((Ch = getchar()) != '\n' && Indice<1024){
    Frase[Indice++] = Ch;
    if(Ch == ' ') {
    //VERIFICA SE NON E' UNO SPAZIO SUCCESSIVO AD UN ALTRO
    if(!controllo)
    NumeroSpazi++;
    //IMPOSTA IL CONTROLLO
    controllo=true;
    if(Max < Conto) Max = Conto;
    Conto = -1;
    }else
    //ANNULA IL CONTROLLO SPAZIO
    controllo=false;
    Conto++;
    if (Max < Conto) Max = Conto;
    }
    cout<<"La frase che hai inserito e':"<<Frase<<endl;
    cout<<"In questa frase ci sono " <<NumeroSpazi+1<<" parole"<<endl;
    cout<<"La parola piu' lunga che hai immesso e' di lunghezza pari a: "<<Max<<endl;
    system ("PAUSE");
    return 0;
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    10
    Grazie mille, mi perdevo in un bicchiere d'acqua, Thanks!

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.