suchen

Heim  >  Fragen und Antworten  >  Hauptteil

c++ – Aufeinanderfolgende Vorkommen von Wörtern aus der Eingabe finden und zählen

Die Aufgabe besteht darin, mehrere Zeichenfolgenobjekte aus der Standardeingabe zu lesen und aufeinanderfolgende wiederholte Wörter zu finden. Wenn die Eingabe beispielsweise lautet:
wie jetzt, jetzt, jetzt, Himmel, Kuh
, sollte 3 ausgegeben werden (erscheint jetzt dreimal hintereinander)

#include "iostream"
#include "string"

using namespace std;

int main() {
    int result = 0;
    int temp = 0;

    string word = "";
    string tempWord = "";

    cout << "Enter a bunch of words: " << endl;
    while (cin >> tempWord) {
        if (word == "") {
            word = tempWord;
            ++temp;
        }
        else {
            if (tempWord == word) {
                ++temp;
            }
            else {
                if (temp > result) {
                    result = temp;
                    temp = 0;
                }
            }
        }
    }
    cout << result << endl;

    return 0;
}

Das Problem ist jetzt jedoch, dass die Ausgabe immer 0 ist. Ich habe den Fehler selbst gefunden, aber ich habe das Gefühl, dass an der Logik nichts falsch ist. Bitte geben Sie mir einen Rat, danke ~

给我你的怀抱给我你的怀抱2800 Tage vor746

Antworte allen(2)Ich werde antworten

  • 为情所困

    为情所困2017-05-16 13:25:50

    if (temp > result)
    {
        result = temp;
        temp = 0;
        
        //!
        word = "";
    }

    word也要置空。

    Antwort
    0
  • 为情所困

    为情所困2017-05-16 13:25:50

    eg: 只输入一个单词 很多单词

    考虑全面

    #include<iostream>
    #include<string>
    using namespace std;
    int main() {
        int result = 0;
        int temp = 0;
    
        string word = "";
        string tempWord = "";
    
        cout << "Enter a bunch of words: " << endl;
        while (cin >> tempWord) {
            if (word == "") {
                word = tempWord;
                ++temp;
                if (temp > result) {
                    result = temp;
            }
    
            }
            else {
                if (tempWord == word) {
                    ++temp;
                    if (temp > result) {
                           result = temp;
                }
                }
                else {    
            word = tempWord;
            temp = 1;
                }
            }
        }
        cout << result << endl;
    
    return 0;
    }

    Antwort
    0
  • StornierenAntwort