2016-11-30 117 views
0

輸入20個單詞,然後輸出單詞並計算每個單詞輸入的次數。字數組輸入和輸出並計算輸入量

例如,如果我輸入蘋果5倍和香蕉3次,一些換句話說所以它增加了UPP〜20它應該輸出:蘋果= 5香蕉= 3獼猴桃= 1個橙= 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

爲此,我推薦一個[無序映射](http://en.cppreference.com/w/cpp/container/unordered_map),其中字符串作爲鍵,計數作爲數據。 –

+0

至於你對當前代碼的問題,請學習如何使用調試器。有了它,您可以逐行瀏覽代碼,同時觀察變量及其值。通過這樣做你的問題應該變得明顯。 –

回答

0

讓美國RUN通過代碼

對於這個例子的目的,讓我們5個字,而不是20

可以推斷它20後

我的5項是

apple

apple

香蕉

獼猴桃

香蕉

所以第一個for循環(具有i)將蘋果作爲ORD開始[I]

它進入第二個for循環(x)的

X從第二字

第二字-no匹配計數變爲2

開始

3ND字-no匹配計數保持-no匹配計數保持2

4ND字2

5ND字-no匹配計數保持2

因此第一環路(ⅰ)輸出是2對蘋果

現在for循環(i)的第二樂趣ORD又是蘋果! 從x 3開始,因爲i是2並且x = i + 1的 所以訂... [X]是 香蕉獼猴桃 香蕉 這意味着

3ND字-no匹配計數保持1個

4ND字 - 沒有匹配計數停留1

5ND字 - 沒有匹配計數停留1

因此輸出爲1蘋果再次

有通過u得到單詞的重複和數量不當的話

渡過這個初始化count=0 ,讓X從1開始以及x=1x=i+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; 
    } 
} 
+0

你可以使用上面的代碼而不是你提到的 –