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;
}



5 comentarios:

  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.

    ResponderEliminar
    Respuestas
    1. 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. ";
      }

      }

      Eliminar
  2. me podrían ayudar de transformar un numero a romano pero usando función

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

    ResponderEliminar