在计算用户输入的两次之间的时差时,我的逻辑是关闭的。
答案并没有说明应该是什么,我无法弄清楚我的逻辑错在哪里。我进入了我的老师助理,她对我没有任何帮助。任何帮助将不胜感激。如果需要,我也会发布我的main()函数。因为我相信我的布尔人的东西搞砸了。
我正在尝试从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;
}
**编辑主要功能
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;
答案 0 :(得分:0)
问题(或者至少其中一个)是你输错了错误:
startTime=calcHours(isAM, hourFut, minFut, isAMFut);
与签名不匹配:
int calcHours(int hours, int minutes, bool isAM, bool isAMFut)
该功能不关心名称:变量必须按照正确的顺序排列。
除此之外,你真的应该考虑清理你的代码。特别是,函数calcHours
和calcFut
完全 同样的事情。您可以摆脱一个并使用不同的参数调用剩余的函数两次。