C++ C++;程序给出-2147483648输出

C++ C++;程序给出-2147483648输出,c++,output,C++,Output,我正在开发一个程序,用户在其中输入有关其日常生活的特定数据,以及他必须做的事情,以及这些事情的优先级。我已经做了一个算法来解决这个问题,但当执行它时,我得到了一些奇怪的输出。我已经在下面介绍了该程序和输出(我知道该程序是初步的): 然而,这是我得到的输出: 'How many activities do you have per weekday this week?: 2 Please enter all information in minutes unless specified How m

我正在开发一个程序,用户在其中输入有关其日常生活的特定数据,以及他必须做的事情,以及这些事情的优先级。我已经做了一个算法来解决这个问题,但当执行它时,我得到了一些奇怪的输出。我已经在下面介绍了该程序和输出(我知道该程序是初步的):

然而,这是我得到的输出:

'How many activities do you have per weekday this week?: 2
Please enter all information in minutes unless specified
How much time do you spend per meal?:15
How many meals do you have per day?:2
How much time do you spend in the bathroom? (Excluding taking a pee):30
How many times do you go to the bathroom per day?:2
When do you wake up?(ex. 7:00am should be typed as 07 00): 08 45
How many naps do you take per day?(Enter 0 if none):0
How long per nap?(0 if none):0
Do you take any breaks, excluding meals? (Enter 0 if none):0
How long per break?(0 if none):0
How much time do you spend at work or school? (H:M ex. 7 hours and 10        minutes is 7 10):7 00
How much time do you spend commuting each way (In minutes)?:30
Enter the name of the activity:AC1
Enter the priority level of the activity from 1-10, 1 being optional:1         
Enter the name of the activity:AC2
Enter the priority level of the activity from 1-10, 1 being optional:6
-2147483648 hours and -2147483648 minute
-2147483648 hours and -2147483648 minutes'
只有当我要求程序输出数组FACTime中的第二个值并使用以下代码位将其转换为小时和分钟时,才会发生此错误:

    int FTimeND;
    FTimeND = FACTime[2];

    float FTimeDec;
    FTimeDec = FACTime[2]-FTimeND;

    int FTime;
    FTime = FTimeDec*60;

     cout <<FTimeND<<" hours and "<<FTime<< " minutes\n";
int;
FTimeND=FACTime[2];
浮动FTimeDec;
FTimeDec=FACTime[2]-FTimeND;
intftime;
FTime=FTimeDec*60;

cout原因之一是
Normal
在未初始化的情况下被使用,因此这可能是您的第一个输出行的问题


但真正的问题似乎在于优先权。它只包含1项,但最后的for循环运行了3次。

FACTime[2]
从未初始化,而且大多数
优先级[]
也没有初始化

在第一个循环中,仅当i>5时设置
priority[TPri]
,然后设置
TPri=i-6
,因此只能为0。因此,设置了优先级[0],但没有其他设置。在第二个循环中,
FACTime[2]
仅在
priority[2]
计算结果为if/else块中的某个值时设置,但不会设置,因为
priority[2]
未初始化

如果优先级数组中的每个元素都与用户输入的单个活动相对应,则您可能需要以下内容:

for (int f=0; f<A; f++)
{
    cout << NumActivities[6][0];
    cin >> Name[f];

    cout << NumActivities[6][1];
    cin >> priority[f];
}
for(int f=0;f Name[f];
cout>优先级[f];
}

@Axalo我忘了提到我的输入包含在输出中。只需看一下输入提示旁边。最后一部分毫无意义。不应该
FACTime[2]-当两个操作数相等时,FTimeND总是得到0?你应该初始化变量和数组。我想你没有注意到
-2147483648
是一个非常特殊的数字-32位
int
可以存储的最低值。它在2的补码中的二进制表示是
1
后跟31de>0
s。如此多的
0
s暗示您正在处理一个未初始化的变量,该变量采用了它已经具有的值,由于某种原因碰巧是这样。因此,您应该检查所有变量是否都已正确初始化。我明白了,我对这个基本错误表示歉意。我不认为没有初始化它这可能是因为我以前的所有程序都没有这样做。谢谢你的知识。好的,新问题。程序的预期输出是6.35左右,我得到24.75。访问未初始化的值只是一个症状。你的迭代一开始不应该让你访问这些值。
    int FTimeND;
    FTimeND = FACTime[2];

    float FTimeDec;
    FTimeDec = FACTime[2]-FTimeND;

    int FTime;
    FTime = FTimeDec*60;

     cout <<FTimeND<<" hours and "<<FTime<< " minutes\n";
for (int f=0; f<A; f++)
{
    cout << NumActivities[6][0];
    cin >> Name[f];

    cout << NumActivities[6][1];
    cin >> priority[f];
}