Un desafío para los interesados

Iniciado por LearningSpanishProgrammer, 9 Septiembre 2011, 03:30 AM

0 Miembros y 1 Visitante están viendo este tema.

LearningSpanishProgrammer

Normalmente, tenemos personas hacendo preguntas, pero, no esta vez

Este es un desafío para quen quiere: Dado un numero


int i = 389438


Tiene que imprimir el número invertido (en este caso 834983)

Sin necesidad de utilizar arreglos, tambíen no puede convertir a la cadena. No puede usar variable auxiliar y solo puede usar el 'for' una vez.
Estoy aprendiendo español, y tu estas aprendiendo programación

raul338

Pensé que iba a ser mas difícil, de todas formas lo hice en vb :xD de la misma forma que se puede hacer en C++

http://pastebin.com/EhvJ6KAw

LearningSpanishProgrammer

No puede usar variable auxiliar

Su resposta esta buena, pero su condición de parada no es muy buena
Estoy aprendiendo español, y tu estas aprendiendo programación

raul338

Cita de: LearningSpanishProgrammer en  9 Septiembre 2011, 03:51 AM
Su resposta esta buena, pero su condición de parada no es muy buena
No entendí lo de "parada", pero en vb no se puede llamar a un for sin una variable, para eso usar While/Do (que son casos especiales del for :P)

Código (cpp) [Seleccionar]

int i = 389438;
for (; i != 0;) {
    // aca no recuerdo mucho la funcion para imprimir xD
    printf(i % 10);
    i = i / 10;
}

rir3760

Supongo es un desafió para los principiantes, ¿Correcto?

Pero hay detalles. El primero es, dependiendo de la implementación, el valor 389438 puede ser de tipo "long". Y el segundo la aproximación con un "for" funciona pero no podría manejar el caso especial del valor cero (si se debe tener este en cuenta hay que cambiar el bucle "for" por un "do ... while").

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

PiroskY

Estaría bueno que estén mejor explicadas las limitaciones.

Y también los casos para los cuales tendría que funcionar, a menos de que simplemente tenga que funcionar para ese numero.

Alien-Z

#6
Cita de: PiroskY en 12 Septiembre 2011, 17:24 PM
Estaría bueno que estén mejor explicadas las limitaciones.

Y también los casos para los cuales tendría que funcionar, a menos de que simplemente tenga que funcionar para ese numero.

El que ha planteado esta cuestión le cuesta un poco expresarse en castellano, aun asi está muy bien explicado:

Dado el número: int i = 389438
-Tienes que imprimir dicha cifra invertida (en este caso 834983)
-No se pueden usar arrays
-No se puede convertir este número a cadena
-No se pueden usar variables auxiliares
-Solo se puede utilizar el bucle "for" una vez

Es muy sencillo, quizá asi lo veas más claro aunque ya lo ha resuelto raul338.

CitarNo entendí lo de "parada", pero en vb no se puede llamar a un for sin una variable, para eso usar While/Do

En C++ si se puede, es lo que has hecho en tu ejemplo, la única variable que has usado es la del propio número.

Saludos.

PiroskY

No me refiero a eso.

Mira, este programa resuelve el problema:

int main()
{
    int i = 389438
    cout >> "834983";
    return 0;
}

Yo quería algo como; números positivos, cualquier numero, etc.

Alien-Z

#8
Cita de: PiroskY en 12 Septiembre 2011, 17:49 PM
No me refiero a eso.

Mira, este programa resuelve el problema:

int main()
{
int i = 389438
cout >> "834983";
return 0;
}

lol... ¡hay que imprimir el número invertido pero usando codes, no con un cout!  :xD

CitarYo quería algo como; números positivos, cualquier numero, etc.

Vamos a ver, tú tienes la variable "int i = 389438", y apartir de ahi con funciones, operaciones, bucles, etc. debes obtener el número inverso, es asi de sencillo.

$Edu$

Ya lo hiciste alienz o que? esque lo iba a hacer ahora, pero si ya lo hicieron 0 ganas xDD es usando mod y listo