程序在C ++早期结束

时间:2015-07-03 18:11:57

标签: c++

        int H;
        int M;
        int SleepH;
        int SleepM;

        cout << NumActivities[2][0];
        cin >> H >> M;

        cout << NumActivities[2][1];
        cin >> SleepH >> SleepM;

        int SubtractM;
        int SubtractH;

        if (H<=12)
        {
           int MH=24;
           int MM=60;

           SubtractH= MH-H;

           SubtractM = MM-M;
        }

           if (SleepM==00)

           {
               int SleepM= SleepM+60;

               int TimeLeftH;
               TimeLeftH= SleepH-SubtractH;

               int TimeLeftM;
               TimeLeftM= SleepM-SubtractM;

               int F;
               F=TimeLeftM/60;

               int DoThisZ;
               DoThisZ= TimeLeftH + F;

               float Normal = Normal + DoThisZ; 
               cout<<Normal;



           }

           }

        }

以上是我的计划。它还没有完成但是在运行时程序会在第64行输出NumActivities [2] [1]后立即提前结束。我找不到任何方法来阻止它并且取消循环不会改变任何东西。

我希望程序让我输入变量H,M,SleepH和SleepM然后显示结果,但它只是在显示NumActivities [2] [1]后关闭而不让我输入变量。

1 个答案:

答案 0 :(得分:1)

当程序问你&#34;你的睡觉时间是什么时候?(24小时格式):&#34;,如果你的答案包含冒号(:),则需要输入你的下一个问题 - & #34;你睡了多久?:&#34; - 以及。

这是因为在C ++中,逗号分隔符不是数字的一部分,因为整数的小数点不是,所以只要操作找到逗号或点,提取操作就会结束,离开该字符作为下一个要提取的。后续的提取操作会将该字符作为第一个要提取的字符,因此它们都会返回。

输入您的第一个答案,例如&#34; 11 30&#34; - 数字之间的空格,而不是冒号。然后,该程序也应该为您的下一个问题提供输入。

只是给出一个建议,你就是在浪费你的迭代数0,1,2,4,5。所以,你可以简单地拿掉for循环。