2015-04-23 28 views
-4

我有一個C++問題。目前我有一個存儲以下數據的文本文件。我希望做一個簡單的程序,它將讀取數據並打印出最常見的項目顯示和數量。如何檢查文本文件中每個單詞的出現次數並顯示次數C++

我不希望設置固定數量的單詞構成的陣列通過該文件作爲該項目輸入到文本文件不被預定

以下是在數據的文本文件的結構來搜索

第四值是量和第二個值是項目名

文本文件:

1|Bag|2|3|6|20Apr2015 
2|Fruit|2.3|5|11.5|20Aug2015 
4|Water|0.9|5|4.5|20Jun2015 
5|File|0.9|5|4.5|20Jul2015 
6|Water|0.9|5|4.5|20Nov2015 
7|Water|0.9|5|4.5|20May2015 
8|Bag|0.9|5|4.5|20Jan2015 
9|Water|0.9|5|4.5|20Feb2015 
10|Water|0.9|5|4.5|20Jan2015 
11|Water|0.9|5|4.5|20Dec2015 
12|File|0.9|5|4.5|20Oct2015 
13|Water|0.9|5|4.5|20Sep2015 
14|Water|0.9|5|4.5|20Sep2015 

所需的輸出:

最常見的項目是水和40銷往

頻率最低的項目是水果和5銷往

這裏是我當前編碼

void computeItem() 
    { 


     string itemid; 
     float totalprice; 
     string item[4] ={"Water","Bag","Fruit","File"}; 
     int itemqty[4]={}; 

     int founditem; 
     int foundyear; 
     string year; 
     string found; 

     cout<<endl; 


      for(int i = 0; i < MAX- 1; i++) 
      { 
       if(transactionpile[i].itemid !="") 
       { 
        for(int k=0; k<4;k++) 
        { 

          founditem = transactionpile[i].itemdesc.find(item[k]); 
          if(foundmonth<transactionpile[i].itemdesc.length()) 
          { 
           //Add the totalprice of each found records to totalsalesmonth[k] 
           itemqty[k] += transactionpile[i].quantity; 

          } 

        } 


        } 

       } 


     } 



     //Print out the output 
     for(int i=0; i<4; i++) 
     { 

      cout << "   " << item[i] << "   " << << itemqty[i] <<endl; 


     } 

    } 
+0

我試圖搜索數組中預定義的單詞來循環遍歷文本文件並捕獲數量,但我無法比較diff項目的數量,但這不是我想要的。所以希望有人能給我一些啓發。非常感謝 –

+0

發佈你試過的代碼 – user7

+0

我已經添加了我現在在我的文章中的當前代碼 –

回答

0

可能,同時通過循環文件,你可以動態增長一個std::vector的項目?因此,每次運行一個項目時,檢查它是否已經在向量中,如果不是,則將其推到最後。除此之外,只需像現在使用的數組那樣處理矢量(我想......我無法真正知道你現在在做什麼)。

相關問題