Foros del Web » Programación para mayores de 30 ;) » Programación General »

Extraño Error en C

Estas en el tema de Extraño Error en C en el foro de Programación General en Foros del Web. Buenas... me encuentro con el siguiente problema en Borland C++ 3.1 declaro dos variables como "float" una de ellas es para un contador, cuando ingreso ...
  #1 (permalink)  
Antiguo 06/07/2005, 21:19
 
Fecha de Ingreso: junio-2005
Mensajes: 9
Antigüedad: 18 años, 10 meses
Puntos: 0
Exclamación Extraño Error en C

Buenas...

me encuentro con el siguiente problema en Borland C++ 3.1

declaro dos variables como "float" una de ellas es para un contador,

cuando ingreso al bucle del contador, la secuencia comienza y va sumando como es correcto de a 0.1 o de a 1 (dependiendo de una condicion previa), pero de alguna forma tambien se esta sumando un 0.000001 en casa vuelta del bucle..pues por pantalla me sale una cosa asi:

Temperatura es: 31.000000
Temperatura es: 32.000001
Temperatura es: 32.100002
Temperatura es 33.200003

Como veran lo correcto seria que sume de a "1" o de a "0.1" pero me agrega ese "0.000001" de la nada!!..

La verdad que con mis compañeros ya revisamos todo y no sabemos porque sucede esto...revisamos el codigo muchas veces y en nos aseguramos que en ningun lugar sumaramos sin querer ese "0.000001"...asique espero que aqui alguien que sepa mucho me pueda decir algo que me ayude...

Agradesco a todos...chau suerte!!!
  #2 (permalink)  
Antiguo 06/07/2005, 21:31
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
Podrias poner tu codigo fuente???
  #3 (permalink)  
Antiguo 07/07/2005, 02:22
 
Fecha de Ingreso: junio-2005
Mensajes: 286
Antigüedad: 18 años, 10 meses
Puntos: 2
ha de ser un error de memoria, pero seria bueno ver el codigo. Porque no corres un debugger para ver paso a paso que es lo que pasa y el valor de las variables.
  #4 (permalink)  
Antiguo 07/07/2005, 18:43
 
Fecha de Ingreso: junio-2005
Mensajes: 9
Antigüedad: 18 años, 10 meses
Puntos: 0
float temp,hum, tempinc, huminc;
int i=1;

void main()
{
clrscr();
printf("Ingrese la temperatura deseada: ");
scanf("%f",&temp);
printf("Ingrese la humedad maxima permitida: ");
scanf("%f",&hum);
while (i==1)
{
printf("\nIngrese temperatura simulacion: ");
scanf("%f",&tempinc);
printf("Ingrese humedad de simulacion: ");
scanf("%f",&huminc);
printf("\n\n");
if(temp!=tempinc)
{
if(temp>tempinc)
{

printf("Encendiendo calentador...\n");
while(temp>tempinc)
{

if((temp-tempinc)<1 && (temp-tempinc)>0)
{
tempinc=(tempinc+0.1);
printf("Temperatura actual: %f\n",tempinc);
}
else
if((temp-tempinc)>=1)
{
tempinc=(tempinc+1.000000);
printf("Temperatura actual: %f\n",tempinc);
}
}
}
else
printf("Refrigerando el sistema...\n");
while(temp<tempinc)
{
tempinc=tempinc-1;
printf("era aca el error!");
printf("Temperatura actual: %f\n",tempinc);
}
}
else
{
printf("La temperatura es adecuada");
}
printf("¨Desea seguir controlando las condiciones ambientales?\n\n");
printf("Si(1) o No(2)\n\n");
scanf("%d",&i);
}
getch();
}

ESE ES EL CODIGO, Creo que esta bien copiado ..mmm... y la verdad que creo tambien que los "else" estan bien usados...y no se han mezclado los if's...sin emargo...debe haber algun error..., espero que alguien lo vea con otros ojos asi me lo puede señalar...

recuerden el error era que por cada vuelta del bucle "while(temp>tempinc)" suamaba un 0.000001 de mas...

Con respecto al error de memoria...la probe varias veces y lo probe en otra pc y tb da el mismo error... nose si tendra algo que ver...

Bueno Agradesco su ayuda a todos...hasta luego!!
  #5 (permalink)  
Antiguo 07/07/2005, 18:44
 
Fecha de Ingreso: junio-2005
Mensajes: 9
Antigüedad: 18 años, 10 meses
Puntos: 0
UUYY..no me salio con espacios..se va a complicar su lectura...perdon
  #6 (permalink)  
Antiguo 08/07/2005, 00:10
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
En teoria es corrrecto, para que sumara el 0.1 el valor tendria que estar entre 0 y 1 (sin incluirlos). Yo lo probe con VC++ y me funciono perfectamente en todas las pruebas que hice, podrias intentar usar un compilador serio o depurar el codigo generado por Borland.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #7 (permalink)  
Antiguo 08/07/2005, 10:07
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Vamos, puedes incluso usar DJGPP que se parece a la interfaz de borlad(la de DOS ) Aun asi DJGPP no es un compilador que digas muy bueno, si quiere algo serio como dice Eternal Idol, pues Dev-C++ o sino checa las faqs, ahi dice

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:20.