Я разрабатываю программу, в которой пользователь вводит определенные данные о своей повседневной жизни и о том, что он должен делать, наряду с уровнем приоритета для них. Я сделал алгоритм, чтобы понять это, но при выполнении этого я получаю некоторый странный вывод. Я включил программу и выход ниже (я знаю, программа является rudimentery):C++ program giving -2147483648 output
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
int bodyProgram()
{
int A;
cout << "How many activities do you have per weekday this week?: ";
cin >> A;
string NumActivities[7][2] =
{
{
"How much time do you spend per meal?:",
"How many meals do you have per day?:",
},
{
"How much time do you spend in the bathroom? (Excluding taking a pee):",
"How many times do you go to the bathroom per day?:",
},
{
"When do you wake up?(ex. 7:00am should be typed as 07 00): ",
},
{
"How many naps do you take per day?(Enter 0 if none):",
"How long per nap?(0 if none):",
},
{
"Do you take any breaks, excluding meals? (Enter 0 if none):",
"How long per break?(0 if none):",
},
{
"How much time do you spend at work or school? (H:M ex. 7 hours and 10 minutes is 7 10):",
"How much time do you spend commuting each way (In minutes)?:",
},
{
"Enter the name of the activity:",
"Enter the priority level of the activity from 1-10, 1 being optional and 10 being of utmost importance:",
},
};
string Name[100];
float Time[6];
float Amount[6];
float NormalSleep;
float NormalSchool;
float Normal;
int priority[100];
cout << "Please enter all information in minutes unless specified\n";
for (int i=0; i<=6; i++)
{
if (i==2)
{
float SleepH;
float SleepM;
cout << NumActivities[2][0];
cin >> SleepH >> SleepM;
cin.clear();
float F;
F = SleepM/60;
float total;
total= SleepH +F;
NormalSleep = total;
}
else if (i==5)
{
float SH;
float SM;
float com;
cout << NumActivities[5][0];
cin >> SH >> SM;
cout << NumActivities[5][1];
cin >> com;
if ((SH==0) && (SM==0) && (com))
{
continue;
}
float SF;
SF=SM/60;
float SchoolTime;
SchoolTime=SH+SF;
float ComTotal;
ComTotal=com * 2;
float ComDiv;
ComDiv=ComTotal/60;
float Total;
Total=SchoolTime+ComDiv;
float TotalDiv;
TotalDiv=Total/60;
NormalSchool=TotalDiv;
}
else if (i>5)
{
for (int f=0; f<A; f++)
{
int TPri;
TPri=i-6;
cout << NumActivities[6][0];
cin >> Name[i];
cout << NumActivities[6][1];
cin >> priority[TPri];
}
}
else
{
cout << NumActivities[i][0];
cin >> Time[i];
cout << NumActivities[i][1];
cin >> Amount[i];
float AcT;
AcT= Time[i]*Amount[i];
float Hours;
Hours = AcT/60;
Normal=Normal+Hours;
}
}
float NormalAdd;
NormalAdd=Normal+NormalSchool+NormalSleep;
int NormalND;
NormalND=NormalAdd;
float NormalDec;
NormalDec = NormalAdd-NormalND;
int NormalTime;
NormalTime=NormalDec*60;
cout <<NormalND<<" hours and "<<NormalTime<< " minutes\n";
float FACTime[50];
float Left;
Left=24-Normal;
float Alloc;
Alloc=Left/A;
float Allpri110;
Allpri110=Alloc*5;
float Allpri29;
Allpri29=Alloc*4;
float Allpri38;
Allpri38=Alloc*3;
float Allpri47;
Allpri47=Alloc*2;
float Allpri6;
Allpri6=Alloc*1.2;
for (int i=0; i<=A; i++)
{
if (priority[i]==1)
{
FACTime[i]=Alloc-Allpri110;
}
if (priority[i]==2)
{
FACTime[i]=Alloc-Allpri29;
}
if (priority[i]==3)
{
FACTime[i]=Alloc-Allpri38;
}
if (priority[i]==4)
{
FACTime[i]=Alloc-Allpri47;
}
if (priority[i]==5)
{
FACTime[i]=Alloc;
}
if (priority[i]==6)
{
FACTime[i]=Alloc+Allpri6;
}
if (priority[i]==7)
{
FACTime[i]=Alloc+Allpri47;
}
if (priority[i]==8)
{
FACTime[i]=Alloc+Allpri38;
}
if (priority[i]==9)
{
FACTime[i]=Alloc+Allpri29;
}
if (priority[i]==10)
{
FACTime[i]=Alloc+Allpri110;
}
}
int FTimeND;
FTimeND = FACTime[2];
float FTimeDec;
FTimeDec = FACTime[2]-FTimeND;
int FTime;
FTime = FTimeDec*60;
cout <<FTimeND<<" hours and "<<FTime<< " minutes\n";
return 0;
}
int main()
{
bodyProgram();
return 0;
}
Намеченный выход для этого:
'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
10 hours and 22 minute
x hours and x minutes'
Однако это выход я получаю:
'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";
Я не могу найти решение для этого, и даже преобразование вывода -2147483648 в шестнадцатеричное не помогает. Если я заберу код, он выводит все нормально, но с этим он выводит это. Вся помощь приветствуется.
Какой ваш вход? – Axalo
@Axalo Я забыл упомянуть, что мой вход включен в выход. Просто посмотрите рядом с подсказкой для ввода. – Sunny
Последняя часть не имеет никакого смысла. Должно ли 'FACTime [2] -FTimeND' всегда приводить к 0, поскольку оба операнда равны? – Axalo