我有一个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 :(得分:0)
也许,在循环浏览文件时,您可以动态增长std::vector
个项目?因此,每次遇到某个项目时,请检查它是否已经在向量中,如果不是,则将其推送到最后。除此之外,只需将矢量视为您现在正在使用的数组(我假设......我真的无法告诉您现在正在做什么)。