Invertir numero de coma flotante

Iniciado por jaguirred, 26 Febrero 2017, 20:15 PM

0 Miembros y 2 Visitantes están viendo este tema.

jaguirred

 :huh: :huh: :huh: :huh: :huh: :huh: :huh: :huh: :huh: :huh: :huh: :huh: :huh: :huh:
Realizar un programa que permita invertir la parte entera y la parte decimal de un número dado del tipo de punto flotante, el programa aceptará cantidades con o sin punto flotante.
Necesito ayuda en la parte del punto flotante, el programa para enteros ya lo tengo pero la parte flotante es donde tengo problema


· Los títulos deben ser descriptivos
>aquí las reglas del foro
-Engel Lex

engel lex

Citarinvertir la parte entera y la parte decimal de un número dado del tipo de punto flotante

explicate con más detalle, da un ejemplo

que problema tienes? que llevas? que intentaste? que no sabes?
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.

jaguirred

En el ejercicio da el siguiente ejemplo:
Ejemplo 1, datos de entrada, números enteros:
34789765
Datos de salida, ejemplo 1:
56798743

Ejemplo 2, datos de entrada, números con punto flotante:
189674.678
Datos de salida, ejemplo 2:
476981.876

Yo llevo el siguiente código solo para enteros:

//Programa que invierte el orden de los numeros.
#include <stdio.h>

int x,y,z;
int a;

main()
{

printf("Dame un número: ");
scanf("%i",&x);

   while (x>0)
   {
      a=a+1; //Cuenta los ciclos
      printf("Ciclos: %i\n",a);
      printf("1. x: %i\n",x);
      z=x%10; //Divide a x entre 10 para guardar el modulo en z
      printf("2. z: %i\n",z);
      printf("3. x: %i\n",x);
      x=x/10; //Divide x entre 10 que será lo que ocuparemos para la siguiente repeticion del ciclo
      printf("4. x: %i\n",x);
      printf("5. z: %i\n",z);
      printf("6. y: %i\n",y);
      y=y*10+z; //Va guardando el número en y para después imprimirlo
      printf("7. y: %i\n",y);
   }

printf("El resultado es : %i",y);

}

***Los printf que están dentro solo son para corroborar el proceso

engel lex

cuidado con usar variables no incializadas, como int a y int y, asumes que será 0, cuando eso no siempre será verdad y depende de las opciones del compilador

para hacer la parte entera de un numero de coma flotante lo mejor sería que pases la parte entera y decimal a 2 numeros tipo entero separados, hagas el proceso que ya tienes y los unas nuevamente
es decir

124.12
lo separas en 124 y en 12, enviartes ambos, quedando 421 y 21 y los unes para tener 421,21

crees que puedes hacerlo sin ayuda?
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.

jaguirred

No creo, tengo una idea: hacer lo mismo con división y modulo, la división guardarlo en una varible y modulo en otro; pero de ahí tengo dudas:
-¿Cómo meter que el programa sepa que si es con punto decimal haga un proceso diferente?

-¿Qué tipo de variable puedo poner para que haga el proceso indiscriminadamente ?

-Al meter un numero de tipo flotante o doble me da un error en la parte del modulo y me dice que se tiene un valor doble y un entero, ¿Cómo puedo solucionar esto?

Se me ocurrió ahorita que antes de que inicie el ciclo haga la división no sé, entre 1, la parte entera se guarda en una variable y que se haga el modulo del mismo numero, obviamente si no tiene modulo esto lo va omitir o algo asi cierto?

engel lex

Citar¿Cómo meter que el programa sepa que si es con punto decimal haga un proceso diferente?

esto es dar muchas vueltas al asunto, es complicado para tu fin... ojo que puede ser delicado el manejos de numeros de coma flotante debido ala perdida de precisión

Citar¿Qué tipo de variable puedo poner para que haga el proceso indiscriminadamente ?

mi recomendacion siempre trata el input como float y procesa como int

CitarAl meter un numero de tipo flotante o doble me da un error en la parte del modulo y me dice que se tiene un valor doble y un entero, ¿Cómo puedo solucionar esto?

el modulo solo se puede relizar entre enteros





tu otra opción es hacerlo como char y ahí no hay perdida, ahí es bastnte simple el proceso
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.