字数组输入和输出并计算输入量

时间:2016-11-30 11:09:51

标签: c++

输入20个单词,然后输出单词并计算每个单词输入的次数。

例如,如果我输入苹果5次和香蕉3次以及其他一些单词所以它将upp添加到20它应该输出:apple = 5 banana = 3 kiwi = 1 orange = 1等..

#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
int main()
{
    string ord[21];
    for(int i=1; i<21; i++)
    {
        system("CLS");
        cout<<"Enter word number ["<<i<<"] :";
        cin>>ord[i];

    }
    for(int i=1; i<21; i++)
    {
        int count=1;
        for(int x=i+1; x<21; x++)
        {
           if(ord[x]==ord[i])
           {
             count++;
           }
        }
        cout<<ord[i]<<"="<<count<<endl;
    }
}

到目前为止,我的代码在某种程度上起作用,但是如果你运行它,你可以看到它说了一个单词已被重复,然后它再次显示了这个单词,但这次它说它重复了一次。

2 个答案:

答案 0 :(得分:0)

让我们通过代码运行

出于本例的目的,我们采用5个单词而不是20个

您可以将其推断为20以后

我的5个条目

苹果

苹果

香蕉

猕猴桃

香蕉

所以第一个for循环(带i的那个)以apple asd [i]

开头

进入第二个for循环(x)

x从第二个单词开始

第二个字 - 无匹配计数变为2

第3个字 - 不匹配计数保持2

第4个字 - 不匹配计数保持2

第5个字 - 不匹配计数保持2

因此,对于apple

,第一个循环(i)输出为2

现在循环的第二个乐趣(i)ORD再次成为苹果! x从3开始,因为我是2而x = i + 1 所以ord [x]是 香蕉 猕猴桃 香蕉 这意味着

第3个字 - 不匹配计数保持1

第4个字 - 不匹配计数保持1

第5个字 - 不匹配计数保持1

因此再次输出苹果为1

在那里你得到重复的单词和不正确的单词数

克服此初始化count=0 让x从1开始x=1而不是x=i+1 这样可以得到正确的数字

答案 1 :(得分:0)

#include <iostream>
#include <windows.h>
#include <string>

using namespace std;

int main() {

    struct Word {
        string word;
        int count;
    };

    Word words[21] = {};
    int distinctWordCount = 0;
    string tempWord;
    for (int inputWordCount = 1; inputWordCount < 21; inputWordCount++) {
        system("CLS");
        cout << "Enter word number [" << inputWordCount << "] :";
        cin >> tempWord;
        int count = 0;
        for (; count < distinctWordCount; ++count) {
            if (words[count].word == tempWord) {
                words[count].count++;
                break;
            }
        }
        if (count == distinctWordCount) {
            words[count].word = tempWord;
            words[count].count++;
            ++distinctWordCount;
        }
    }

    for (int count = 0; count < distinctWordCount; ++count) {
        cout << words[count].word << "=" << words[count].count << endl;
    }
}