Logic C ++计算时差

时间:2016-02-18 04:01:49

标签: c++ logic

在计算用户输入的两次之间的时差时,我的逻辑是关闭的。

答案并没有说明应该是什么,我无法弄清楚我的逻辑错在哪里。我进入了我的老师助理,她对我没有任何帮助。任何帮助将不胜感激。如果需要,我也会发布我的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;

1 个答案:

答案 0 :(得分:0)

问题(或者至少其中一个)是你输错了错误:

startTime=calcHours(isAM, hourFut, minFut, isAMFut);

与签名不匹配:

int calcHours(int hours, int minutes, bool isAM, bool isAMFut)

该功能不关心名称:变量必须按照正确的顺序排列。

除此之外,你真的应该考虑清理你的代码。特别是,函数calcHourscalcFut完全 同样的事情。您可以摆脱一个并使用不同的参数调用剩余的函数两次。