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

Convertir números decimales a binarios en C++

El sistema binario es un sistema de numeración en el que los números se representan utilizando solamente las cifras cero y uno (0 y 1). Es el que se utiliza en las computadoras, debido a que trabajan internamente con dos niveles de voltaje, por lo cual su sistema de numeración natural es el sistema binario (encendido 1, apagado 0).

Un número binario  puede ser representado por cualquier secuencia de bits (dígitos binarios), que suelen representar cualquier mecanismo capaz de usar dos estados mutuamente excluyentes.


Esta vez se me ocurrió subir un programa muy parecido al de los Números Hexadecimales solo que ahora con números binarios. Mas de una persona ha intentado hacer un programa como este, en fin les dejo un ejemplo de como podrían hacer uno con funciones recursivas y ustedes lo pueden mejorar.




#include <iostream>
#include <cstring>
#include <sstream>

using namespace std;

void convertir(string &bin,stringstream &stream,int numero){
    int residuo;
    if(numero == 0 || numero == 1)
        stream << numero;
    else{
        residuo = numero%2;
        numero = numero/2;
        convertir(bin,stream,numero);
        stream << residuo;   
    }
    bin = stream.str();
}
string binario(string b){
    stringstream stream;
    string bin;
    int numero = atoi(b.c_str());
    convertir(bin,stream,numero);
    b = bin;
    return b;
}

int main(){
    string numero;
    cout << "Ingresa el numero decimal: ";
    getline(cin,numero);
    numero =  binario(numero);
    cout << "\nEl numero en binario es: " << numero;
    cin.get();
    return 0;   
}