Título: parte decimal Publicado por: mapers 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
Título: Re: parte decimal Publicado por: nicolas_cof 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. Título: Re: parte decimal Publicado por: mapers 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 Título: Re: parte decimal Publicado por: nicolas_cof 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. Título: Re: parte decimal Publicado por: cbug 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!
Título: Re: parte decimal Publicado por: do-while 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! Título: Re: parte decimal Publicado por: nicolas_cof 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. |