Hi
I am making a program that takes in a date (dd mm yyyy) & returns the day of the week(eg monday) of the input date.
My problem is that my fuction day_of_week is not returning the variable dayString into main. So dayString is not being output in main.
Any advice on whats is going wrong?
Below is the function playing up that should return dayString to main then main prints out the value of dayString.
string day_of_week(int day_numeral)
{
string dayString;
switch (day_numeral)
{
case 0:
return dayString = "Sunday";
break;
case 1:
return dayString = "Monday";
break;
case 2:
return dayString = "Tuesday";
break;
case 3:
return dayString = "Wednesday";
break;
case 4:
return dayString = "Thursday";
break;
case 5:
return dayString = "Friday";
break;
case 6:
return dayString = "Saturday";
break;
default:
return dayString = "wrong n_sum input";
}
}
My full program:
#include <iostream>
#include <string>
using namespace std;
struct dateType
{
int day;
int month;
int year;
};
// declare some functions if necessary
// you can refer to some examples introduced in week 12
void display(dateType date);
bool is_leapyear(dateType date);
int day_calculator(dateType date);
string day_of_week(int day_numeral);
int main()
{
dateType date;
string dayString;
int day_numeral;
// declare other variables if necessary
cout << "Enter a date in the form of dd mm yyyy: " << flush; // don't modify
cin >> date.day >> date.month >> date.year; // don't modify
// write your code here
// find the corresponding day of week of date2
// assign the corresponding string such as "Monday", "Tuesday" to dayString
day_calculator(date);
cout << dayString << endl; // don't modify
return 0; // don't modify
}
bool is_leapyear(dateType date)
{
bool leap_yr = false;
if (((date.year % 4) == 0) && ((date.year % 100) != 0) || date.year % 16 == 0)
{
return leap_yr = true;
}
else
return leap_yr = false;
}
int day_calculator(dateType date)
{
int century_numeral, year_numeral, month_numeral;
int sum;
int day_numeral;
int century = date.year / 100;
int decade = date.year % 100;
century_numeral = 2*(3 - century % 4);
year_numeral = (decade / 4);
if (date.month ==01 && is_leapyear(date)) {
month_numeral = 6;
}
else if (date.month == 02 && is_leapyear(date)) {
month_numeral = 2;
}
else if (date.month == 01 && !is_leapyear(date) || date.month == 10) {
month_numeral = 0;
}
else if (date.month == 02 && !is_leapyear(date)|| date.month == 03 || date.month == 11) {
month_numeral = 3;
}
else if (date.month == 04 || date.month == 07) {
month_numeral = 6;
}
else if (date.month == 9 || date.month == 12) {
month_numeral = 5;
}
else if (date.month == 05) {
month_numeral = 1;
}
else if (date.month == 06) {
month_numeral = 4;
}
else if (date.month == 8) {
month_numeral = 2;
}
sum = century_numeral + decade + year_numeral + month_numeral + date.day;
day_numeral = sum % 7;
day_of_week(day_numeral);
}
string day_of_week(int day_numeral)
{
string dayString;
switch (day_numeral)
{
case 0:
return dayString = "Sunday";
break;
case 1:
return dayString = "Monday";
break;
case 2:
return dayString = "Tuesday";
break;
case 3:
return dayString = "Wednesday";
break;
case 4:
return dayString = "Thursday";
break;
case 5:
return dayString = "Friday";
break;
case 6:
return dayString = "Saturday";
break;
default:
return dayString = "wrong n_sum input";
}
}