程序的目的是从文件中的数据中填充两个数组,第一列是部门编号,第二列是销售的盒子。最多应有15个部门,变量departmentNumber和boxesSold应在填充阵列之前从文件中接收数据
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
int departmentNumber = 0, boxesSold = 0;
ifstream inputFile("boxes.txt");
const int SIZE = 15;
int departmentArray[SIZE];
int boxesArray[SIZE];
int count = 0;
while (count < SIZE && inputFile);
{
inputFile >> departmentNumber;
inputFile >> boxesSold;
for (int index = 0; index < count; index++)
{
if (departmentArray[index]== departmentNumber)
{
boxesArray[index] = boxesArray[index] + boxesSold;
}
else
{
departmentArray[index] = departmentNumber;
boxesArray[index] = boxesSold;
count++;
}
}
inputFile.close();
}
//display numbers
for (int i = 0; i < count; i++)
{
cout << departmentArray[i] << " ";
cout << boxesArray[i];
cout << endl;
}
system("pause");
}
当前输出为空白。我的for循环搜索数组以查看departmentNumber是否已经存在,我的while循环继续接受文件中的数据,最后一个for循环显示数字。我被困在这上面太久了。
int count = 0;
while (count < SIZE && inputFile)
{
inputFile >> departmentNumber;
inputFile >> boxesSold;
for (int index = 0; index < count; index++)
{
if (departmentArray[index] == departmentNumber)
{
boxesArray[index] = boxesArray[index] + boxesSold;
}
else
{
departmentArray[count] = departmentNumber;
boxesArray[count] = boxesSold;
}
}
boxesArray[count] = boxesSold;
count++;
}
inputFile.close();
我更新了代码,给出了以下输出,我猜是for循环,那个或索引/计数没有正确声明,
-858993460 23
410 17
410 16
120 14
150 32
300 27
410 11
410 10
120 8
150 16
120 2
300 4
410 5
520 6
390 7
Press any key to continue . . .
您第一次启动时没有处理这个案例。count = 0
时会发生什么?您永远不会进入for
循环。
我建议一个更简单的方法是使用std::map<int, int>
。在你的阅读循环中做这样的事情:
map[departmentNumber] += boxesSold;
这会执行以下操作:
- 如果映射中存在
departmentNumber
,则会递增boxesSold
- 如果映射中不存在
departmentNumber
,则会将其与等于0的值相加,然后将其递增boxesSold