在字符串中查找单词的出现次数

时间:2014-12-14 20:56:16

标签: c++ arrays string

我似乎无法在10个字符串的数组中找到一个单词发生了多少次。代码编译时没有错误但是当我到达程序的最后一部分时说出" Word X的出现次数是:"它总是显示一些重要的值,如45353454等。 我已经指出了下面的问题。另外,为什么(s1 [i] == s1 [choise])不工作呢?

有问题的代码就是这个。

    for(i = 0; i < CAPACITY; ++i)
    {
        if(s1[i] == choise) // Here is the problem.
        {
            ++occurrences;
        }
    }

我该如何解决? 这里的所有代码都可供参考。

#include <iostream>
#include <string>

using namespace std;

const int CAPACITY = 10;

int main ()
{
    string s1[10];
    int i;
    int occurrences;
    string choise;


    for(i = 0; i < CAPACITY; ++i)
    {
        cout << "Type in a word: ";
        cin >> s1[i];
    }

    cout << endl;

    for(i = 0; i < CAPACITY; ++i)
    {
        cout << "String no: " << i + 1 << " is: " << s1[i] << endl;
    }

    cout << "\nType which word you want to find out how many times it has occurred: ";
    cin >> choise;

    for(i = 0; i < CAPACITY; ++i)
    {
        if(s1[i] == choise)
        {
            ++occurrences;
        }
    }

    cout << "\nWord " << choise << " occurrences are: " << occurrences;

    return 0;
}

3 个答案:

答案 0 :(得分:2)

我解决了这个问题。问题是我必须将变量“occurrence”初始化为0,因此它没有随机值。

编辑1:它没有运行的原因是因为我将这个部分的值设置为空而且它保持随机值。要修复它,请在此处将其初始化为0:

string s1[10];
int i;
int occurrences; // missing initialization
string choice;

应该是。

string s1[10];
int i;
int occurrences = 0;
string choice;

编辑2:我还创建了一个名为CAPACITY的const,并将其设置为10,但我忘了把它放在名为s1的字符串中,而我只输入了值10要求CAPACITY const不需要。(如果我们不在for循环中使用它)。

要解决此问题,请更改此信息:

string s1[10];

对此:

string s1[CAPACITY];

答案 1 :(得分:1)

您需要初始化您的计数器变量:

 int occurrences  = 0;

否则,它上面有垃圾。

答案 2 :(得分:0)

您需要初始化 出现次数变量。因为局部变量,在声明时保留垃圾值, 全局变量的情况,它们被初始化为各数据类型的默认值。