View previous topic :: View next topic |
Author |
Message |
wel Apprentice
Joined: 03 Sep 2003 Posts: 207
|
Posted: Fri Jan 07, 2005 8:44 pm Post subject: [Programación] ¿Cómo podría hacer ésto? |
|
|
Ya me ha fastidiado bastante, la verdad es que no sé cómo programarlo. Se trata de una función que toma un entero y, dígito a dígito, le da la vuelta. Es decir, si tenemos el entero 1101, el resultado sería 1011.
¿Alguna idea? |
|
Back to top |
|
|
t3n4k Tux's lil' helper
Joined: 17 Jun 2004 Posts: 109 Location: Maresme/Barcelona
|
Posted: Fri Jan 07, 2005 9:19 pm Post subject: |
|
|
Se trataría de descomponer el número en cantidad de unidades, decenas, centenar,miles,...
Code: |
int mil = (int) n / 1000;
n = n - mil*1000;
int cen = (int) n / 100;
n = n - cen*100;
int dec = (int) n / 10;
n = n - dec*10
int ud = n;
|
Luego lo deberías reconstruir a la inversa
Code: |
int resultado = ud * 1000 + dec * 100 + cen * 10 + mil;
|
La idea es esta, luego deberias controlar hasta donde vas dividiendo, segun el número puede que tengas que dividir entre 10.000 etc...
En tu ejemplo:
Code: |
int mil = (int) 1101 / 1000; /* mil = 1 */
n = 101;
int cen = (int) 101 / 100; /* cen = 1 */
n = 1;
int dec = (int) 1 / 10; /*dec = 0 */
n = 1;
int ud = (int) 1 / 1; /* ud = 1 */
int resultado = 1*1000 + 0*100 + 1*10 + 1*1; /* rsultado = 1011 */
|
Saludos |
|
Back to top |
|
|
BlackHand n00b
Joined: 11 Dec 2003 Posts: 8
|
Posted: Fri Jan 07, 2005 9:43 pm Post subject: |
|
|
el codigo seria algo asi:
/**********************************/
int n; // numero ingresado
int v=0; // numero invertido
int d,nn;
// asumo q se ingreso el numero en n;
nn=n;
do{
d = n%10;
v = v*10+d;
n = (n-d)/10;
}while(n>0);
// al final en v tendremos el numero n al reves
// en nn estara el numero original
/*********************************/
bueno con eso te vale para cualquier numero de digitos.
tu afinalo _________________ --
Black Hand
Amiga Addicts |
|
Back to top |
|
|
quelcom Guru
Joined: 16 Mar 2004 Posts: 306 Location: Catalonia
|
Posted: Fri Jan 07, 2005 11:06 pm Post subject: |
|
|
Un poco de Perl es ideal en este caso:
Code: | $numero = 11011110001;
@campos = split //, $numero;
@campos = reverse (@campos);
print @campos;
|
Code: | hades@Shinra perl $ perl numeros.pl
10001111011 |
4 linias y a correr |
|
Back to top |
|
|
Ferdy Retired Dev
Joined: 04 May 2002 Posts: 483 Location: España
|
Posted: Fri Jan 07, 2005 11:37 pm Post subject: |
|
|
Code: | echo 10101010101011101011 | rev |
Salu2.Ferdy |
|
Back to top |
|
|
kruncher n00b
Joined: 10 Mar 2004 Posts: 59
|
Posted: Fri Jan 07, 2005 11:38 pm Post subject: |
|
|
.... y que tal un poco de php ?
---------------------
echo strrev("12345");
---------------------
1 Linea y listo ! _________________ Web Log |
|
Back to top |
|
|
quelcom Guru
Joined: 16 Mar 2004 Posts: 306 Location: Catalonia
|
Posted: Sat Jan 08, 2005 12:09 am Post subject: |
|
|
Code: | echo 10101010101011101011 | rev |
Ese Ferdy... |
|
Back to top |
|
|
psm1984 l33t
Joined: 14 Oct 2003 Posts: 919
|
Posted: Sat Jan 08, 2005 12:54 am Post subject: |
|
|
En python
i=34
j=int(( str(i) [::-1]))
print "%d %d" % (i,j) |
|
Back to top |
|
|
IceFox Apprentice
Joined: 21 Jun 2004 Posts: 273 Location: Chile
|
Posted: Sat Jan 08, 2005 5:41 am Post subject: Re: [Programación] ¿Cómo podría hacer ésto? |
|
|
Lo quieres en algun lenguaje distinto de los ya mencionado ?? _________________ La vida no es sino una continua sucesión de oportunidades para sobrevivir.
-- Gabriel García Márquez |
|
Back to top |
|
|
wel Apprentice
Joined: 03 Sep 2003 Posts: 207
|
Posted: Sat Jan 08, 2005 1:04 pm Post subject: |
|
|
Jeje, gracias a todos. El lenguaje era C, pero apunto todas las sugerencias, como siempre.
Si a alguno le interesa responder este tipo de dudas, que se quede atento a su monitor porque entre hoy y mañana intentaré que mi versión de ls funcione, y tened por seguro que voy a meter la pata. |
|
Back to top |
|
|
|