C++ program help! Can\'t find what\'s wrong with my program.
The sample output is below and the program I wrote is below that. The program is good but if
you enter in a number of minutes like \"120\" it doesn\'t know what to do and crashes. Anything
helps. Thank you.
-In this project, the “current time” should be stored in 24-hour format. Only when the user
actually interacts with the program will the output and input be sometimes in 12-hour format.
Implement a main menu that will allow the user to (1) enter the current time, (2) add a forward
delta to the “current time”, (3) add a backwards delta to the “current time”, (4) display the
current time, (5) toggle the interface mode between 24-hour and 12-hour (should impact both
getTime and printTime). The program should identify invalid input for the main menu. When
entering the current time, only allow hours between 0 and 23 and minutes between 0 and 59.
Accept only ‘a’ and ‘p’ when entering the time in 12-hour mode. When entering time deltas, only
allow positive values or 0 (this is true for both forward and backwards time deltas).
Sample Output: (user input in italics)
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
> 1
Enter the time with whitespace separating the hours and minutes: 5 50
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
> 4
The current time is 05:50
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
> 2
Enter an increment of hours and minutes (separated by a space): 0 120
The new time would be 07:50
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
> 2
Enter an increment of hours and minutes (separated by a space): 2 20
The new time would be 08:10
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
> 5
12-hour mode turned on
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
> 1
Enter the time with whitespace separating the hours, minutes, and either \'a\' for am or \'p\' for
pm: 0 15 a
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
> 4
The current time is 12:15 am
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
> 3
Enter a decrement of hours and minutes (separated by a space): 1 15 The new time would be
11:00 pm
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
> 3
Enter a decrement of hours and minutes (separated by a space): 0 90 The new time would be
10:45 pm
*****This is the program I wrote:
#in.
C++ program help! Cant find whats wrong with my program.The sa.pdf
1. C++ program help! Can't find what's wrong with my program.
The sample output is below and the program I wrote is below that. The program is good but if
you enter in a number of minutes like "120" it doesn't know what to do and crashes. Anything
helps. Thank you.
-In this project, the “current time” should be stored in 24-hour format. Only when the user
actually interacts with the program will the output and input be sometimes in 12-hour format.
Implement a main menu that will allow the user to (1) enter the current time, (2) add a forward
delta to the “current time”, (3) add a backwards delta to the “current time”, (4) display the
current time, (5) toggle the interface mode between 24-hour and 12-hour (should impact both
getTime and printTime). The program should identify invalid input for the main menu. When
entering the current time, only allow hours between 0 and 23 and minutes between 0 and 59.
Accept only ‘a’ and ‘p’ when entering the time in 12-hour mode. When entering time deltas, only
allow positive values or 0 (this is true for both forward and backwards time deltas).
Sample Output: (user input in italics)
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
> 1
Enter the time with whitespace separating the hours and minutes: 5 50
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
> 4
The current time is 05:50
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
2. 6 - Exit
> 2
Enter an increment of hours and minutes (separated by a space): 0 120
The new time would be 07:50
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
> 2
Enter an increment of hours and minutes (separated by a space): 2 20
The new time would be 08:10
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
> 5
12-hour mode turned on
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
> 1
Enter the time with whitespace separating the hours, minutes, and either 'a' for am or 'p' for
pm: 0 15 a
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
3. > 4
The current time is 12:15 am
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
> 3
Enter a decrement of hours and minutes (separated by a space): 1 15 The new time would be
11:00 pm
1 - Enter a time
2 - Add delta to time
3 - Subtract delta from time
4 - Display current time
5 - Toggle 24-hour mode
6 - Exit
> 3
Enter a decrement of hours and minutes (separated by a space): 0 90 The new time would be
10:45 pm
*****This is the program I wrote:
#include // file processing
#include // cin and cout
#include // toupper
#include // setw
#include // cstring functions strlen, strcmp, strcpy stored in string.h
#include // string class
#include
using namespace std;
void calcDeltaFutr(int h, int m, int deltaH, int deltaM, int& hNew, int& mNew, bool mode);
void calcDeltaPast(int h, int m, int deltaH, int deltaM, int& hNew, int& mNew, bool mode);
void getTime(int &h, int &m, bool mode);
void rollTimeForward(int& h, int& m, bool mode);
void rollTimeBack(int& h, int& m, bool mode);
void printTime(int h, int m, bool mode);
int current_h=-1,current_m=-1;//current time..
4. bool mode=true;//24 hr format
int main()
{
int choice=-1,c=0;
while(choice!=6)//loop.. exits when user gives 6
{
cout<<" 1 - Enter a time 2 - Add delta to time 3 - Subtract delta from time 4 - Display
current time 5 - Toggle 24-hour mode 6 - Exit ";
cout<<"Enter ur choice:";
cin>>choice;//taking user choice
if((choice!=1)&&c==0)
{
cout<<" First Enter current time.... ";//errror message..
}
else if(choice==1)
{
c=1;
getTime(current_h,current_m,mode);//calling function that takes time from the user
//cout<>deltaH;cin>>deltaM;
calcDeltaFutr(current_h,current_m,deltaH,deltaM,hNew,mNew, mode);
current_h = hNew;
current_m = mNew;
cout<<" The New time would be:";
printTime(hNew,mNew,mode);
}
else if(choice==3)
{
int deltaH,deltaM,hNew,mNew;
cout<<"Enter an decrement of hours and minutes (separated by a space):";
cin>>deltaH;cin>>deltaM;
calcDeltaPast(current_h,current_m,deltaH,deltaM,hNew,mNew,mode);
current_h = hNew;
current_m = mNew;
cout<<" The New time would be:";
printTime(hNew,mNew,mode);
5. }
else if(choice==4)
{
cout<<" The Current time is:";
printTime(current_h,current_m,mode);
}
else if(choice==5)
{
if(mode==false)
mode = true;
else mode = false;
}
else
{
cout<<" Select appropriate choice... ";//error message
}
}
return 0;
}
void getTime(int& h,int& m,bool mode)//function that takes current time as input from the user
{
int hh,mm;
while(true)
{
if(mode==true)
{
cout<<" Enter the time with whitespace separating the hours and minutes:";
cin>>hh;
cin>>mm;
if(hh>=24 || mm >= 60|| hh<0 || mm <0)
{
cout<<" Error:invalid time..enter again.. ";
}
else break;
}
6. else
{
char c;
cout<<"Enter the time with whitespace separating the hours and minutes and (a/p)character:";
cin>>hh;
cin>>mm;
cin>>c;
cin.ignore();
if(hh>=13 || mm >= 60|| hh<0 || mm <0||(c!='a'&&c!='p'))
{
cout<<" Error:invalid time..enter again.. ";
}
else
{
if(c=='p')
{
if(hh!=12)hh=12+hh;
}
else if(hh==12)
hh=0;
break;
}
}
}
h=hh;m=mm;
//cout<=60)
{
hh=hh+mm/60;
mm=mm%60;
cout<24)
{
cout<<" Error : limit exceeded..Rounding hours.. ";
hh=hh%24;
}
7. h=hh;m=mm;
}
void printTime(int h, int m, bool mode)
{
if(mode==true)
{
if(h<9)
cout<<'0';
cout<
Solution
#include // file processing
#include // cin and cout
#include // toupper
#include // setw
#include // cstring functions strlen, strcmp, strcpy stored in string.h
#include // string class
#include
using namespace std;
void calcDeltaFutr(int h, int m, int deltaH, int deltaM, int& hNew, int& mNew, bool mode);
void calcDeltaPast(int h, int m, int deltaH, int deltaM, int& hNew, int& mNew, bool mode);
void getTime(int &h, int &m, bool mode);
void rollTimeForward(int& h, int& m, bool mode);
void rollTimeBack(int& h, int& m, bool mode);
void printTime(int h, int m, bool mode);
int current_h=-1,current_m=-1;//current time..
bool mode=true;//24 hr format
int main()
{
int choice=-1,c=0;
while(choice!=6)//loop.. exits when user gives 6
{
cout<<" 1 - Enter a time 2 - Add delta to time 3 - Subtract delta from time 4 - Display
current time 5 - Toggle 24-hour mode 6 - Exit ";
8. cout<<"Enter ur choice:";
cin>>choice;//taking user choice
if((choice!=1)&&c==0)
{
cout<<" First Enter current time.... ";//errror message..
}
else if(choice==1)
{
c=1;
getTime(current_h,current_m,mode);//calling function that takes time from the user
//cout<>deltaH;cin>>deltaM;
calcDeltaFutr(current_h,current_m,deltaH,deltaM,hNew,mNew, mode);
//current_h = hNew; //modified
//current_m = mNew; //modified
cout<<" The New time would be:";
printTime(hNew,mNew,mode);
}
else if(choice==3)
{
int deltaH,deltaM,hNew,mNew;
cout<<"Enter an decrement of hours and minutes (separated by a space):";
cin>>deltaH;cin>>deltaM;
calcDeltaPast(current_h,current_m,deltaH,deltaM,hNew,mNew,mode);
//current_h = hNew;
//current_m = mNew;
cout<<" The New time would be:";
printTime(hNew,mNew,mode);
}
else if(choice==4)
{
cout<<" The Current time is:";
printTime(current_h,current_m,mode);
}
else if(choice==5)
{
9. if(mode==false)
{
mode = true;
cout<<" 12 hour mode Turned off.. ";
}
else {
mode = false;
cout<<" 12 hour mode Turned on.. ";
}
}
else
{
cout<<" Select appropriate choice... ";//error message
}
}
return 0;
}
void getTime(int& h,int& m,bool mode)//function that takes current time as input from the user
{
int hh,mm;
while(true)
{
if(mode==true)
{
cout<<" Enter the time with whitespace separating the hours and minutes:";
cin>>hh;
cin>>mm;
if(hh>=24 || mm >= 60|| hh<0 || mm <0)
{
cout<<" Error:invalid time..enter again.. ";
}
else break;
}
else
{
10. char c;
cout<<"Enter the time with whitespace separating the hours and minutes and (a/p)character:";
cin>>hh;
cin>>mm;
cin>>c;
cin.ignore();
if(hh>=13 || mm >= 60|| hh<0 || mm <0||(c!='a'&&c!='p'))
{
cout<<" Error:invalid time..enter again.. ";
}
else
{
if(c=='p')
{
if(hh!=12)hh=12+hh;
}
else if(hh==12)
hh=0;
break;
}
}
}
h=hh;m=mm;
//cout<=60)
{
hh=hh+mm/60;
mm=mm%60;
cout<24)
{
cout<<" Error : limit exceeded..Rounding hours.. ";
hh=hh%24;
}
h=hh;m=mm;
}