Foros del Web » Programación para mayores de 30 ;) » C/C++ »

invertir numeros

Estas en el tema de invertir numeros en el foro de C/C++ en Foros del Web. Bueno mas que nada estoy aprendiendo esto en mi colegio pero pss toi adelantado de ellos , me sirve para invertir numeros de 2 digitos, ...
  #1 (permalink)  
Antiguo 20/07/2011, 20:42
Avatar de ixhigo  
Fecha de Ingreso: julio-2011
Mensajes: 4
Antigüedad: 12 años, 9 meses
Puntos: 0
invertir numeros

Bueno mas que nada estoy aprendiendo esto en mi colegio pero pss toi adelantado de ellos , me sirve para invertir numeros de 2 digitos, pero con mas de 2 no sirve :S plsss ayuda q he estado todo el dia intentandolo plss >.<

#include<stdio.h>
#include<math.h>
main(){
int p,n,i,z,a,x,y;
p=0;

printf("Ingresa 1 numero csm =D \n ");
scanf("%d",&n);
i=0;
a=0;
y=n;
while(n!=0)
{

i=n%10;
n= n-i;
n=n/10;
p=p+1;


}
while(y!=0){
x= y%10;


p=p-1;
z= x*pow(10,p);
y= y-x;
y= y/10;
1
a=a+z;
}

printf("%d",a);

getchar(),getchar();
}
  #2 (permalink)  
Antiguo 20/07/2011, 21:27
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: invertir numeros

Hola amigo.

Te recomiendo que adelantes otros ciclos, mira la parte de Arreglos.

Cuando los conozcas, podras invertir un numero si:

1- Introduces el numero como una cadena de numeros en un arreglo.
2- Con un ciclo for recorres este arreglo empezando por el ultimo elemento hasta llegar al primero.

Saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #3 (permalink)  
Antiguo 21/07/2011, 08:17
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: invertir numeros

Si consideras numeros que pueden contenerse en un entero (o entero largo), en realidad los arreglos no son necesarios para resolver ese particular problema.

Si solo deseas escribir el nro invertido, sin almacenarlo, hacer un ciclo calculando el modulo 10 te da el ultimo digito, dividirlo por 10 te da el trozo izquierdo. Si deseas construir el nro invertido, bastaria con agregar la aritmetica (multiplicar x 10 y sumar el nuevo nro).

Algo parecido a (siendo "n" el nro, positivo)

Código C++:
Ver original
  1. inv = 0;
  2.   while( n >0 )
  3.   {
  4.       d = n % 10;
  5.       printf( "%d", d );  // si se desea imprimir el numero digito a digito
  6.  
  7.       inv = 10 * inv + d;  // no es necesario si no se quiere almacenar
  8.       n = n / 10;
  9.   }
  10.  
  11.   printf( "\nNro invertido: %d\n", inv );

Para números de largo mayor al que puede contenerse en un entero, si se hace necesario usar arreglos y olvidarse finalmente que se trata de numeros. De hecho, el codigo anterior podría fallar si el numero invertido (almacenado en la variable inv) no cabe en un entero.
  #4 (permalink)  
Antiguo 21/07/2011, 09:56
Avatar de ixhigo  
Fecha de Ingreso: julio-2011
Mensajes: 4
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: invertir numeros

bueno arregle el problema... por si alguien desea saberlo es el siguiente:
la variable z la transforme a double, por tanto el codigo queda de la siguiente forma :

#include<stdio.h>
#include<math.h>
main(){
int p,n,i,a,x,y;
double z;
p=0;

printf("Ingresa 1 numero csm =D \n ");
scanf("%d",&n);
i=0;
a=0;
y=n;
while(n!=0)
{

i=n%10;
n= n-i;
n=n/10;
p=p+1;



}

while(y!=0){

x= y%10;


p=p-1;
z= x*pow(10,p);
y= y-x;
y= y/10;

a=a+z;
}

printf("%d",a);

getchar(),getchar();
}
  #5 (permalink)  
Antiguo 17/12/2011, 17:23
 
Fecha de Ingreso: diciembre-2011
Mensajes: 2
Antigüedad: 12 años, 4 meses
Puntos: 0
Sonrisa Respuesta: invertir numeros

Bueno, espero que te sirva este código:

solo utiliza dos funciones, con la primera contamos los dígitos que tiene el número entero y posteriormente podemos obtener el número entero invertido.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int invierteEntero(int N);
int numCifras(int N);

int main()
{
int num, nnum;
printf("Introduzca un número: ");
scanf("%d", &num);
nnum= invierteEntero(num);
printf("\nNuevo número = %d", nnum);
printf("\nY se puede sumar numero %d + nuevo numero %d = %d",
num, nnum, num + nnum);

return 0;
}

int numCifras(int Num)
{
//Calcula cuantas cifras tiene el número entero
int N=0;

while(Num > 0)
{
Num = Num / 10;
N++;
}
return N;
}

int invierteEntero(int Num)
{
//Con esta función se obtiene el número invertido
int digito;
int nuevoNum=0;
//primeramente debo saber cuantas cifras tiene el numero entero
int nCifras = numCifras(Num);

while(Num > 0)
{
digito = Num - (Num / 10) * 10;
nuevoNum += digito * pow(10, --nCifras);
Num /= 10;
}
return nuevoNum;
}

Etiquetas: invertir, numeros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:14.