Проблема, повторяющаяся через структуру и класс, чтобы найти самый дешевый предмет. Моя функция сделала наоборот, он нашел самый дорогой - PullRequest
0 голосов
/ 15 февраля 2020

Я новичок в переполнении стека, поэтому любые советы по улучшению вопросов будут очень благодарны. Я работаю над проектом домашней работы. Эта функция с помощью указателей должна перебирать все машины и находить самые низкие цены. Тем не менее, я получаю самое высокое значение данных входного файла и просто переключать знак меньше или больше не достаточно. Один печатает наибольшее значение, последний печатает адрес памяти, какой совет? Вот фрагмент первой части данных входного файла: (Есть два других блока, как и во входном файле, всего три блока).

Hertz 93619
2014 Toyota Tacoma 115.12 1
2012 Honda CRV 85.10 0
2015 Ford Fusion 90.89 0
2013 GMC Yukon 110.43 0
2009 Dodge Neon 45.25 1
void findCheapestRental(RentalAgency *agencies){
RentalCar * leastExpensive;
RentalAgency * agenciesPtr = agencies;
RentalCar * invPtr = agenciesPtr->inventory;
leastExpensive = invPtr;

for(int i = 0;i < 3; i++, agenciesPtr++){
 for(int j = 0;j < 5; j++, invPtr++){
     if(invPtr->getPrice() < leastExpensive->getPrice()){
         leastExpensive = invPtr;
     }
 }
}
cout << "The least expensive car is: " << leastExpensive->getMake() << " " << leastExpensive->getModel() << " $" << leastExpensive->getPrice() << endl;
}

1 Ответ

0 голосов
/ 15 февраля 2020

Ваш код, скорее всего, имеет неопределенное поведение. Я думаю, вам нужно инициализировать invPtr в каждой итерации внешнего for l oop.

for(int i = 0;i < 3; i++, agenciesPtr++){

   // Need this line
   invPtr = agenciesPtr->inventory;

   for(int j = 0;j < 5; j++, invPtr++){
      if(invPtr->getPrice() < leastExpensive->getPrice()){
         leastExpensive = invPtr;
      }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...