C and C++ Programming Resources

Custom Search

Add time using structures in C++

Write a program having a structure named Time which has three integer data items i.e. hour, minute and second. The task is to add the variables of the Time data type though a function

void AddTime(Time *time1, Time *time2)

which takes as arguments the addresses of two Time type variables, adds these variables and stores the result in time2. The function must satisfy the following:

  1. If second exceeds 60 then add 1 in minutes and subtract 60 from seconds.
  2. If minute exceeds 60 then add 1 in hours and subtract 60 from minutes.
  3. If hour exceeds 24 then subtract 24 from hours.

Test this function and print the result in the calling function.

// Acknowledgment: Wahib-ul-Haq
#include<iostream>
#include<conio.h>

using namespace std;

struct Time
{
	int hour, minute, second;
};

void AddTime(Time *, Time * );

void main()
{
	Time var1, var2;
	for(int i=0;i<1;i++)
	{
		cout<<"for structure variable #"<<i+1<<" Enter the hours:";
		cin>>var1.hour; 
		cout<<"for structure variable #"<<i+1<<" Enter the minutes:";
		cin>>var1.minute; 
		cout<<"for structure variable #"<<i+1<<" Enter the seconds:";
		cin>>var1.second; 
		cout<<endl<<endl;
		
		cout<<"for structure variable #"<<i+2<<" Enter the hours:";
		cin>>var2.hour; 
		cout<<"for structure variable #"<<i+2<<" Enter the minutes:";
		cin>>var2.minute; 
		cout<<"for structure variable #"<<i+2<<" Enter the seconds:";
		cin>>var2.second; 

	}

	AddTime(&var1, &var2);

	cout<<"\nNew hours = "<<var2.hour;
	cout<<"\nNew minutes = "<<var2.minute;
	cout<<"\nNew seconds = "<<var2.second;
	cout<<endl;
}

void AddTime(Time *time1, Time *time2)
{

	time2->hour += time1->hour;
	time2->minute += time1->minute;
	time2->second += time1->second;

	if(time2->second > 60)
	{
		time2->minute += 1;
		time2->second -= 60;
	}

	if(time2->minute > 60)
	{
		time2->hour += 1;
		time2->minute -= 60;
	}

	if(time2->hour > 24)
	{
		time2->hour -= 24;
	}

}

There are No Comments to this post. You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response


Leave a Reply

You must be logged in to post a comment.