输入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;
}
}
到目前为止,我的代码在某种程度上起作用,但是如果你运行它,你可以看到它说了一个单词已被重复,然后它再次显示了这个单词,但这次它说它重复了一次。
答案 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;
}
}