elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Invertir un número dado
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Invertir un número dado  (Leído 1,728 veces)
BortizF

Desconectado Desconectado

Mensajes: 15



Ver Perfil
Invertir un número dado
« en: 18 Octubre 2017, 06:29 am »

Hola, chicos!

cómo puedo invertir un número dado, osea, si me dan 3421 que el programa me devuelva:
1243?
gracias...


En línea

Programar por programar no tiene sentido, lo que le da sentido a la programación es poder ver más allá. Sentarte en frente de tu máquina y saber que vas a entrar a un mundo diferente, a un mundo más allá de los perjuicios, de los rencores, más allá del odio y la envidia. Es darle vida a algo sin sentido, es amar lo que haces. Esto es un arte, una pasión.
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.458



Ver Perfil
Re: Invertir un número dado
« Respuesta #1 en: 18 Octubre 2017, 06:37 am »

basicamente lo que se hace es un ciclo con una división, modulo y multiplicación


(siendo e entrada y s salida)
Código:
e: 1020304
s:0

/*ciclo 1*/
s = s + (e mod 10) //esto obtendrá el 4 final, que es el modulo de 10
-- s: 4

s = s*10 //para mover el valor un espacio a la izquierda
-- s: 40

e = e/10 //como son enteros no se guardan decimales
-- e: 102030

/*ciclo 2*/
s = s + (e mod 10) //esto obtendrá el 4 final, que es el modulo de 10
-- s: 40

s = s*10 //para mover el valor un espacio a la izquierda
-- s: 400

e = e/10 //como son enteros no se guardan decimales
-- e: 10203

/*ciclo 3*/
s = s + (e mod 10) //esto obtendrá el 4 final, que es el modulo de 10
-- s: 403

s = s*10 //para mover el valor un espacio a la izquierda
-- s: 4030

e = e/10 //como son enteros no se guardan decimales
-- e: 1020

/**** varios ciclos despues ***/

-- s: 40302010
-- e: 0

s = s/10 // (un factor de correción por el 0 sobrante)


el ciclo termina al la entrada ser 0... ahora intenta hacer el algoritmo y mostrar tu avance


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
BortizF

Desconectado Desconectado

Mensajes: 15



Ver Perfil
Re: Invertir un número dado
« Respuesta #2 en: 18 Octubre 2017, 16:16 pm »

Muchas gracias. Mira mi avance. Creo que lo hice para ese número y ahora tocará de una forma más genereal.
//#include <stdio.h>

int invierteNum(int num); //prototipo de función

int main(){
  int numero = 1020304;
  int invertido =  0;

  //INVOCA A LA FUNCIÓN PARA INVERTIR EL NÚMERO
  invertido = invierteNum(numero);

  printf("%d", invertido);

  return 0;
}

//FUNCIÓN PARA INVERTIR EL NÚMERO DADO

int invierteNum(int num){
  int invertido = 0;

  while(num > 0){
    invertido = invertido + (num%10);
    invertido = invertido * 10;
    num = num/10;
  }

  return invertido;



}
En línea

Programar por programar no tiene sentido, lo que le da sentido a la programación es poder ver más allá. Sentarte en frente de tu máquina y saber que vas a entrar a un mundo diferente, a un mundo más allá de los perjuicios, de los rencores, más allá del odio y la envidia. Es darle vida a algo sin sentido, es amar lo que haces. Esto es un arte, una pasión.
BortizF

Desconectado Desconectado

Mensajes: 15



Ver Perfil
Re: Invertir un número dado
« Respuesta #3 en: 18 Octubre 2017, 16:20 pm »

Disculpa mi ignorancia. Ya ese programa me sirve con cualquier número xD. Cómo? no sé :v

#include <stdio.h>

int invierteNum(int num); //prototipo de función

int main(){
  int numero = 0;
  int invertido =  0;

  printf("Inserte un numero entero");
  scanf("%d",&numero);

  //INVOCA A LA FUNCIÓN PARA INVERTIR EL NÚMERO
  invertido = invierteNum(numero);

  printf("%d", invertido);

  return 0;
}

//FUNCIÓN PARA INVERTIR EL NÚMERO DADO

int invierteNum(int num){
  int invertido = 0;

  while(num > 0){
    invertido = invertido + (num%10);
    invertido = invertido * 10;
    num = num/10;
  }
  
  invertido = invertido /10;

  return invertido;

}


MUCHAS GRACIAS!!
« Última modificación: 18 Octubre 2017, 16:24 pm por BortizF » En línea

Programar por programar no tiene sentido, lo que le da sentido a la programación es poder ver más allá. Sentarte en frente de tu máquina y saber que vas a entrar a un mundo diferente, a un mundo más allá de los perjuicios, de los rencores, más allá del odio y la envidia. Es darle vida a algo sin sentido, es amar lo que haces. Esto es un arte, una pasión.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines