|

18. C++ || Números romanos

Este es un ejercicio muy común que nos ponen en la universidad, hacer un programa en C++ que transforme de números decimales a romanos, vaya que es difícil para los que se están iniciando en la programación. Yo lo sé. Pero no se imaginan lo fácil y divertido que es este ejercicio en C++, como yo también sufrí mucho pensando en cómo resolverlo, les echo una mano resolviéndolo para ustedes, ¡sé que les encantará!

Tranformar números decimales a romanos en C++

#include <iostream> //  necesarios para el cin y cout 
using namespace std; 

int main () 
{
 int numero, unidades, decenas, centenas, millares;
 
 cout<< "Ingrese un numero"<<endl;
 cin>> numero;

 /*Esto se hace para separar el numero,
 tomen como ejemplo el numero 2103, a ese numero
 lo debemos transformar de la manera siguiente: 
 2 - 1 - 0 - 3 donde 3 va a ocupar la unidades, 
 0 las decenas, 1 las centenas y 2 los millares*/

 unidades = numero % 10; numero /= 10;
 decenas = numero % 10; numero /= 10;
 centenas = numero % 10; numero /= 10;
 millares = numero % 10; numero /= 10;

 switch (millares)
 {
  case 1: cout<<"M"; break;
  case 2: cout<<"MM"; break;
  case 3: cout<<"MMM"; break;
 }
 
 switch (centenas)
 {
  case 1: cout<<"C"; break;
  case 2: cout<<"CC"; break;
  case 3: cout<<"CCC"; break;
  case 4: cout<<"CD"; break;
  case 5: cout<<"D"; break;
  case 6: cout<<"DC"; break;
  case 7: cout<<"DCC"; break;
  case 8: cout<<"DCCC"; break;
  case 9: cout<<"CM"; break; 
 }
 
 switch (decenas)
 {
  case 1: cout<<"X"; break;
  case 2: cout<<"XX"; break;
  case 3: cout<<"XXX"; break;
  case 4: cout<<"XL"; break;
  case 5: cout<<"L"; break;
  case 6: cout<<"LX"; break;
  case 7: cout<<"LXX"; break;
  case 8: cout<<"LXXX"; break;
  case 9: cout<<"XC"; break; 
 }
 
 switch (unidades)
 {
  case 1: cout<<"I"; break;
  case 2: cout<<"II"; break;
  case 3: cout<<"III"; break;
  case 4: cout<<"IV"; break;
  case 5: cout<<"V"; break;
  case 6: cout<<"VI"; break;
  case 7: cout<<"VII"; break;
  case 8: cout<<"VIII"; break;
  case 9: cout<<"IX"; break;
 }

 return 0;
}

Similar Posts

11 Comments

  1. me pueden ayudar con este ejecicio en C++:
    Diseñar el algoritmo que permita a dos personas que desean intercambiar sus identidades (nombre, dirección, teléfono, edad) siempre y cuando la edad del primero fuese mayor que la edad de segundo en no más de 4 años. Ingresar los datos de cada persona y mostrar sus nuevas identidades o un mensaje mostrando la diferencia de edades que impidiera el intercambio.

  2. Ok, solo válidas la edad cuando la persona 2 es mayor que la uno al momento de mostrar la diferencia, espero que sí sea lo que ocupas.

    #include
    #include
    #include

    void ingresa();
    void intercambio();

    using namespace std;

    struct Persona1{
    char nom [40 ];
    char dir [ 20 ];
    int tel;
    int edad;
    }p1[2];

    struct Persona2{
    char nom [40 ];
    char dir [ 20 ];
    int tel;
    int edad;
    }p2;

    int i;

    int main()
    {
    cout<<"datos. "<>p1[i].tel;
    cout<<"edad: ";
    cin>>p1[i].edad;
    cout<0 && dif<=4 ){
    strcpy(p2.nom , p1[i+1].nom);
    strcpy(p1[i+1].nom , p1[i].nom);
    strcpy(p1[i].nom , p2.nom);

    strcpy(p2.dir , p1[i+1].dir);
    strcpy(p1[i+1].dir , p1[i].dir);
    strcpy(p1[i].dir , p2.dir);

    p2.tel = p1[i+1].tel;
    p1[i+1].tel = p1[i].tel;
    p1[i].tel = p2.tel;

    p2.edad =p1[i+1].edad;
    p1[i+1].edad = p1[i].edad;
    p1[i].edad = p2.edad;

    for(i=0; i<2; i++){
    cout<<i<<" nombre: "<<p1[i].nom<<endl;
    cout<<i<<" direccion: "<<p1[i].dir<<endl;
    cout<<i<<" telefono: "<<p1[i].tel<<endl;
    cout<<i<<" edad: "<<p1[i].edad<<endl<<endl;
    }
    }
    else{
    cout<<" no se puede cambiar la identidad hay una diferencia de "<<dif<<" años. ";
    }

    }

  3. hola! una pregunta, despues de eso como puede hacer para pasar ese numero romano pero a clave morse?

  4. Ok todo bien, el programa funciona pero no termino de entender cual es la función de

    unidades = numero % 10; numero /= 10;
    decenas = numero % 10; numero /= 10;
    centenas = numero % 10; numero /= 10;
    millares = numero % 10; numero /= 10;

    Me explicas?

  5. yo tampoco lo entendi al principio pero aqui va:

    EJEMPLO:1512

    1512/10= cociente=151,residuo=2
    151/10= cociente=15;residuo=1
    15/10=cociente=1;residuo=5
    1/10=cociente=0;residuo=1

    el residuo es igual a la cantidad de cada elemento(unidad,decena,centena,millar)
    quedaria:

    2 unidades
    1 decena
    5 centenas
    1 millar

    de esa forma lo simplificas para que la maquina trabaje.

  6. Hey me podrían ayudar
    Realice un programa con Programación orientada a objetos en C++ con class: CON UN

    METODO HAGA LA Conversión de enteros, entre 1 y 3999 a números ROMANOS (con constructor

    copia);

Leave a Reply

Your email address will not be published. Required fields are marked *