Páginas

NIMADRES

Convertir números decimales a romanos en c++


Numeración romana:

Es un sistema de numeración que usa letras mayúsculas a las que se ha asignado un valor numérico.
Este tipo de numeración debe utilizarse lo menos posible, sobre todo por las dificultades de lectura y escritura que presenta.
Se usa principalmente:
  • En los números de capítulos y tomos de una obra.
  • En los actos y escenas de una obra de teatro.
  • En los nombres de papas, reyes y emperadores.
  • En la designación de congresos, olimpiadas, asambleas, certámenes...

Reglas:

 La numeración romana utiliza siete letras mayúsculas a las que corresponden los siguientes valores:

LetrasIVXLCDM
Valores1510501005001.000

Esta vez hice un programa sencillo donde el usuario ingresa un numero decimal y se devuelve el resultado en números romanos, 
Ejemplo:
#include <iostream>
#include <cstring>
#include <sstream>

using namespace std;
string convertir(int n){
    string cadena = "";
    while(n>=1000){
        cadena+="M";
        n-=1000;
    }
    if(n>=900){
        cadena+="DM";
        n-=900;
    }
    if(n>=500){
        cadena+="D";
        n-=500;
    }
    if(n>=400){
        cadena+="CD";
        n-=400;
    }
    while(n>=100){
        cadena+="C";
        n-=100;
    }
    if(n>=90){
        cadena+="XC";
        n-=90;
    }
    if(n>=50){
        cadena+="L";
        n-=50;
    }
    if(n>=40){
        cadena+="XL";
        n-=40;
    }
    while(n>=10){
        cadena+="X";
        n-=10;
    }
    if(n>=9){
        cadena+="IX";
        n-=9;
    }
    if(n>=5){
        cadena+="V";
        n-=5;
    }
    if(n>=4){
        cadena+="IV";
        n-=4;
    }
    while(n>=1){
        cadena+="I";
        n-=1;
    }
    return cadena;  
}
string romanos(string numero){
    int n = atoi(numero.c_str());
    numero = convertir(n);
    return numero;
}

int main(){
    string numero;
    cout << "Ingresa el numero decimal: ";
    getline(cin,numero);
    numero = romanos(numero);  
    cout << "El numero en Romanos es: " << numero;
    cin.get();    
    return 0;
}
Este programa no tiene mucho alcance, pero puede ser de ayuda para hacer uno mejor y mas complejo.
Les dejo una pagina con  mas información donde pueden convertir los números de manera automática: 
http://www.periodni.com/es/convertidor_numeros_romanos.html


4 comentarios:

  1. Un favor necesito un programa que me permita ingresar números entre 1 y 100 y me muestre el equivalente en romanos saludos....

    ResponderEliminar
    Respuestas
    1. pues este programa te sirve, lo difícil ya esta hecho, ahora haz uno que en vez de que te pida una sola vez, que te lo pida 100 veces con un for y listo.

      Eliminar
  2. En este if:

    if(n>=900){
    cadena+="DM";
    n-=900;
    }
    la linea cadena+="DM"; debe ser cadena+="CM";

    ResponderEliminar
  3. creo sale mas fácil con switch, lo estoy programando, ahora lo paso

    ResponderEliminar