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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Súper solucionado] Separar parte decimal y parte fraccionaria en lenguaje C.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Súper solucionado] Separar parte decimal y parte fraccionaria en lenguaje C.  (Leído 31,377 veces)
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
[Súper solucionado] Separar parte decimal y parte fraccionaria en lenguaje C.
« en: 4 Enero 2016, 02:10 am »

Hola a todos.
Bueno como el enunciado lo dice es lo que quiero hacer, lo que pasa es que la parte fraccionaria no sale limpia como yo deseo, o sea, el programa que expongo a continuación la parte fraccionaria da como resultado 0.345000 y lo que necesito es 345000 a secas sin el cero y el punto, hay alguna manera de lograrlo.-

#include <stdio.h>
#include <windows.h>
 
int main(void){
   float numero = 12.345;
   int parte_entera;
   double parte_decimal;   
   
   parte_entera = numero/1;
   parte_decimal = numero-parte_entera;
   
   system( "cls" );   
   printf( "\n La parte entera   %d", parte_entera );
   printf( "\n La parte decimal  %f", parte_decimal );
   
   return 0;
}

Desde ya muchas gracia y un abrazo.
Daniel


« Última modificación: 4 Enero 2016, 21:18 pm por NOB2014 » En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Separar parte decimal y parte fraccionaria en lenguaje C.
« Respuesta #1 en: 4 Enero 2016, 03:24 am »

Multiplicalo por 1000


En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Separar parte decimal y parte fraccionaria en lenguaje C.
« Respuesta #2 en: 4 Enero 2016, 03:54 am »

Hola 0xFer.
Gracias por ocuparte, lo que vos propones daría 12345 y lo que necesito es:
entero   = 12
fraccion = 345
Ya encontré una manera solo que no descubro cuál es la condición para finalizar el while, no voy a saber si la parte fraccionaria tiene 1,2,3,10 dígitos.-

while( a <= 2){
   parte_decimal  *=10;
   a++;
}

Saludos.
Daniel
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Separar parte decimal y parte fraccionaria en lenguaje C.
« Respuesta #3 en: 4 Enero 2016, 04:23 am »

usa etiquetas GeSHi al publicar código

espero se entienda(y funcione)
Código
  1. float numero = 12.123;
  2. int entero = numero;
  3. numero -= entero;
  4.  
  5. while((numero - (int)numero) != 0){
  6.   numero  *=10;
  7. }
« Última modificación: 4 Enero 2016, 04:41 am por engel lex » 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.
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Separar parte decimal y parte fraccionaria en lenguaje C.
« Respuesta #4 en: 4 Enero 2016, 09:55 am »

Hazlo a mano, sobre un papel y apunta los pasos que vas haciendo.
Después solo tienes que traducirlo a C.
Ten en cuenta varias cosas:
Que ocurre si el numero original es entero
Que ocurre si el tiene infinitos decimales.

Por otra parte, si no es un ejercicio y necesitas esa funcionalidad para un programa mas grande, piensa que ya existe esta función en la librería estándar de C.
En línea

kondrag_X1

Desconectado Desconectado

Mensajes: 157


Ver Perfil
Re: Separar parte decimal y parte fraccionaria en lenguaje C.
« Respuesta #5 en: 4 Enero 2016, 11:13 am »

y porque no utilizas %n.mf para decir el numero de decimales que quieres?

por ejemplo
printf("%n.mf",numero);

n -> indica la cantidad de números por delante de la coma
m -> la cantidad de números por detrás de la coma.
 así tu número 12,123
printf("parte entera   : %4.0f",numero); 12
printf("parte decimal : %0.4f",numero); 123
En línea

user-marcos

Desconectado Desconectado

Mensajes: 159


Ver Perfil
Re: Separar parte decimal y parte fraccionaria en lenguaje C.
« Respuesta #6 en: 4 Enero 2016, 11:51 am »

Código
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5.  float f = 12.598;
  6.  int entero = (int)f;
  7.  float decimal = f - entero;
  8. }
  9.  
En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Separar parte decimal y parte fraccionaria en lenguaje C.
« Respuesta #7 en: 4 Enero 2016, 13:22 pm »

Hola.
Tengo consultas para los 4, pero no las voy a poner todas juntas, solo que el código de user-marcos me da correcto como debe ser la parte entera pero la parte fraccionaria da como resultado: 0.598000. Lo que necesito es que dé: 598 sin cero a la izquierda ni el punto o sea un número entero.-

Código:
#include <stdio.h>
#include <windows.h>
 
int main(void){
float f = 12.598;
int entero = (int)f;
float decimal = f - entero;

system( "cls" );
printf("\n parte entera   : %d",entero);
printf("\n parte decimal : %f",decimal);

return 0;
}

engel lex te dejo el código como yo lo interprete, la lógica es la correcta, pero no sé qué pasa el resultado de la parte fraccionaria no es la esperada:12300015.000000, voy a hacer algunas prácticas para intentar que de el resultado que yo necesito.-

Código:
#include <stdio.h>
#include <windows.h>
 
int main(void){
float numero = 12.123;
int entero = numero;
numero -= entero;
 
while((numero - (int)numero) != 0){
numero  *=10;
}

system( "cls" );
printf("\n parte entera   : %d", entero);
printf("\n parte decimal : %f", numero);

return 0;
}

Por el momento es todo, luego les hago la consulta a los otros 2 foristas.-

Me es imposible utilizar las etiquetas GeSHi, no sé que pasa.-

Saludos.
Daniel
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
user-marcos

Desconectado Desconectado

Mensajes: 159


Ver Perfil
Re: Separar parte decimal y parte fraccionaria en lenguaje C.
« Respuesta #8 en: 4 Enero 2016, 13:27 pm »

Lo que he puesto antes estaba incompleto.

Código
  1. #include<stdio.h>
  2. #include <math.h>
  3.  
  4. #define NUMERO_DECIMALES 4
  5. int main()
  6. {
  7.  float f = 12.5985;
  8.  int entero = (int)f;
  9.  float decimal = f - entero;
  10.  int i_decimal = decimal * pow(10,NUMERO_DECIMALES);
  11.  printf("%i",i_decimal); // ->  5985
  12. }
  13.  
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Separar parte decimal y parte fraccionaria en lenguaje C.
« Respuesta #9 en: 4 Enero 2016, 17:57 pm »

A ver, ¿qué tal así?

Código
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. unsigned p_fraccionaria(double d) {
  5.    unsigned retvalue;
  6.  
  7.    d = fabs(d);
  8.    d -= (unsigned long)d;
  9.    d *= 1000000; // <-- 6 decimales ya es bastante precision
  10.  
  11.    retvalue = d;
  12.  
  13.    if(retvalue < d)        // <-- por si en la conversion ha habido
  14.        ++retvalue;         // <-- perdida de precision
  15.    else if(retvalue > d)   //
  16.        --retvalue;         //
  17.  
  18.    if(retvalue)                // <-- Si no es 0, intentamos
  19.        while(!(retvalue % 10)) // <-- quitar 0 por la derecha
  20.            retvalue /= 10;     //
  21.  
  22.    return retvalue;
  23. }
  24.  
  25. int main() {
  26.    double num;
  27.  
  28.    num = 12.34;
  29.    printf("%f : %u\n", num, p_fraccionaria(num));
  30.  
  31.    num = 12.34567890123;
  32.    printf("%f : %u\n", num, p_fraccionaria(num));
  33.  
  34.    num = 12.00;
  35.    printf("%f : %u\n", num, p_fraccionaria(num));
  36.  
  37.    num = 12;
  38.    printf("%f : %u\n", num, p_fraccionaria(num));
  39.  
  40.    num = -12.34;
  41.    printf("%f : %u\n", num, p_fraccionaria(num));
  42.  
  43.    return 0;
  44. }
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
java parte fraccionaria
Java
^kazike^ 1 18,547 Último mensaje 25 Diciembre 2005, 04:34 am
por coolfrog
tengo un problema super peludo con la biblioteca gd 2da parte
PHP
memosky 4 2,480 Último mensaje 18 Noviembre 2006, 22:25 pm
por memosky
Solucionado en parte mi problema con fit gedo system
Programación Visual Basic
makinen00 0 3,384 Último mensaje 4 Marzo 2008, 13:21 pm
por makinen00
Ayuda con parte de codigo(solucionado)
Programación Visual Basic
pedraosone 8 3,606 Último mensaje 20 Julio 2009, 05:32 am
por seba123neo
parte decimal
Programación C/C++
mapers 6 3,579 Último mensaje 4 Julio 2010, 22:59 pm
por nicolas_cof
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines