Home » C++ » Solved Programs on C++ » Integer representing a day of the year and translates it
C++ program that takes an integer representing a day of the year
Assuming that a year consists of 365 days, write a class named DayOfYear that takes an integer representing a day of the year and translates it to a string consisting of the month followed by the day of the month. The arrays for “days at end of month” and “month name” should be in the specification (header) file.
Add a loop in main so that multiple numbers can be input and “Q” to quit.
The program should do following:
Check for valid input
Use a separate *.h file for the DayOfYear class
Declare and initialize the arrays in the *.h file of the class
Design a Loop main to allow the user to use the program multiple time
Solution:
(this solution has two files main.cpp & DaysOfYearClass.h)
//main.cpp
#include <iostream>
#include <stdlib.h>
#include "DaysOfYearClass.h"
using namespace std;
int main(int argc, char** argv) {
//An instance of DaysOfYearClass
DaysOfYearClass dayOfYearObj;
//To hold the day
int day;
//temporary array to hold the user input
//to stor input & exit character 'Q'
char input[10];
//Display the purpose of the program
cout<<"\n This program convert a number \n";
cout<<<<"into a string representing the \n";
cout<<"month and day.\n\n";
//Variable to exit
char choice ='n';
while(choice != 'Q')
{
//Get the day as input from user
cout<<"\n\n 'Q' to quit";
cout<<"\n A whole number 1 & 365";
cin>>input;
choice = input[0];
day = atoi(input);
if(day>0 && day<=365)
{
//Set the day
dayOfYearObj.setDay(day);
//Dispaly the object
dayOfYearObj.print();
}
else
{
if(choice == 'Q')
cout<<"\n thanks ";
else
cout<<"\n[Error: * Invalid Input *] \n\n";
}
}
return 0;
}
//end of main.cpp
//DaysOfYearClass.h
#include#include
#include#include
using namespace std;
class DaysOfYearClass
{
private: int totalDays;
private:
struct monthAndDays{
int days;
char monthName[20];
};
struct monthAndDays obj[12];
public:
DaysOfYearClass()
{
strcpy(obj[0].monthName,"January");
obj[0].days = 31;
strcpy(obj[1].monthName,"February");
obj[1].days = 28;
strcpy(obj[2].monthName,"March");
obj[2].days = 31;
strcpy(obj[3].monthName,"April");
obj[3].days = 30;
strcpy(obj[4].monthName,"May");
obj[4].days = 31;
strcpy(obj[5].monthName,"June");
obj[5].days = 30;
strcpy(obj[6].monthName,"July");
obj[6].days = 31;
strcpy(obj[7].monthName,"August");
obj[7].days = 31;
strcpy(obj[8].monthName,"September");
obj[8].days = 30;
strcpy(obj[9].monthName,"October");
obj[9].days = 31;
strcpy(obj[10].monthName,"November");
obj[10].days = 30;
strcpy(obj[11].monthName,"December");
obj[11].days = 31;
}
~DaysOfYearClass()
{
}
void setDay(int dayValue)
{
this->totalDays = dayValue;
}
void print()
{
char tempMonth[20]="January";
for(int i=0; i<12; i++){
if(totalDays > obj[i].days )
{
totalDays -= obj[i].days;
strcpy(tempMonth, obj[i+1].monthName);
}
else
{
break;
}
}
cout<<"\n "<< tempMonth <<" "<<totalDays ;
}
};
//end of DaysOfYearClass.h
C++ Online Test
Compile C++ code here
Browse C++ Categories
Loops Conditional Functions Operators Structure Enum Data Types Inheritance Pointers Classes & Objects Vtable Type Casting New & Delete Namespaces Virtual Functions Abstract Class STL Singleton Class Exceptions C++11 C++17 C++20 Time & Space Complexity othersSwitch to C Questions