В настоящее время я озадачен проблемой домашней работы, включающей функцию, которая перебирает первый столбец массива из 2 столбцов, чтобы найти минимальное значение, а затем возвращает указатель на элемент с минимальным значением.Эта часть не так уж плоха, но моя проблема заключается в следующем:
cout<<"The minimum travel time is "<<*minimumTravelTime(travelTime)<<endl; //Prints minimum travel time
//FIX THIS PART
methodDeterminator = (*minimumTravelTime(travelTime))++;
cout<<"THE CASE IS "<<methodDeterminator<<endl;
//FIX THIS PART
switch(methodDeterminator)
{
case 0: transportMethod = "transporter";
break;
case 1: transportMethod = "stargate";
break;
case 2: transportMethod = "Alcubierre drive";
break;
case 3: transportMethod = "hyperdrive";
break;
case 4: transportMethod = "TARDIS";
break;
default: cout<<"Error. Could not find transport mode."<<endl;
}
cout<<"Travel by "<<transportMethod<<" will take "<<*minimumTravelTime(travelTime)<<" months."<<endl; //Prints travel method and time
Функция найти минимальное время здесь
int *minimumTravelTime(int travelArray[][2])
{
int *pMinimum; //Pointer for minimum time
int currentMin, pastMin; //Holding places for finding minimum travel time
for(int r = 0; r < 5; r++) //5 rows
{
for(int c = 0; c < 2; c++) //2 columns
{
if(c == 0) //If first column
{
if(r == 0) //If first row
{
currentMin = travelArray[r][c]; //First row value stored as currentMin
}
else
{
pastMin = currentMin; //Set previously determined currentMin as pastMin
currentMin = travelArray[r][c]; //Get current value
if(currentMin > pastMin) //If current value is greater than pastMin
{
currentMin = pastMin; //Set currentMin to be pastMin
}
}
}
}
}
pMinimum = ¤tMin; //Points to memory location of currentMin
return pMinimum; //Return address of minimum value
}
Часть с надписью "// FIX THIS PART"вот где у меня проблемы.Я хочу, чтобы он увеличивал адрес памяти, который функция возвращает ДО разыменования (чтобы я мог получить значение во втором столбце массива, что будет соответствовать случаям в операторе switch).Я не могу удалить * в имени функции в реализации функции, а также не могу удалить внутренние скобки, иначе это выдаст мне ошибку «Выражение является неизменяемым lvalue».
Спасибо залюбая помощь.Я часами работал над этой проблемой, пытаясь разобраться.Я также не смог найти ни одного примера кода того, что конкретно я пытаюсь сделать (увеличить указатель перед разыменованием, и указатель возвращается функцией).