Проблема с заполнением параллельных массивов из файла при проверке существующих элементов

Целью программы является заполнение двух массивов из данных в файле, первый столбец — номер отдела, а второй — проданные коробки. Должно быть не более 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, или index / count не объявлен должным образом,

-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 . . .

-1

Решение

Ты не разбираешься со случаем, когда начинаешь. Что происходит, когда count = 0? Вы никогда не входите в for петля.

Я предлагаю более простой способ использовать std::map<int, int>, И сделайте что-то подобное внутри цикла чтения:

map[departmentNumber] += boxesSold;

Это делает следующее:

  1. Если departmentNumber существует на карте, это увеличивает boxesSold,
  2. Если departmentNumber не существует на карте, он добавляет его со значением, равным 0, а затем увеличивает его на boxesSold,
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]