Tengo como un mes de ser blogger y hasta ahora hago mi primera entrada
Bueno, estoy aprendiendo a programar en c++, en la universidad, voy a terminar mi primer semestre
.
Y como mi primer programa hice una aplicación de terminal que convierte un numero del 1 al 3999 en romano, entonces lo publico, para el que lo quiera usar.

Obviando el hecho de que un convertidor de tiempo shinigami a humano habría sido más útil.
Qué persona con dos dedos de frente se bajaría y ejecutaría un archivo binario así sin ningún tipo de garantía.

No sé ni el motivo por el cuál no pones directamente el código fuente (porque supongo que no pretenderás vender los derechos que tengas sobre este complicadísimo programa).
Obviando el hecho de que un convertidor de tiempo shinigami a humano habría sido más útil.
Qué persona con dos dedos de frente se bajaría y ejecutaría un archivo binario así sin ningún tipo de garantía.
No sé ni el motivo por el cuál no pones directamente el código fuente (porque supongo que no pretenderás vender los derechos que tengas sobre este complicadísimo programa).
...
Entiendo un poco tu comentario, pero tampoco es para que lo que el intento hacer (que la forma de querer compartirlo no es la correcta) lo menosprecies con aires de pedantes, en dado caso si su trabajo te parece cosa de medio pelo pues asómbranos tu, elaborando el convertidor de tiempo shinigami a humano que mencionas.
...
Entiendo un poco tu comentario, pero tampoco es para que lo que el intento hacer (que la forma de querer compartirlo no es la correcta) lo menosprecies con aires de pedantes, en dado caso si su trabajo te parece cosa de medio pelo pues asómbranos tu, elaborando el convertidor de tiempo shinigami a humano que mencionas.
Pues me parece que no lo entendiste en el contexto correcto, ya que no tengo afán de menospreciar a nadie (y menos a felipelvrd, porque su avatar me gusta mucho :) ), el tono era extremadamente jocoso (supongo que no puse suficientes smileys, aunque creía que quedaría claro con lo del convertidor de tiempo, ya que se dice que el autor del manga se inventaba los números).
Lo único que iba un poco en serio era lo de que nadie ejecutaría un binario que no sabe de dónde ha salido.
No es un convertidor de tiempo shinigami a humano pero creo que con algo así habría valido.
[...]
Lo compile y no me funciono, le terminal devolvió esto:
felipe@debian:~/Escritorio$ ./romanos.binUso:
./romanos.bin num (en el intervalo [1, 3999])
felipe@debian:~/Escritorio$
Bueno aquí esta el código fuente del mio:
#include <iostream>#include <cstdio>
using namespace std;
int main(int argc, char *argv[]) {
int x;
x=4000;
while((x>3999) || (x<1))
{
printf("Escriba un numero del 1 al 3999: ");
scanf("%d",&x);
}
printf("%d",x);
printf(" en números romanos es: ");
if(x>=3000)
{
printf("MMM");
x=x-3000;
}
else
{
if(x>=2000)
{
printf("MM");
x=x-2000;
}
else
{
if(x>=1000)
{
printf("M");
x=x-1000;
}
else
{
}
}
}
if(x>=900)
{
printf("CM");
x=x-900;
}
else
{
if(x>=800)
{
printf("DCCC");
x=x-800;
}
else
{
if(x>=700)
{
printf("DCC");
x=x-700;
}
else
{
if(x>=600)
{
printf("DC");
x=x-600;
}
else
{
if(x>=500)
{
printf("D");
x=x-500;
}
else
{
if(x>=400)
{
printf("CD");
x=x-400;
}
else
{
if(x>=300)
{
printf("CCC");
x=x-300;
}
else
{
if(x>=200)
{
printf("CC");
x=x-200;
}
else
{
if(x>=100)
{
printf("C");
x=x-100;
}
else
{
}
}
}
}
}
}
}
}
}
if(x>=90)
{
printf("XC");
x=x-90;
}
else
{
if(x>=80)
{
printf("LXXX");
x=x-80;
}
else
{
if(x>=70)
{
printf("LXX");
x=x-70;
}
else
{
if(x>=60)
{
printf("LX");
x=x-60;
}
else
{
if(x>=50)
{
printf("L");
x=x-50;
}
else
{
if(x>=40)
{
printf("XL");
x=x-40;
}
else
{
if(x>=30)
{
printf("XXX");
x=x-30;
}
else
{
if(x>=20)
{
printf("XX");
x=x-20;
}
else
{
if(x>=10)
{
printf("X");
x=x-10;
}
else
{
}
}
}
}
}
}
}
}
}
if(x==0)
{
}
else
{
if(x==9)
{
printf("IX");
}
else
{
if(x==8)
{
printf("VIII");
}
else
{
if(x==7)
{
printf("VII");
}
else
{
if(x==6)
{
printf("VI");
}
else
{
if(x==5)
{
printf("V");
}
else
{
if(x==4)
{
printf("IV");
}
else
{
if(x==3)
{
printf("III");
}
else
{
if(x==2)
{
printf("II");
}
else
{
printf("I");
}
}
}
}
}
}
}
}
}
printf("\n");
return 0;
}
[...]
Lo compile y no me funciono, le terminal devolvió esto:
felipe@debian:~/Escritorio$ ./romanos.bin
Uso:
./romanos.bin num (en el intervalo [1, 3999])
felipe@debian:~/Escritorio$
Tienes que pasarle el número como argumento. (Al menos eso quería que dijese el mensaje, no sé si se habrá entendido).
Pues tu codigo.. funciona pero no has pensado en hacerlo con divisiones sucesivas ? y todo eso con un contador dentro de un while? el codigo seria un poco mas complicado pero fuera mas corto... te lo dejo por si te entra la curiosidad... vere si en la noche pongo mi version de esta forma, como te digo, aun asi me parece muy bueno tengo muchos compañers que no lograran hacer eso simplemente por pereza. Vamos sigue asi!
Pues tu codigo.. funciona pero no has pensado en hacerlo con divisiones sucesivas ? y todo eso con un contador dentro de un while? el codigo seria un poco mas complicado pero fuera mas corto... te lo dejo por si te entra la curiosidad... vere si en la noche pongo mi version de esta forma, como te digo, aun asi me parece muy bueno tengo muchos compañers que no lograran hacer eso simplemente por pereza. Vamos sigue asi!
Aplicando esa idea con python:
def Decimal2Romano(numero):
conversion={1:"I", 4:"IV", 5:"V", 9: "IX", 10:"X", 40:"XL", 50:"L", 90:"XC", 100:"C", 400:"CD", 500:"D", 900:"CM", 1000:"M"}
resultado=""
for decimal, romano in sorted(conversion.items(), reverse=True):
while numero >= decimal:
numero -= decimal
resultado += romano
return resultado
if __name__ == "__main__":
import sys
print Decimal2Romano(int(sys.argv[1]))
Por qué me gustará python?
jjgomera@ordenata:~/downloads$ python ejemplo.py 3987MMMCMLXXXVII
Pues tu codigo.. funciona pero no has pensado en hacerlo con divisiones sucesivas ? y todo eso con un contador dentro de un while? el codigo seria un poco mas complicado pero fuera mas corto... te lo dejo por si te entra la curiosidad... vere si en la noche pongo mi version de esta forma, como te digo, aun asi me parece muy bueno tengo muchos compañers que no lograran hacer eso simplemente por pereza. Vamos sigue asi!
Aplicando esa idea con python:
def Decimal2Romano(numero):
conversion={1:"I", 4:"IV", 5:"V", 9: "IX", 10:"X", 40:"XL", 50:"L", 90:"XC", 100:"C", 400:"CD", 500:"D", 900:"CM", 1000:"M"}
resultado=""
for decimal, romano in sorted(conversion.items(), reverse=True):
while numero >= decimal:
numero -= decimal
resultado += romano
return resultado
if __name__ == "__main__":
import sys
print Decimal2Romano(int(sys.argv[1]))
Por qué me gustará python?
jjgomera@ordenata:~/downloads$ python ejemplo.py 3987MMMCMLXXXVII
La verdad es que lo hice rápido y a lo guarro, pero la versión en C también puede acortarse bastante más usando un array, y un solo switch dentro de un bucle for.
Aunque la verdad es que con todo y eso, python es bastante más conciso.
EDITO: Me refería a algo así.