C++将输入的罗马数据化为10进制数
1.1 需求分析::
程序主要解决的是:将输入的罗马数据化为10进制数。假设罗马数据中只使用如下7个“基值”字母:M、D、C、L、X、V、I,分别用来表示1000、500、100、50、10、5、1。如,罗马数据LXXXVII表示10进制的87。
将输入的10进制正整数转换为罗马数据。假设罗马数据中只使用“基值”字母:M、D、C、L、X、V、I,分别用来表示1000、500、100、50、10、5、1。
程序执行的结果:
1.2 概要设计:
本程序为一个翻译程序,肯将一种表达形式换算成另一种表达形式。该题是把罗马数字转换成十进制数,初步设想:输入一个字符数组,即一个罗马数字,然后按照其位数上的权值展开后输出,即输出一个十进制数。
流程图:
1.3 详细设计与编码:见上传程序。
1.4 调试分析:
该程序if else语句较多,所以在编起来有点绕口,所以在编写的时候要注意些,同时要根据题目的要求对准每个字符的权值,然后赋给a即可。
调试中的问题及总结:
1.定义int型的基值,并初始化为0,否则其值是一个任意的。
1.5 用户使用说明:
用户在使用过程中只需按照要求输入正确的罗马数字即可。
1.6 设计心得:
该题目设置较为简单,但是程序编写较为繁琐,做本次实验需要很大的耐心和信心,做完本次实验使我懂得做实验不仅要有技术还需要细心和耐心。
#include<iostream>
#include<string>
using namespace std;
void main()
{
char c='y';
int select,d=0;
string rome;//罗马数据
while(c!='n')
{
cout<<"请选择:"<<endl;
cout<<"罗马数据--->10进制数(按1)"<<endl;
cout<<"10进制数--->罗马数据(按2)"<<endl;
cin>>select;
cout<<endl;//选择模式
if(select==1)
{
cout<<"请输入罗马数据:";
cin>>rome;
int i=0;
for(i=0;rome[i]!='\0';i++)
{
if(rome[i]=='M') d=d+1000;
if(rome[i]=='D') d=d+500;
if(rome[i]=='C') d=d+100;
if(rome[i]=='L') d=d+50;
if(rome[i]=='X') d=d+10;
if(rome[i]=='V') d=d+5;
if(rome[i]=='I') d=d+1;
}
cout<<'\n'<<"转化成十进制数为:"<<d<<endl;
}
if(select==2)
{
原文请找腾讯752018766辣,文-论'文.网http://www.751com.cn/
V=(d-M*1000-D*500-C*100-L*50-X*10)/5;
I=d-M*1000-D*500-C*100-L*50-X*10-V*5;
int str[7]={M,D,C,L,X,V,I};
char t[7]={'M','D','C','L','X','V','I'};
int i,j;
cout<<'\n'<<"转化成罗马数据为:";
for(i=0;i<7;i++)
for(j=0;j<str[i];j++)
cout<<t[i];
}
cout<<endl;
cout<<"继续吗?YES(y)/NO(n)"<<endl;
cin>>c;
}
cout<<"谢谢使用!"<<endl; 1861