C ++ - Указатель на массив структур, содержащий указатель на массив классов, не работает - PullRequest
0 голосов
/ 13 февраля 2019

Я работаю над проблемой, которая включает чтение из файла, сохранение информации в массив структур и классов, а затем отображение информации.Я опустил некоторые определения функций ради краткости.Применимые области моего кода следующие:

void getInputFile (RentalAgency *ptr) {
int a=0, b=0, c=0;
int tempYear;
float tempPrice;
char tempMake[264], tempModel[264];
bool tempAvailable;
ifstream inputStream;
int *zipCodePtr=(*ptr).zipcode; //create pointer to struct zipcodes
RentalCar *inventoryPtr=(*ptr).inventory; //create pointer to an array of classes



while (a<3) {

На выходе это должно выглядеть так:

Hertz 93619
2014 Toyota Tacoma, $115.12 per day, Available: 1
2012 Honda CRV, $85.1 per day, Available: 0
2015 Ford Fusion, $90.89 per day, Available: 0
2013 GMC Yukon, $110.43 per day, Available: 0
2009 Dodge Neon, $45.25 per day, Available: 1
Alamo 89502
2011 Toyota // more information is posted similar to above

Вместо этого, похоже, ошибка с моей переменной ptr, так какотображает:

Hertz 93619
2014 Toyota Tacoma, $115.12 per day, Available: 1
2012 Honda CRV, $85.1 per day, Available: 0
2015 Ford Fusion, $90.89 per day, Available: 0
2013 GMC Yukon, $110.43 per day, Available: 0
2009 Dodge Neon, $45.25 per day, Available: 1
Alamo
89502 //It stops printing here

При попытке решить эту проблему я заметил, что при увеличении ptr и отображении названия агентства сначала печатается Hertz, затем Alamo, затем 89502 (в отличие от следующего имени), затемтарабарщина.Очевидно, существует проблема с сохранением информации из входного файла (который, к вашему сведению, аналогичен формату отображения) для второго и третьего агентств.Любая помощь очень ценится.C относится к размеру массива инвентаризации, b относится к размеру массива почтовых индексов, a относится к трем агентствам, которые я пытаюсь сохранить и отобразить.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Вам необходимо сбрасывать b и c каждый раз через внешний цикл в обеих подпрограммах.Происходит следующее (как во входной, так и в выходной подпрограммах) b и c имеют значение 5 после первого прохождения через внешний (a) цикл.

Вы можете решить эту проблему с помощьюперемещение инициализации b и c в цикл while.

while(a < 3)
{
   int b = 0, c = 0;
   // ... rest of code ...
}
0 голосов
/ 13 февраля 2019

Если он останавливается раньше, чем ожидалось, кажется, что это проблема из-за условия цикла.

Если вы получаете тарабарщину, это похоже на проблему с вашими индексами, когда вы достигаете за пределамимассив, поэтому вы получаете значения мусора.

Это также помогло бы с точки зрения читабельности, если бы у вас было больше описательных имен переменных.стоит?б?с

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...