【发布时间】:2014-11-12 15:20:41
【问题描述】:
我必须创建一个程序来将罗马数字转换为十进制数字,我将得到垃圾值作为输出。 事实是我已经仔细检查了我的逻辑,它似乎是正确的。
我该如何纠正它?
这是我的代码:
#include<iostream>
#include<cstring>
using namespace std;
class RomanType
{
char str[10];
int d;
public:
void accept()
{
cout<<"Enter Roman No. in capitals:"<<endl;
cin>>str;
convert(str);
}
void convert(char str1[10])
{
int j=0;
for(j=0;j<strlen(str1);j++)
{
if( str1[j]=='I')
{
if(str1[j+1]=='V' || str1[j+1]=='X')
{
d=d-1;
cout<<j<<endl;
}
else
{
d=d+1;
cout<<d<<endl;
}
}
if ( str1[j]=='V')
d=d+5;
if(str1[j]=='X')
{
if(str1[j+1]=='L' || str1[j+1]=='C')
d=d-10;
else
d=d+10;
}
if(str1[j]=='L')
d=d+50;
if( str1[j]=='C')
{
if(str1[j+1]=='D' || str1[j+1]=='M')
d=d-100;
else
d=d+100;
}
if(str1[j]=='D')
d=d+500;
if(str1[j]=='M')
d=d+1000;
}
}
void display()
{
cout<<"It's decimal equivalent is="<<d<<endl;
}
};
main()
{
RomanType obj;
obj.accept();
obj.display();
}
【问题讨论】:
-
你应该使用
std::string而不是char的数组。 -
告诉我们什么输入产生什么垃圾输出
-
好吧,我发现 VI 产生 -1220155669,这肯定是错误的!
-
@Borgleader- 好的,但是我将如何遍历字符串?
-
@musefan- 确实有帮助,谢谢。现在我的代码正在运行,你可以看到它。 PS-我喜欢“时间不多了”,MuseFan!
标签: c++ data-conversion garbage roman-numerals