Search⌘ K
AI Features

Age Calculator - Hacker Challenge Solution

Explore how to solve the age calculator challenge by applying modular functions and debugging strategies. Understand the development process of an efficient, well-structured program that enhances coding skills in problem-solving.

We'll cover the following...

Below is the complete implementation of the age calculator program. Click the “Run” button to see its output.

#include <iostream>
using namespace std;
//This Function is Simply Checking Dates.
bool isValidDate(int day, int month, int year);
int daysInAMonth(int month, int year);
//This Function is Comparing Both Dates And Validating them.
bool isGreater(int bDay, int bMonth, int bYear, int cDay, int cMonth, int cYear);
//This Function is Calculating Age.
void ageCalculator(int bDay, int bMonth, int bYear, 
                       int cDay, int cMonth, int cYear);
int main()
{
	int dob, mob, yob;    //date of birth, month of birth, year of birth
	int cd, cm, cy;       //current date, current month, current year
	do
	{
		cout << "Date of birth (day month year): ";
		cin >> dob >> mob >> yob;
	} 
            while (isValidDate(dob, mob, yob) == false);
	do
	{
		cout << "Current date (day month year): ";
		cin >> cd >> cm >> cy;
	} 
    while (isValidDate(cd, cm, cy) == false 
	    		|| isGreater(dob, mob, yob, cd, cm, cy) == false);
	
	ageCalculator(dob, mob, yob, cd, cm, cy);
	return 0;
}
bool isValidDate(int day, int month, int year)
{
	if (day <= 0 || day > daysInAMonth(month, year))
		return false;
	else
		return true;
}

//Birth_day,Birth_Month,Birth_Year,Current_Day,Current_Month,Current_Year
bool isGreater(int bDay, int bMonth, int bYear, 
                   int cDay, int cMonth, int cYear)
{
	if (cYear > bYear)
		return true;
	if (cYear < bYear)
		return false;
	if (cMonth > bMonth)
		return true;
	if (cMonth < bMonth)
		return false;
	if (cDay >= bDay)
		return true;
	else
		return false;
}

int daysInAMonth(int month, int year)
{
	int days=0;
	if (month == 4 || month == 6 || month == 9 || month == 11)
	{
		days = 30;
	}
	else if (month == 1 || month == 3 || month == 5 || month == 7 
		|| month == 8 || month == 10 || month == 12)
	{
		days = 31;
	}
	else if (month == 2 && year % 4 == 0)
	{
		days = 29;
	}
	else days = 28;
	return days;
}

void ageCalculator(int bDay, int bMonth, int bYear, int cDay, int cMonth, int cYear)
{
	int days = cDay - bDay;
	if (days<0)
	{
		cMonth--;		
		days += daysInAMonth(cMonth, cYear);
		if (days < 0)	
			//This could be possible in case of 1-31 and carry is 28/29
		{
			cMonth--;
			days += daysInAMonth(cMonth, cYear);
		}
	}
	int month = cMonth - bMonth;
	if (month<0)
	{
		cYear--;
		month += 12;
	}
	int year = cYear - bYear;
	cout << "Age is: " << year << " years " << month << " months " << days << " days " << endl;
}








Complete implementation of age calculator