求一个 阿拉伯,罗马数字转换c++程序 的流程图

来源:百度知道 编辑:UC知道 时间:2024/05/17 23:59:19
#include <iostream>

using namespace std;

int arr1[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
string arr2[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};

string covert2Roman(int n)
{
string s;
int i=0;
while(n)

{
if(n>=arr1[i])

{
n-=arr1[i];
s+=arr2[i];
}
else

{
i++;
}
}
return s;
}

int main()
{
int n;
while(cin>>n)

{
cout<<covert2Roman(n)<<endl;
}
}

谢谢

传图了

汉一个,效率太差了吧?还要搜索一遍,直接对应查找到值返回就可以了。
class Convers
{
private:
typedef map<int,string> RomanMap;
typedef RomanMap::iterator RomanItor;
RomanMap romanmap;
RomanItor romanite;
public:
Convers();
~Convers();
string ConverRoma(int index);
}
构造函数里初始化常量的map表,析构函数里面将表清空。
string Convers::ConverRoma(int index)
{
try