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 ....
#include <cstdlib>
#include <iostream>
int main()
{
char cad[1000],cad1[1000];
float num ,denom,x;
int i,j=0,p;
printf("TECLEA EL NUMERADOR \n");
scanf( "%x" ,&num);
printf("TECLEA DENOMINADOR \n");
scanf( "%x" ,&denom);
x=num/denom;
sprintf( cad, "%f",x);
for(i=0;i<strlen(cad);i++)
{
if(cad[i]=='.')
{
p=i;
}
}
i=0;
for(i=p+1;i<strlen(cad);i++)
{
cad1[j++]=cad[i];
}
i=0;
for(i=0;i<strlen(cad1);i++)
{
printf( "%c",cad1);
}
printf( "\n");
system("PAUSE");
}
mapers, aca te dejo un codigo, te recomiendo que veas la documentacion sobre las funciones empleadas...
#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.
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
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...
#include <cstring>
#include <cstdio>
para las funciones strlen() y sprintf()
y ademas tendrias que declarar el namespace std...
using namespace std;
Algunos errores en el codigo...
> En los printf...
printf( "%c", cad1 );
tendria que ser de esta forma...
printf( "%c", cad1[i] );
> En los scanf tenes que usar %f no %x, este ultimo concuerda con un entero hexadecimal sin signo
scanf( "%f" , &num );
...
scanf( "%f", &denom );
> Es redundante inicializar i = 0;, si despues le volves a asignar otro valor...
i = 0;
for ( i = p + 1; i < strlen( cad1 ) ; i++ )
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.
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!
¡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!
Cita de: do-while en 4 Julio 2010, 18:23 PMSi 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()
...
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.