What are some things I should do to make this program more efficient, easier to read, etc.
I'm sure my program is pretty noobish but I would like to improve.
I'm sure my program is pretty noobish but I would like to improve.
#include <iostream>
#include <string>
#include <sstream>
#include <conio.h>
using namespace std;
void displayMonth(int maxDays, int monthNum);
int main()
{
short month = 0;
string myStr;
while (month <= 0 || month > 12) //Asks for user input until valid number recieved
{
int monthDays[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; //Max number of days per month
cout << "Enter the number for any month of 2013 (1-12): ";
getline(cin, myStr);
stringstream(myStr) >> month;
switch (month)
{
case 1:
displayMonth(monthDays[0], 1); //Second parameter represents the month number
break; //Ex: 5 will display May
case 2:
displayMonth(monthDays[1], 2);
break;
case 3:
displayMonth(monthDays[2], 3);
break;
case 4:
displayMonth(monthDays[3], 4);
break;
case 5:
displayMonth(monthDays[4], 5);
break;
case 6:
displayMonth(monthDays[5], 6);
break;
case 7:
displayMonth(monthDays[6], 7);
break;
case 8:
displayMonth(monthDays[7], 8);
break;
case 9:
displayMonth(monthDays[8], 9);
break;
case 10:
displayMonth(monthDays[9], 10);
break;
case 11:
displayMonth(monthDays[10], 11);
break;
case 12:
displayMonth(monthDays[11], 12);
break;
default:
cout << "Sorry but you must enter 1-12, restarting...\n";
}
}
getch();
return 0;
}
void displayMonth(int maxDays, int monthNum) //Displays the month and days
{ //recieves the month number and ammout of days per month
short ctr = 0;
short ctr2 = 0;
string weeks[7] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",};
string monthName[13] = {"", "January", "February", "March", "April",
"May", "June", "July", "August",
"September", "October", "November", "December"};
cout << endl << monthName[monthNum] << ":\n"; //displays the month name by recieving month number
for (int i = 0; i <=6; ++i)
{
for (int j = 0,; j < 7; ++j)
{
if (ctr < 7) //used to display Sunday-Monday before displaying the days
{
cout << weeks[j] << "\t";
ctr++;
}
else if (ctr2 < maxDays) //limits ctr2 under the number of days in a month
cout << ++ctr2 << "\t";
}
cout << endl;
}
}