可能性の重複をint型作りは:
My output is outputting correctlyローマ数字を使用してプログラムを実行し、それらを
これは宿題の問題です。私はローマ数字のいくつかが正しくないことを知っています。私の先生は、値が正しい限り数値を正しく書く方法には気を付けません。
私はこのプログラムにいくつかの問題があります。私は、ユーザが「E」を押すことを要求することを除いて、whileループから抜け出す他の方法を知らない。
これを実行すると、出力はcout << "The first number is " << RomanNum1 << endl;
と変わります。これは、VやVIなどではなくEです。
私は関数を使うはずです。私はそれらを作ることについて心配していません。プログラムの一番下の部分は、先生が出力を見たいと思っているものです。どんな助けでも大歓迎です。
//This programs reads in Roman numerals and outputs the correct numerical value.
//This program will do simple math using Roman numerals and output a numerical value
#include <iostream>
using namespace std;
const char One = 'I';
const char Five = 'V';
const char Ten = 'X';
const char Fifty = 'L';
const char OneHundred = 'C';
const char FiveHundred = 'D';
const char OneThousand = 'M';
const char EXIT = 'E';
const char Plus = '+';
const char Minus = '-';
const char Times = '*';
const char Divide = '/';
const int ValueOfOne = 1;
const int ValueOfFive = 5;
const int ValueOfTen = 10;
const int ValueOfFifty = 50;
const int ValueOfOneHundred = 100;
const int ValueOfFiveHundred = 500;
const int ValueOfOneThousand = 1000;
int main(){
char RomanNum1, RomanNum2;
char Operation;
int Answer;
string Response;
int ICount = 0;
int VCount = 0;
int XCount = 0;
int LCount = 0;
int CCount = 0;
int DCount = 0;
int MCount = 0;
int Sum = 0;
cin >> RomanNum1;
while (RomanNum1 != EXIT){
if (RomanNum1 == One){
ICount++;
}
else if (RomanNum1 == Five){
VCount++;
}
else if (RomanNum1 == Ten){
XCount++;
}
else if (RomanNum1 == Fifty){
LCount++;
}
else if (RomanNum1 == OneHundred){
CCount++;
}
else if (RomanNum1 == FiveHundred){
DCount++;
}
else if (RomanNum1 == OneThousand){
MCount++;
}
else {
RomanNum1 = EXIT;
}
cin >> RomanNum1;
}
cin >> RomanNum2;
while (RomanNum2 != EXIT){
if (RomanNum2 == One){
ICount++;
}
else if (RomanNum2 == Five){
VCount++;
}
else if (RomanNum2 == Ten){
XCount++;
}
else if (RomanNum2 == Fifty){
LCount++;
}
else if (RomanNum2 == OneHundred){
CCount++;
}
else if (RomanNum2 == FiveHundred){
DCount++;
}
else if (RomanNum2 == OneThousand){
MCount++;
}
else {
RomanNum2 = EXIT;
}
cin >> RomanNum2;
}
cin >> Operation;
if (Operation == Plus){
Answer = RomanNum1 + RomanNum2;
Response = "sum";
}
else if (Operation == Minus){
Answer = RomanNum1 - RomanNum2;
Response = "difference";
}
else if (Operation == Times){
Answer = RomanNum1 * RomanNum2;
Response = "product";
}
else {
Answer = RomanNum1/RomanNum2;
Response = "quotient";
}
Sum = ValueOfOne * ICount + ValueOfFive * VCount + ValueOfTen * XCount
+ ValueOfFifty * LCount + ValueOfOneHundred * CCount + ValueOfFiveHundred
* DCount + ValueOfOneThousand * MCount;
cout << "The first number is " << RomanNum1 << endl;
cout << "The second number is " << RomanNum2 << endl;
cout << "Arithmetic operation is " << Operation << endl;
cout << "The " << Response << " of " << RomanNum1 << " and " << RomanNum2 << " is " << Sum << endl;
return 0;
}
/* here is what the output should be
Input for Run 1:
MCCXXVI
LXVIIII
+
DCX
MCI
-
LXVI
CCLXI
/
MD
XXX
/
LXVIIII
XXVIIII
*
The output for Test Run 1:
MCCXXVI
The first number is 1226
LXVIIII
The second number is 69
+
Arithmetic operation is +
The sum of 1226 and 69 is MCCLXXXXV (1295)
DCX
The first number is 610
MCI
The second number is 1101
-
Arithmetic operation is -
The difference of 610 and 1101 is -CCCCLXXXXI (-491)*/
を作成するための高い時間であるC++でする必要がある場合ローマ数字を整数の対応にリンクする配列。そうすることで、コードの管理が容易になり、コードをより細かく保つことができます。 – Moses
確かに、ローマ数字は正しく扱われませんが、どういうことがありますか?とにかく、あなたのコードは '-Wall -Wextra'を使っても警告を生成しないので、私はupvoteできます。 1つは頻繁にそれを見ない。 –
このプログラムでは配列を使用できません – user1237037