function to convert from arabic to roman numbers

JLChafardet 0 Tallied Votes 214 Views Share

this is the other part of my 2nd semester, first quarter project for programming 2.

a simple function to convert from arabic numbers to roman numbers.

#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;
         }
}
minwei86 0 Newbie Poster

anyone can explain the code for me in english version..i don't understnad

JLChafardet 0 Newbie Poster

sorry for the late response, the code is prety self explainatory.

to avoid usage of special roman characters, input number cannot be higher than 3999, then loops while number is greater than 0, then you keep internally looping to start adding letters to the roman number, and substracting to the number value and repeat.

William Hemsworth 1,339 Posting Virtuoso

Looks good, the only thing i'll complain about is that system("PAUSE")

JLChafardet 0 Newbie Poster

well you can use getchar or whatever pausing method you like, its not a must to use system("PAUSE") ;)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.