Целью программы является заполнение двух массивов из данных в файле, первый столбец — номер отдела, а второй — проданные коробки. Должно быть не более 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 . . .
Ты не разбираешься со случаем, когда начинаешь. Что происходит, когда count = 0
? Вы никогда не входите в for
петля.
Я предлагаю более простой способ использовать std::map<int, int>
, И сделайте что-то подобное внутри цикла чтения:
map[departmentNumber] += boxesSold;
Это делает следующее:
departmentNumber
существует на карте, это увеличивает boxesSold
,departmentNumber
не существует на карте, он добавляет его со значением, равным 0, а затем увеличивает его на boxesSold
,Других решений пока нет …