elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [?][C++] no funcionan, se vuelven infinitos, que error cometi :(
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [?][C++] no funcionan, se vuelven infinitos, que error cometi :(  (Leído 2,400 veces)
Grixis

Desconectado Desconectado

Mensajes: 2



Ver Perfil
[?][C++] no funcionan, se vuelven infinitos, que error cometi :(
« en: 19 Julio 2010, 00:37 am »

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++
aca tambien tienen un link con el archivo (.cpp, lei las reglas :P) quisiera que elguien lo probara por si mismo para que vea lo que pasa http://www.mediafire.com/?f8yn9o2oksk4794

Código
  1. # include <stdio.h>
  2. # include <conio.h>
  3. # include <windows.h>
  4. # include <math.h>
  5. # include <string.h>
  6.  
  7. main(void)
  8. {
  9.          int opcion,j,i,fun;
  10.          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;
  11.          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;
  12.          system ("color 0a");
  13.          printf("\nMENU\n");
  14.          printf("                                        \n");
  15.         printf("1.-Newton Raphson\n");
  16.          printf("2.-Gauss Seidel\n");
  17.          printf("Ingrese su Opcion\n");
  18.          scanf("%d",&opcion);
  19.          switch(opcion)
  20.          {
  21.                        case 1:
  22.                             printf("Ha seleccionado: Newton Raphson\n");
  23.                             printf("La Ecuacion a Evaluar sera: x^2*E^x\n");
  24.                             printf("F'(x)=2x*E^x\n");
  25.                             printf("Ingrese x0:\n");
  26.                             scanf("%f",&x0);
  27.                             printf("Ingrese la Tolerancia:\n");
  28.                             scanf("%f",&es);
  29.                             do
  30.                             {
  31.                             printf("\n--------------------------------------\n");
  32.                             fx=pow(x0,2)*exp(x0);
  33.                             fx0=(2*x0)*exp(x0);
  34.                             if (fx0!=0)
  35.                             {
  36.                                        printf("el valor de F(x): %.4f\n",fx);
  37.                                        printf("el valor de F'(x): %.4f\n",fx0);
  38.                                        xi1=x0-(fx/fx0);
  39.                                        printf("el valor de xi+1: %.4f\n",xi1);
  40.                                        ea=fabs((xi1-x0)/xi1)*100;
  41.                                        printf("El valor relativo fue: %.4f \%",ea);
  42.                                        }
  43.                                        else
  44.                                        {
  45.                                            printf("Ya que F'(x)=0, no se puede aplicar el metodo\n");
  46.                                            }
  47.  
  48.                                            printf("\n--------------------------------------\n");
  49.                                            x0=xi1;
  50.                                            fx=pow(x0,2)*exp(x0);
  51.                                            fx0=(2*x0)*exp(x0);
  52.                                            if (fx0!=0)
  53.                                            {
  54.                                                      printf("el valor de F(x): %.4f\n",fx);
  55.                                                      printf("el valor de F'(x): %.4f\n",fx0);
  56.                                                      xi2=x0-(fx/fx0);
  57.                                                       printf("el valor de xi+1: %.4f\n",xi2);
  58.                                                       }
  59.                                                       else
  60.                                        {
  61.                                            printf("Ya que F'(x)=0, no se puede aplicar el metodo\n");
  62.                                            }
  63.                                            ea=fabs((xi2-x0)/xi2)*100;
  64.                                            printf("El valor relativo fue: %.4f \%",ea);
  65.                                            printf("\n--------------------------------------\n");
  66.                                            }while (ea>es);
  67.                             break;
  68.  
  69.                             case 2:
  70.                             printf("Ha seleccionado Gauss Seidel\n");
  71.                             printf("Ingrese la Matriz 3x4\n");
  72.                             for(i=1;i<=3;i++)
  73.                             for(j=1;j<=4;j++)
  74.                             {
  75.                                              printf("Ingrese el elemento  %d,%d de la matriz:", i,j);
  76.                                              scanf("%f",&mat[i][j]);
  77.                                              }
  78.                                              printf("La matriz generada fue:\n");
  79.                                              for(i=1;i<=3;i++)
  80.                                              {
  81.                                                               for (j=1;j<=4;j++)
  82.                                                               {
  83.                                                               printf("\t%f",mat[i][j]);
  84.                                                               }
  85.                                                               printf("\n");
  86.                                                               }
  87.                                                               printf("Ingrese la Tolerancia:\n");
  88.                                                               scanf("%f",&es);
  89.                                                               do
  90.                                                               {
  91.                                                                       printf("\n--------------------------------------\n");
  92.                                                                       a1=mat[1][4]-((mat[1][2]+mat[1][3])/mat[1][1]);
  93.                                                                       a2=mat[2][4]-((mat[2][1]+mat[2][3])/mat[2][2]);
  94.                                                                       a3=mat[3][4]-((mat[3][1]+mat[3][2])/mat[3][3]);
  95.                                                                       printf("el valor de X1 fue: %.4f\n",a1);
  96.                                                                       printf("el valor de X2 fue: %.4f\n",a2);
  97.                                                                       printf("el valor de X3 fue: %.4f\n",a3);
  98.                                                                       ea1=fabs((b1-a1)/b1)*100;
  99.                                                                       ea2=fabs((b2-a2)/b2)*100;
  100.                                                                       ea3=fabs((b3-a3)/b3)*100;
  101.                                                                       printf ("Ea1=%.2f\n",ea1);
  102.                                                                       printf ("Ea2=%.2f\n",ea2);
  103.                                                                       printf ("Ea3=%.2f\n",ea3);
  104.                                                                       printf("\n--------------------------------------\n");
  105.                                                                       b1=mat[1][4]-(((mat[1][2]*a2)+(mat[1][3]*a3))/mat[1][1]);
  106.                                                                       b2=mat[2][4]-(((mat[2][1]*b1)+(mat[2][3]*a3))/mat[2][2]);
  107.                                                                       b3=mat[3][4]-(((mat[3][1]*b1)+(mat[3][2]*b2))/mat[3][3]);
  108.                                                                       ea1=fabs((b1-a1)/b1)*100;
  109.                                                                       ea2=fabs((b2-a2)/b2)*100;
  110.                                                                       ea3=fabs((b3-a3)/b3)*100;
  111.                                                                       printf("el valor de X1 fue: %.4f\n",b1);
  112.                                                                       printf("el valor de X2 fue: %.4f\n",b2);
  113.                                                                       printf("el valor de X3 fue: %.4f\n",b3);
  114.                                                                       printf ("Ea1=%.2f\n",ea1);
  115.                                                                       printf ("Ea2=%.2f\n",ea2);
  116.                                                                       printf ("Ea3=%.2f\n",ea3);
  117.                                                                       }while ((ea1>es) and (ea2>es) and (ea3>es));
  118.                                                                       break;
  119.  
  120.                                                                       getch ();


« Última modificación: 19 Julio 2010, 00:40 am por Grixis » En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: [?][C++] no funcionan, se vuelven infinitos
« Respuesta #1 en: 19 Julio 2010, 00:41 am »

xD, no se, pero joder que código tan raro y que montón de variables. Además, existen nombres de variables tipo float que son palabras reservadas. o.O"

Que estas haciendo?, creo que hasta se podría recordar el código en un 40%.


En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
Grixis

Desconectado Desconectado

Mensajes: 2



Ver Perfil
Re: [?][C++] no funcionan, se vuelven infinitos
« Respuesta #2 en: 19 Julio 2010, 00:47 am »

xD, no se, pero joder que código tan raro y que montón de variables. Además, existen nombres de variables tipo float que son palabras reservadas. o.O"

Que estas haciendo?, creo que hasta se podría recordar el código en un 40%.


hay muchas variable porque dije que era parte de un codigo mas grande pero esas dos partes no sirven >.<
es algo para mi clase de calculo
no pego el codigo general completo porque son como 500 lineas asi que solo pegue lo que me causa problemas, lo demas funciona de maravilla
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: [?][C++] no funcionan, se vuelven infinitos, que error cometi :(
« Respuesta #3 en: 19 Julio 2010, 01:17 am »

Por dios, cuida el estilo, ese codigo es casi ilegible. Si tienes un if-else, ponlos uno sobre otro, asi se ve la estructura de un vistazo:
Código
  1. if()
  2. {
  3.    for(;;)
  4.    {
  5.    }
  6. }
  7. else
  8. {
  9.    do{
  10.    }while();
  11. }
  12.  
y esto, como ves, es aplicable al resto del codigo. Si no sigues unas pautas basicas para ordenar el codigo, dudo mucho que la gente intente descifrar lo que pones, y a ti mismo te resultara imposible en pocos dias saber que es lo que hace cada parte de tu codigo.

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
nicolas_cof


Desconectado Desconectado

Mensajes: 348


Into the Wild


Ver Perfil WWW
Re: [?][C++] no funcionan, se vuelven infinitos, que error cometi :(
« Respuesta #4 en: 19 Julio 2010, 01:59 am »

Grixis, ademas de lo ya mencionado, algunos consejos...

Código:
main(void)

Código:
#include <conio.h>

https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Código:
system("color 0a");

Si quieres que tu codigo sea lo mas portable posible evita hacer llamadas al sistema.

Otro punto a tener en cuenta es usar menos llamadas a printf() ya que podes juntar muchas de las cadenas en uno solo cuando sean seguidas, optimizando asi mas el codigo...

Código:
printf( "..."
        "..."
        "..."
        "..." );

Y por ultimo, seria bueno que modularices un poco el codigo, ya que como bien te mencionaron es imposible de leer y entender...

http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B/Funciones

Salu10.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines