ローマ数字を10進数に変換するプログラムを作成することになっています。私は何かをしましたが、数学は間違っています。 MCMLXXVIIIに入ると、私は1978年になって2178年になるはずです。私はこの問題を解決するために部分文字列を使用していますが、私はどこにもいません。誰か私に何をすべきかアドバイスできますか?10進数に変換する
おかげ
#include<iomanip>
#include<iostream>
#include<string>
using namespace std;
int main(){
int M = 1000;
int D = 500;
int C = 100;
int L = 50;
int X = 10;
int V = 5;
int I = 1;
int num = 0;
cout << " Enter the Roman Numeral Value: ";
string roman;
cin >> roman;
string sub = roman.substr(0, 2);
cout << sub << endl;
for (int i = 0; i < roman.length(); i++)
{
switch (roman.at(i))
{
case 'M':
case 'm':
num += M;
break;
case 'D':
case 'd':
num += D;
break;
case 'C':
case 'c':
num += C;
break;
case 'L':
case 'l':
num += L;
break;
case 'X':
case 'x':
num += X;
break;
case 'V':
case 'v':
num += V;
break;
case 'I':
case 'i':
num += I;
break;
}
}
cout << num << endl;
}
_'num + = M; '_はぁ?本当に? 'num + = 1000;のようなものではありませんか? –
まだ初心者ですが、私は何をすべきかについて本当に分かりません。 – ProgrammerXYZ
コードはあなたが言ったことを正確に行います。あなたは単にそれらを一緒に加えることによってローマ数字を小数に変換しません。それは彼らがどのように働くかではありません。 C++コードを実装して実装する前に、C++とは何の関係もないローマ数字の仕組みを実際に理解する必要があります。あなたが必要ならば、C++コードを書くことで、ローマ数字に関するすべてのことを学んでから時間をかけてから、[あなたのラバーダックに助けを求める](https://en.wikipedia.org/wiki/Rubber_duck_debugging) –