C语言转换阿拉伯数字为罗马数字代码片段
#include <iostream>
#include <cstring>
using namespace std;
// prototype for function
int dec_romana (int num);
int main(int argc, char *argv[])
{
int numerito;
cout << "Por favor introduzca un numero entre 1 y 3999: ";
cin >> numerito;
dec_romana( numerito );
system("PAUSE");
return EXIT_SUCCESS;
}
int dec_romana (int num)
{
int numeros[8] = {1,5,10,50,100,500,1000,5000},i,p;
string letras[8] = {"I","V","X","L","C","D","M"},romano;
if(num<=0)
{
cout << " Somos buenos, pero no magos." << endl;
}
else if(num<=3999)
{
while(num > 0)
{
i = 0;
while(i < 7)
{
while(num >= numeros[i] && num < numeros[i+1])
{
p = i%2;
if(num >= numeros[i+1] - numeros[i-p])
{
romano = romano + letras[i-p] + letras[i+1];
num = num-(numeros[i+1]-numeros[i-p]);
}
else
{
romano = romano + letras[i];
num = num-numeros[i];
}
}
i++;
}
}
cout << romano << endl;
}
else
{
romano = "Fuera de rango.";
cout << romano << endl;
}
}
