Моя логика отключена при вычислении разницы во времени между двумя введенными пользователем.Логика C++ Вычисление разницы во времени
Ответ не приходит к тому, что ему нужно, и я не могу понять, где моя логика неправильная. Я вошел в помощника учителя, и она не помогла мне. Любая помощь будет принята с благодарностью. Если потребуется, я также опубликую мою функцию main(). Поскольку я верю, что что-то с моими логическими значениями становится испорченным.
Я пытаюсь импортировать значения моих переменных из основной функции и вычислять, сколько минут есть в входах пользователей, т.е. 2:10 AM = 130 минут для первого значения, а второе значение равно 2:20 AM ie = 140, разница в 10 минут между слишком входами. Программа печатает 138 минут ... Если кто-то может указать мне в положительном направлении, что было бы весьма полезно.
int computeDifference(int hours, int minutes, int hourFut, int minFut, bool isAM, bool isAMFut){
cout<<isAM<<isAMFut<<endl;
int startTime, endTime;
startTime = calcHours(isAM, hourFut, minFut, isAMFut);
endTime = calcFut(hourFut, minFut, isAMFut, isAM);
diff = startTime - endTime;
if (diff < 0)
diff = abs(diff);
return diff;
}
int calcHours(int hours, int minutes, bool isAM, bool isAMFut){
if ((hours < 12) && (isAM))
return minutes +(hours * 60);
if ((hours == 12 && isAM))
hours = 0;
if(hours < 12 && !isAM)
return minutes + hours * 60;
}
int calcFut(int hourFut, int minFut, bool isAMFut, bool isAM){
if ((hourFut == 12) && isAM)
hourFut = 0;
if ((hourFut) < 12 && !isAM)
return minFut + hourFut * 60;
if ((hourFut < 12) && isAM)
return minFut + hourFut * 60;
}
** EDIT MAIN FUNCTION
int main(){
//Declarations
int hours, minutes, hourFut, minFut;
bool isAM, isAMFut;
string amOrPM, amOrPMFut;
//Reading in the data from user
cout<<"Please enter the time (hours minutes) ";
cin>>hours>>minutes;
cout<<endl;
cout<<"Please enter PM or AM"<<endl;
cin>>amOrPM;
//Converting string to all uppercase so it is easier to check
transform(amOrPM.begin(), amOrPM.end(), amOrPM.begin(), ::toupper);
//Checks if user entered am, or pm if not asks them to re-enter
while ((amOrPM != "AM") && (amOrPM != "PM")){
cout<<"Please enter PM or AM: ";
transform(amOrPM.begin(), amOrPM.end(), amOrPM.begin(), ::toupper);
}
//Turns the boolean to true if it is the morning
if (amOrPM == "AM")
isAM = true;
else
isAM = false;
cout<<"It is currently "<<hours<<":"<<minutes<<amOrPM<<endl;
cout<<endl;
cout<<"When would you like to travel too?"<<endl;
//Reading in future time
cout<<"Please enter a time (hours minutes)"<<endl;
cout<<"Please enter a time (hours minutes)"<<endl;
cin>>hourFut>>minFut;
cout<<"Is it AM or PM?"<<endl;
cin>>amOrPMFut;
transform(amOrPMFut.begin(), amOrPMFut.end(), amOrPMFut.begin(), ::toupper);
//Checking if user enters am or pm
while ((amOrPMFut != "AM") && (amOrPMFut != "PM")){
cout<<"Is it AM or PM?"<<endl;
cin>>amOrPMFut;
transform(amOrPMFut.begin(), amOrPMFut.end(), amOrPMFut.begin(), ::toupper);
}
if (amOrPMFut == "AM")
isAMFut = true;
else
isAMFut = false;
cout<<isAM<<endl;
cout<<isAMFut<<endl;
Включите вашу основную функцию, стандартный вход и выход, который вы ожидали. Я не видел причины, по которой вам нужны две функции, чтобы конвертировать минуты времени в это. – AchmadJP
@AchmadJP Я добавил функцию main(). – Beez
@AchmadJP Я прошу пользователя ввести два раза, я тогда хочу рассчитать разницу двух раз в минутах. – Beez