我正在編寫這個程序設計任務,該程序任務是根據用戶輸入的月份和年份,創建一個處理雜誌訂閱續訂和取消通知的程序。該程序的一部分着重於重用舊代碼(這是擴展交換機所來自的)。我使用重複使用的代碼而不是顯示實際月份的功能將月份與數字(1-12,與每個月相關)等同起來。我的問題是,我試圖做一個單獨的函數,將該數字轉換爲月份的實際名稱。這是我到目前爲止有:雜誌訂閱程序的用戶自定義功能
#include <iostream>
#include <string>
#include <iomanip>
#include <cstdlib>
using namespace std;
void getMonth(char first, char second, char third, int& monthNumber);
void getYear(int& yearNumber);
void convertMonthNumber(int monthNumber, string& month);
int main()
{
char first, second, third;
int monthNumber = 0;
int yearNumber = 0;
string month;
cout << "Subscription Evaluation Program";
cout << endl << endl;
getMonth(first, second, third, monthNumber);
getYear(yearNumber);
convertMonthNumber(monthNumber, month);
cout << "The current date is " << month << " " << yearNumber; //Test to see if convertMonthNumber works
system("PAUSE");
}
void getMonth(char first, char second, char third, int& monthNumber)
{
cout << "Enter first letter of the current month: ";
cin >> first;
switch(first)
{
case 'F':
case 'f':
{
int montNumber = 2;
}
break;
case 'S':
case 's':
{
int monthNumber = 9;
}
break;
case 'O':
case 'o':
{
int monthNumber = 10;
}
break;
case 'N':
case 'n':
{
int monthNumber = 11;
}
break;
case 'D':
case 'd':
{
int monthNumber = 12;
}
break;
case 'A':
case 'a':
{
cout << "Enter second character of month: ";
cin >> second;
switch(second)
{
case 'P':
case 'p':
{
int monthNumber = 4;
}
break;
case 'U':
case 'u':
{
int monthNumber = 8;
}
break;
default:
cout << "Unknown Month";
cout << endl;
}
}
break;
case 'J':
case 'j':
{
cout << "Enter second character of month : ";
cin >> second;
switch(second)
{
case 'A':
case 'a':
{
int monthNumber = 1;
}
break;
case 'U':
case 'u':
cout<<"\nEnter third character: ";
cin >> third;
switch(third)
{
case 'L':
case 'l':
{
int monthNumber = 7;
}
break;
case 'N':
case 'n':
{
int monthNumber = 6;
}
break;
default:
cout << "\nUnknown Month";
}
break;
default:
cout << "\nUnknown Month";
cout << endl;
}
break;
case 'M':
case 'm':
cout << "Enter second and third characters: ";
cin >> second;
cin >> third;
switch(second)
{
case 'A':
case 'a':
{
switch(third)
{
case 'R':
case 'r':
{
int monthNumber = 3;
}
break;
case 'Y':
case 'y':
{
int monthNumber = 5;
}
break;
default:
cout << endl << "Unknown Month";
cout << endl;
}
}
break;
default:
cout << endl << "Unknown Month";
cout << endl;
}
break;
default:
cout << endl << "Unknown Month";
cout << endl;
return;
}
}
}
void getYear(int& yearNumber)
{
const int LOW_YEAR_LIMIT = 2012;
const int HIGH_YEAR_LIMIT = 2017;
do{
cout << "Enter current year (4 digits): ";
cin >> yearNumber;
if (yearNumber < LOW_YEAR_LIMIT || yearNumber >= HIGH_YEAR_LIMIT){
cout << endl;
cout << "Invalid year. Please enter again.";
cout << endl << endl;
}
}while (yearNumber < LOW_YEAR_LIMIT || yearNumber >= HIGH_YEAR_LIMIT);
return;
}
void convertMonthNumber(int monthNumber, string& month)
{
if (monthNumber = 1)
string month = January;
else if (monthNumber = 2)
string month = February;
else if (monthNumber = 3)
string month = March;
else if (monthNumber = 4)
string month = April;
else if (monthNumber = 5)
string month = May;
else if (monthNumber = 6)
string month = June;
else if (monthNumber = 7)
string month = July;
else if (monthNumber = 8)
string month = August;
else if (monthNumber = 9)
string month = September;
else if (monthNumber = 10)
string month = October;
else if (monthNumber = 11)
string month = November;
else if (monthNumber = 12)
string month = December;
return;
}
所以我把你的一些建議和這樣做;它不會返回這個月。
void convertMonthNumber(int monthNumber, string& month)
{
const string JANUARY = "January";
const string FEBRUARY = "February";
const string MARCH = "March";
const string APRIL = "April";
const string MAY = "May";
const string JUNE = "June";
const string JULY = "July";
const string AUGUST = "August";
const string SEPTEMBER = "September";
const string OCTOBER = "October";
const string NOVEMBER = "November";
const string DECEMBER = "December";
if (monthNumber == 1)
month = JANUARY;
else if (monthNumber == 2)
month = FEBRUARY;
else if (monthNumber == 3)
month = MARCH;
else if (monthNumber == 4)
month = APRIL;
else if (monthNumber == 5)
month = MAY;
else if (monthNumber == 6)
month = JUNE;
else if (monthNumber == 7)
month = JULY;
else if (monthNumber == 8)
month = AUGUST;
else if (monthNumber == 9)
month = SEPTEMBER;
else if (monthNumber == 10)
month = OCTOBER;
else if (monthNumber == 11)
month = NOVEMBER;
else if (monthNumber == 12)
string month = DECEMBER;
return;
}