0

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;
         }
}
3
Contributors
4
Replies
5
Views
8 Years
Discussion Span
Last Post by JLChafardet
0

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.

0

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

Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.