我正在爲我的C++課程開發一個程序。準則是創建一個將整數轉換爲羅馬數字的轉換器,規範是我必須至少使用一個while語句,while語句和一個開關。我的代碼大部分工作正常,但我不能涉及涉及4和9的特殊情況(例如(4,14,24 34等)40,(140,240等)400,(1400) ,2400,3400等)和(9,19,29,39等)90,(190,290等)900,9000))爲我工作。這是我在這一點上,代碼:C++:將整數轉換爲羅馬數字時出現混亂
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout << "Please enter an interger." << endl;
int num = 0;
cin >> num;
string rep = "";
switch(num)
{
case 40:
rep += "XL";
num -= 40;
break;
case 90:
rep += "XC";
num -= 90;
break;
}
if (num >= 1000){
rep += string(num/1000,'M');
num %= 1000;
}
if (num >= 500){
rep += string(num/500,'D');
num %= 500;
}
if (num >= 100){
rep += string(num/100,'C');
num %= 100;
}
if (num >= 50){
rep += string(num/50,'L');
num %= 50;
}
if (num >= 10){
rep += string(num/10,'X');
num %= 10;
}
if (num >= 5){
rep += string(num/5,'V');
num %= 5;
}
if (num >= 1){
rep += string(num,'I');
num %= 1;
}
cout << num << endl;
cout << rep << endl;
return 0;
}
這些都是一些非常愚蠢的規格。 (你的老師指定) – nhgrif
@nhgrif:代碼的表面目的是將一個整數轉換爲羅馬數字,但是這個目標完全沒用,即使它做了一些顯然是有建設性的事情。練習的真正目的是學習這三種控制結構,即使它可能與代碼的表面目的無關,這是非常有用的。從根本上說,真正的任務並不一定是學習語法的最佳方式:-) –
這就是爲什麼我認爲規範是愚蠢的。學習語法應該在課堂講座,測驗或作爲微不足道家庭作業任務的一部分完成:「寫一個for循環。」例如。像這樣的實際項目不應該超出程序應該作爲一個整體來完成的要求,並且應該對學生實施最佳控制結構的能力進行評分。 – nhgrif