Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - NOB2014

#271
Hola MAFUS.
Debo suponer que estabas apurado (¿...?), ese post lo di de alta yo y además son cosas distintas, caso contrario lo ubiera continuado.-

Saludos.
#272
Hola.
El programa que muestro a continuación lo que hace es separar los dígitos que se encuentran a la izquierda de la coma y los que se encuentran a la derecha, o sea, la parte entera y la parte fraccionaria de una variable double, hasta hay todo bien, el error lo tengo cuando el bucle for no coincide con la cantidad de dígitos fraccionarios.-
Alguien me puede decir si es posible establecer cuantos dígitos ha ingresado el operador a la derecha de la coma, he intentado por todos los medios a mi alcance (lectura y búsqueda en la web) y no pude lograrlo.-

#include <stdio.h>
#include <float.h>

int main( void ){
double numero , decimal;
int entero, x = 1, ok, ch;

do{
printf("\n Ingrese un numero con decimales...: ");
ok = scanf( "%lf", &numero ) == 1 && numero > 0.00 && numero <= DBL_MAX;
while ((ch = getchar()) != EOF && ch != '\n');
}while(!ok);

entero = (int)numero;
decimal = numero - entero;

while(x <= 4 ){
decimal  *=10;
x++;
}

printf("\n La parte fraccionaria..:%g\n", decimal);

return 0;
}


Desde ya muchas gracias
Saludos
#273
Hola.

#include<stdio.h>

int main( void ){
double numero = 12.09;
int entero = numero, x = 1;
double decimal = numero - entero;

printf("\n %g\n", decimal);

while(x <= 2 ){
decimal  *=10;
x++;
}

printf("\n La parte fraccionaria..:%g\n", decimal);

return 0;
}


Saludos.
Daniel
#274
Hola, gente.
MAFUS, gracias por ocuparte, el ejemplo de user-marcos funciona a la perfección y es en parte lo que proponías, en cuanto a hacerlo en un papel ya lo hice y lo quiero aplicar al código de engel lex pero todavía no lo logro.
CitarQué ocurre si el número original es entero,
ya lo probé y da como parte fraccionaria:cero(correcto)
CitarQue ocurre si tiene infinitos decimales
me parece que esto se soluciona con: #define NUMERO_DECIMALES 4.-
Por último, decirte que voy a probar el código que posteaste se lo ve interesante.- 
Noob_boy, me gustaría que postearas algún ejemplo de lo que propones, te imaginaras que con 63 años ya no me acuerdo de logaritmo, desde ya muchas gracias.-

Saludos.
Daniel
#275
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.-

#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.-

#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
#276
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
#277
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
#278
Hola.
vaya manera de leer, pensar, practicar y consultar, al fin encontré una aparente solución, digo aparente porque todavía desconozco si es portable.-

while( c != '\n'){
             .......................
             .......................
}


Saludos.
Daniel
#279
Hola a todos y que tengan un muy buen día,

#include <stdio.h>

int main(int argc, char **argv){
int c;

printf("\n Para finalizar ==> Ctrl + d (linux) == Ctrl + c (Windows)");
printf("\n\n Por favor introduzca una numero entero...: ");

while(EOF != (c = getchar())){
if( c >= 48 && c <= 57 )
putchar(c);
}

printf("\n EOF == %d\n", EOF);

return 0;
}


Creo que no es necesario que comente demasiado sobre lo que quiero lograr que es finalizar el bucle de una forma autómatica sin tener que apretar Ctrl + d, tengo muchas horas leyendo y practicando sobre el tema pero no logro solucionarlo,-

Saludos.
Daniel
#280
Hola Coper.
Muchas gracias por ocuparte, que bien explicado, me queda todo claro y espero contar con tu ayuda toda vez que exponga mis dudas, hago este pedido porque los grandes genios históricos que ayudaban en este foro parecen que han desaparecido todos.-

Saludos.
Daniel