Programación General > C/C++

 se vuelve infinito

(1/1)

Grixis:
este es solo un trozo de un codigo mas grande que estoy trabajando, lo demas funciona pero estas dos partes no funcionan bien, no dan los resultados y repiten el ciclo infinitamente, estoy usando dev-c++


--- Código: C++ ---# include <stdio.h># include <conio.h># include <windows.h># include <math.h># include <string.h> main(void){          int opcion,j,i,fun;          float a,b,es,x,p,fp,fa,fb,p1,ea,x0,fp1,fx,fx0,xi1,mat[3][4],a1,a2,a3,b1,b2,b3,ea1,ea2,ea3,pa[5],ln0,ln2,ln3,ln1,ln4,co1,co2,co3,co4,co0;          float ex0,ex1,ex2,ex3,ex4,l1,l2,l3,l4,l0,l5,xi2,ln,Ln,LN,Cos,COS,Exp,EXP,va[10],vv,suma,n,f0,func[10],h,con,sum,I;          system ("color 0a");          printf("n°º¤ø,¸¸,ø¤º°`°º¤ø,¸MENU°º¤ø,¸¸,ø¤º°`°º¤ø,¸n");          printf("                                        n");         printf("1.-Newton Raphsonn");          printf("2.-Gauss Seideln");          printf("Ingrese su Opcionn");          scanf("%d",&opcion);          switch(opcion)          {                        case 1:                             printf("Ha seleccionado: Newton Raphsonn");                             printf("La Ecuacion a Evaluar sera: x^2*E^xn");                             printf("F'(x)=2x*E^xn");                             printf("Ingrese x0:n");                             scanf("%f",&x0);                             printf("Ingrese la Tolerancia:n");                             scanf("%f",&es);                             do                             {                             printf("n--------------------------------------n");                             fx=pow(x0,2)*exp(x0);                             fx0=(2*x0)*exp(x0);                             if (fx0!=0)                             {                                        printf("el valor de F(x): %.4fn",fx);                                        printf("el valor de F'(x): %.4fn",fx0);                                        xi1=x0-(fx/fx0);                                        printf("el valor de xi+1: %.4fn",xi1);                                        ea=fabs((xi1-x0)/xi1)*100;                                         printf("El valor relativo fue: %.4f %",ea);                                        }                                        else                                        {                                            printf("Ya que F'(x)=0, no se puede aplicar el metodon");                                            }                                                                                        printf("n--------------------------------------n");                                            x0=xi1;                                            fx=pow(x0,2)*exp(x0);                                            fx0=(2*x0)*exp(x0);                                            if (fx0!=0)                                            {                                                      printf("el valor de F(x): %.4fn",fx);                                                      printf("el valor de F'(x): %.4fn",fx0);                                                      xi2=x0-(fx/fx0);                                                       printf("el valor de xi+1: %.4fn",xi2);                                                        }                                                       else                                        {                                            printf("Ya que F'(x)=0, no se puede aplicar el metodon");                                            }                                            ea=fabs((xi2-x0)/xi2)*100;                                             printf("El valor relativo fue: %.4f %",ea);                                            printf("n--------------------------------------n");                                            }while (ea>es);                             break;                                                          case 2:                             printf("Ha seleccionado Gauss Seideln");                             printf("Ingrese la Matriz 3x4n");                             for(i=1;i<=3;i++)                             for(j=1;j<=4;j++)                             {                                              printf("Ingrese el elemento  %d,%d de la matriz:", i,j);                                              scanf("%f",&mat[i][j]);                                              }                                              printf("La matriz generada fue:n");                                              for(i=1;i<=3;i++)                                              {                                                               for (j=1;j<=4;j++)                                                               {                                                               printf("t%f",mat[i][j]);                                                               }                                                               printf("n");                                                               }                                                               printf("Ingrese la Tolerancia:n");                                                               scanf("%f",&es);                                                               do                                                               {                                                                       printf("n--------------------------------------n");                                                                       a1=mat[1][4]-((mat[1][2]+mat[1][3])/mat[1][1]);                                                                       a2=mat[2][4]-((mat[2][1]+mat[2][3])/mat[2][2]);                                                                        a3=mat[3][4]-((mat[3][1]+mat[3][2])/mat[3][3]);                                                                       printf("el valor de X1 fue: %.4fn",a1);                                                                       printf("el valor de X2 fue: %.4fn",a2);                                                                       printf("el valor de X3 fue: %.4fn",a3);                                                                       ea1=fabs((b1-a1)/b1)*100;                                                                       ea2=fabs((b2-a2)/b2)*100;                                                                       ea3=fabs((b3-a3)/b3)*100;                                                                       printf ("Ea1=%.2fn",ea1);                                                                       printf ("Ea2=%.2fn",ea2);                                                                       printf ("Ea3=%.2fn",ea3);                                                                       printf("n--------------------------------------n");                                                                       b1=mat[1][4]-(((mat[1][2]*a2)+(mat[1][3]*a3))/mat[1][1]);                                                                       b2=mat[2][4]-(((mat[2][1]*b1)+(mat[2][3]*a3))/mat[2][2]);                                                                       b3=mat[3][4]-(((mat[3][1]*b1)+(mat[3][2]*b2))/mat[3][3]);                                                                       ea1=fabs((b1-a1)/b1)*100;                                                                       ea2=fabs((b2-a2)/b2)*100;                                                                       ea3=fabs((b3-a3)/b3)*100;                                                                       printf("el valor de X1 fue: %.4fn",b1);                                                                       printf("el valor de X2 fue: %.4fn",b2);                                                                       printf("el valor de X3 fue: %.4fn",b3);                                                                       printf ("Ea1=%.2fn",ea1);                                                                       printf ("Ea2=%.2fn",ea2);                                                                       printf ("Ea3=%.2fn",ea3);                                                                       }while ((ea1>es) and (ea2>es) and (ea3>es));                                                                       break;                                                                                                                                              getch (); 

czealt:
Hola, bueno revise el codigo y vi un error en los indices que utilizas para manipular la matriz 'mat'.
Al declarar:

float mat[3][4];

el primer indice va de 0 a 2 y el segundo de 0 a 3. Por ejemplo el codigo para ingresar los valores de 'mat' deberia ser


--- Código: C ---  printf("Ingrese la Matriz 3x4n"); for(i=0;i<3;i++)    for(j=0;j<4;j++)    {       printf("Ingrese el elemento  %d,%d de la matriz:", i+1,j+1);       scanf("%f",&mat[i][j]);    }  Saludos

Navegación

[0] Índice de Mensajes

Ir a la versión completa