Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/05/2011, 11:39
Avatar de jacker
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. }