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; }
me pueden ayudar con este ejecicio en C++:
ResponderEliminarDiseñ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.
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.
Eliminar#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. ";
}
}
Hey, que pasó con el 10000?
ResponderEliminarme podrían ayudar de transformar un numero a romano pero usando función
ResponderEliminarhola! una pregunta, despues de eso como puede hacer para pasar ese numero romano pero a clave morse?
ResponderEliminarnaissss
ResponderEliminarOk todo bien, el programa funciona pero no termino de entender cual es la función de
ResponderEliminarunidades = numero % 10; numero /= 10;
decenas = numero % 10; numero /= 10;
centenas = numero % 10; numero /= 10;
millares = numero % 10; numero /= 10;
Me explicas?
yo tampoco lo entendi al principio pero aqui va:
EliminarEJEMPLO: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.
Me gustaría saber como hacer el ejercicio con un numero de 5 o mas cifras, ya que no encuentro la forma de escribir el numero 5000 en romano gracias.
ResponderEliminarse repiten los mismos numeros pero con una linea arriba de ellos por ello solo llega a 3000
EliminarHey me podrían ayudar
ResponderEliminarRealice 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);