在检查现有元素时,从文件填充并行数组时出现问题



程序的目的是从文件中的数据中填充两个数组,第一列是部门编号,第二列是销售的盒子。最多应有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;

这会执行以下操作:

  1. 如果映射中存在departmentNumber,则会递增boxesSold
  2. 如果映射中不存在departmentNumber,则会将其与等于0的值相加,然后将其递增boxesSold

相关内容

  • 没有找到相关文章

最新更新