Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Floating point error:Divide by 0

Estas en el tema de Floating point error:Divide by 0 en el foro de C/C++ en Foros del Web. Abnormal program termination El problema es que segun yo no enmcuentro ningun erro en la logica las operaciones son las correctas. El programa consiste en ...
  #1 (permalink)  
Antiguo 04/05/2011, 11:39
Avatar de jacker  
Fecha de Ingreso: marzo-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 0
Busqueda Floating point error:Divide by 0

Abnormal program termination
El problema es que segun yo no enmcuentro ningun erro en la logica las operaciones son las correctas. El programa consiste en aproximar raices por el metodo de punto secante eh estado checando y si borro las operaciones que realiza en if(c==2) if(f>1),y las de if(c==3) y if(c==2) cuandpo borro las operaciones que realiza en estas sentencias el programa no produce el Abnormal program termination crei que era por que realizaba muchas operaciones en los parentesis pero hice las operaciones por partees y me sigue lanzando ese error.
Investigue en internet y la verda no entendi muy hablan que las soluciones de IEEE donde los datos de punto fijo estandarizado sirven para este tipo de casos pero que en c++ no existe uno que soporte este tipo de errores aritmeticos bueno qui les dejo mi programa, el programa ovimente no tiene errores en cuanto a las sentenscias y su correcta escritura de que corre corre pero aborta los resultados debido a ese error ya que es mas bien un error de la logica computacional:

Código C++:
Ver original
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<math.h>
  4. void main()
  5. {
  6. int x,lm,co,f,c,fil=4;
  7. float x0,x1,ax,tb[50][50];
  8. clrscr();
  9. printf("Dame el valor de la x0=");
  10. scanf("%f",&x0);
  11. printf("Dame el valor de la x1=");
  12. scanf("%f",&x1);
  13. printf("¨Cual es el porcentaje de error limite ? ");
  14. scanf("%i",&lm);   ax=lm;
  15. for(f=0;f<50;f++){ if(ax>=lm){ x=f;
  16. for(c=0;c<5;c++) {
  17. if(c==0) { tb[f][c]=f; }
  18. if(c==1) {tb[f][c]=f;}
  19. if(c==2) { if(f==0){ tb[f][c]=x0; }if(f==1){ tb[f][c]=x1; }
  20. if(f>1){ tb[f][c]=tb[f-1][2]-(((tb[f-1][3])*(tb[f-2][2]-tb[f-1][2]))/(tb[f-2][3]-tb[f-1][3]));}}
  21. if(c==3) { tb[f][c]=(exp(tb[f][2]*tb[f][2]))-tb[f][2]; }
  22. if(c==4) { ax=((tb[f][2]-tb[f-1][2])/tb[f][2])*100;
  23. if(ax<0){ax=ax*-1;}tb[f][c]=ax;}
  24. }
  25. }
  26. else{break;}
  27. }
  28. for(f=0;f<=x;f++){ co=7; fil=fil+2;
  29. for(c=0;c<5;c++) {
  30. gotoxy(co,fil);
  31. printf("%f",tb[f][c]); co=co+10; }}
  32.  
  33. }

Etiquetas: Ninguno
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




La zona horaria es GMT -6. Ahora son las 06:00.