在C++ Primer 第五版这本书上的1.5.2练习部分的1.23,有个题目是:读取多条销售记录,并统计每个ISBN(每本书)的销售记录。
在这里我简化了思想:读取并统计每种字符串的的个数
#include <iostream>
using namespace std;
int main()
{
string item;
string isbn[10];//保存字符串的数组
int isbnnum[10] = { 0 };//保存每种字符串的个数
int i = 0;
cin >> item;
isbn[0] = item;
isbnnum[0] = 1;//第一个值保存在数组中,由于只有一个值,个数为1
while (cin >> item)//从第二个输入的值开始
{
int flag = 0;
for (int j = 0; j <= i; j++) {//遍历数组,和输入的值进行比较
if (isbn[j] == item) {//如果存在相等的
isbnnum[j]++;//就把该下标位置的计数器加一
flag = 1;//这里是为了后面的判断continue,进入输入下个值
break;
}
}
if (flag == 1) {//在数组中已经找到相同的值,所以进入下一个输入的值
continue;
}
else {//如果没有在数组中找到相同的值,
isbn[++i] = item;//则将这个新的值插入到数组的末尾。
isbnnum[i] = 1;//新值的个数设置为1
}
}
for (int a = 0; a <= i; a++) {//最终数组中的字符串的个数为i
cout << isbn[a] << " " << isbnnum[a] << endl;//输出字符串和其对应的个数
}
return 0;
}
对于统计不同数字的个数同样适用。