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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  parte decimal
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: parte decimal  (Leído 3,580 veces)
mapers


Desconectado Desconectado

Mensajes: 638


Ver Perfil
parte decimal
« en: 4 Julio 2010, 08:59 am »

quisiera que me ayudaran a ver en donde esta mi error ...
ejemplo dar el numerador y denominador 7/3 ...sale 2.3333333333333333 pero me lo debe de guardar en la cad1 solo la parte decimal el 33333333333333333 pero no me lo guarda a que se deve ....
Código
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. int main()
  5. {
  6.    char cad[1000],cad1[1000];
  7.    float num ,denom,x;
  8.    int i,j=0,p;
  9.    printf("TECLEA EL NUMERADOR  \n");
  10.    scanf( "%x" ,&num);
  11.    printf("TECLEA DENOMINADOR \n");
  12.    scanf( "%x" ,&denom);
  13.    x=num/denom;
  14.    sprintf( cad, "%f",x);
  15.    for(i=0;i<strlen(cad);i++)
  16.    {
  17.                   if(cad[i]=='.')
  18.                   {
  19.                    p=i;
  20.  
  21.                    }
  22.    }
  23.    i=0;
  24.    for(i=p+1;i<strlen(cad);i++)
  25.    {
  26.    cad1[j++]=cad[i];
  27.    }
  28.    i=0;
  29.    for(i=0;i<strlen(cad1);i++)
  30.    {
  31.    printf( "%c",cad1);
  32.    }
  33.    printf( "\n");
  34.  
  35.    system("PAUSE");
  36. }
  37.  
  38.  


En línea

nicolas_cof


Desconectado Desconectado

Mensajes: 348


Into the Wild


Ver Perfil WWW
Re: parte decimal
« Respuesta #1 en: 4 Julio 2010, 09:23 am »

mapers, aca te dejo un codigo, te recomiendo que veas la documentacion sobre las funciones empleadas...

Código:
#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

int main( void )
{
    char cad01[100], cad02[100], *tmp = NULL;
    double num, denom, x;
    int i;

    cout << "Numerador: ";
    cin >> num;
    cout << "Denominador: ";
    cin >> denom;
   
    x = num / denom;
   
    sprintf( cad01, "%f", x );

    tmp = strchr( cad01, '.' );

    for( i = 0; *(++tmp) != '\0'; ++i )
    {
        cad02[i] = *tmp;
    }
    cad02[i] = '\0';

    cout << "cad01: " << cad01 << " - cad02: " << cad02 << endl;

    return 0;
}

Salu10.


« Última modificación: 4 Julio 2010, 09:32 am por nicolas_cof » En línea

mapers


Desconectado Desconectado

Mensajes: 638


Ver Perfil
Re: parte decimal
« Respuesta #2 en: 4 Julio 2010, 09:30 am »

pero dime porque mi codigo no muestra lo mismo no se supone que hace  igual  

me refiero a la hora de guardar en cad1

for(i=p+1;i<strlen(cad);i++)
    {
    cad1[j++]=cad;
    }
porque no lo guarda
En línea

nicolas_cof


Desconectado Desconectado

Mensajes: 348


Into the Wild


Ver Perfil WWW
Re: parte decimal
« Respuesta #3 en: 4 Julio 2010, 09:38 am »

mapers, tenes algunos errores de concepto...

> Tendrias que decidirte si usar C++ o C, ya que estas haciendo una mezcla...

> En el caso que usaras C++ te estaria faltando incluir...

Código:
#include <cstring>
#include <cstdio>

para las funciones strlen() y sprintf()

y ademas tendrias que declarar el namespace std...

Código:
using namespace std;

Algunos errores en el codigo...

> En los printf...

Código:
printf( "%c", cad1 );

tendria que ser de esta forma...

Código:
printf( "%c", cad1[i] );

> En los scanf tenes que usar %f no %x, este ultimo concuerda con un entero hexadecimal sin signo

Código:
scanf( "%f" , &num );
...
scanf( "%f", &denom );

> Es redundante inicializar i = 0;, si despues le volves a asignar otro valor...

Código:
i = 0;
for ( i = p + 1; i < strlen( cad1 ) ; i++ )

Código:
i = 0;
for ( i = 0; i < strlen( cad1 ); i++ )

Te recomendaria leer un libro, porque tenes muchos conceptos flojos... ( no te lo tomes a mal, es un consejo )

https://foro.elhacker.net/programacion_cc/librospapers_cc-t296234.0.html

y ademas...

https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Salu10.
« Última modificación: 4 Julio 2010, 09:53 am por nicolas_cof » En línea

cbug

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: parte decimal
« Respuesta #4 en: 4 Julio 2010, 14:38 pm »

Mapers podrías leerte un libro de C/C++ cómo ya se te ha recomendado desde el año pasado... aprender a utilizar un depurador... y por supuesto... aprender a escribir... un saludo!
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: parte decimal
« Respuesta #5 en: 4 Julio 2010, 18:23 pm »

¡Buenas!

Otra de las razones por  las que no funciona tu codigo, es que no finalizas cad1.

Si vas a utilizar string.h, despues de tmp=strchr(cad,'.'); te ahorraras bastante trabajo con un strcpy(cad1,tmp+1);

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
nicolas_cof


Desconectado Desconectado

Mensajes: 348


Into the Wild


Ver Perfil WWW
Re: parte decimal
« Respuesta #6 en: 4 Julio 2010, 22:59 pm »

Si vas a utilizar string.h, despues de tmp=strchr(cad,'.'); te ahorraras bastante trabajo con un strcpy(cad1,tmp+1);

Mmmmmm yo no recomendaria el uso de strcpy(), mas bien usaria strncpy()

Código:
...
tmp = strchr( cad01, '.' );
++tmp;
strncpy( cad02, tmp, strlen(tmp) + 1 );
...

Aca hay una explicacion del porque no usarla, asi me ahorro en escribir yo ;D

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Salu10.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
reemplazar la coma decimal por el punto decimal
Programación C/C++
niko26.m 2 4,498 Último mensaje 3 Agosto 2013, 03:06 am
por aguml
[C] Decimal a base n, con n<10
Programación C/C++
edr89 8 4,401 Último mensaje 24 Octubre 2013, 03:12 am
por rir3760
[Súper solucionado] Separar parte decimal y parte fraccionaria en lenguaje C. « 1 2 »
Programación C/C++
NOB2014 14 31,378 Último mensaje 5 Enero 2016, 18:10 pm
por NOB2014
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines