Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: lolo18 en 10 Noviembre 2013, 11:12 am



Título: POR FAVOR AYUDA CON PROGRAMA EN C++
Publicado por: lolo18 en 10 Noviembre 2013, 11:12 am
Que tal, Estoy iniciándome en esto de la programación y me han dejado investigar un programa que resuelva ecuaciones por el método de gauss. Quisiera saber si alguien puede ayudarme a poner comentarios a lo largo del programa para comprender el funcionamiento del mismo en cada una (o la mayoría) del código fuente que les presento a continuación:

#include <iostream.h>
#include <conio.h>
#include <stdio.h>


using namespace std;

void captura(double a[50][50],int n)
{
int c,f;
for(c=0;c<n;c++)
{
                for(f=0;f<n+1;f++)
                {
                                  if(f<n)
                                  {
                                  system("cls");
                                  cout<<"\n\n\n\n  Captura de la matriz :";
                                  cout<<"\n\n X"<<f+1<<" :  ";
                                  cin>>a[c][f];
                                  }
                                  else
                                  {
                                      system("cls");
                                  cout<<"\n\n\n\n  Captura de la matriz :";
                                  cout<<"\n\n Constante = ";
                                  cin>>a[c][f];
                                  }                               
                               
                }

}
}



void imprimir (double a[50][50],int n)
{
int c,f;
cout<<"\n\n\n Matriz de "<<n<<" x "<<n<<"\n\n\n  ";
for(c=0;c<n;c++)
{
                for(f=0;f<n+1;f++)
                {
                                if(f<n)
                                {
                                    cout<<"  "<<a[c][f];
                                }
                                else
                                {
                                    cout<<" = "<<a[c][f];
                                }                                   
                }
                cout<<"\n  ";
}
}


void metodogaussjordan (double a[50][50], int n)
{
int e,ee,c,f,cc,ff;
double r[50][50],d,g,b;
e = 0;

for(c=0;c<n;c++)
{
b=a[c][c];
           
           for(f=0;f<n+1;f++)
           {
                             a[c][f]=(a[c][f])/b;
                             r[c][f]=a[c][f];                   
           }
           
           cout<<"\n R"<<c+1<<" = R"<<c+1<<"/"<<b;
           cout<<"\n\n";
           for(ee=0;ee<n;ee++)
           {
                           for(ff=0;ff<n+1;ff++)
                           {
                           
                           cout<<"   "<<a[ee][ff];
                                   
                           }
                           cout<<"\n";
           }
           
          cout<<"\n\n Suma de renglones multiplicados por pibote\n\n";
           for(cc=e;cc<n;cc++)
           {
           d=a[cc+1][c];
           
                           
                           
                           for(ff=0;ff<n+1;ff++)
                           {
                           r[cc+1][ff]=((-1*d)*(a[c][ff]))+(a[cc+1][ff]);
                           
                               
                           
                           a[cc][ff]=r[cc][ff];         
                           }
                           
                           
                           
           }
          e=e+1;
         
          if(c>0 )
          {
          for(cc=0;cc<c;cc++)
          {
          g=r[cc][c];
                    for(ff=0;ff<n+1;ff++)
                    {
                           r[cc][ff]=((-1*g)*(a[c][ff]))+(a[cc][ff]);
                         a[cc][ff]=r[cc][ff];
                    }
                   
           
          }
          }
         
          if(c<n)
          {
          for(cc=0;cc<n;cc++)
           {
           
           
                           for(ff=0;ff<n+1;ff++)
                           {
                                               
                           cout<<"   "<<r[cc][ff];
                                 
                           }
                           
                           cout<<"\n";
           }}
           cout<<"\n";         
}
}




int main ()
{

int n,f,c,cc,ff,e,ee,sn;
double a[50][50],b,d,g,r[50][50];
do{system("cls");
cout<<"\n\n\n\n\n         BIENVENIDO";
cout<<"\n Eliminacion de GAUSS JORDAN de una Matriz n x n \n\n\n";
cout<<"\n Por favor teclee el tamaño de la matriz : ";
cin>>n;
captura(a,n);
imprimir(a,n);
cout<<"\n\n\n\n";
metodogaussjordan(a,n);


cout<<"\n\n";
for(c=0;c<n; c++)
{
cout<<"\n\n  X"<<c+1<<" = "<<a[c][n];
}
getch();
do{system("cls");
cout<<"\n\n\n   ¿ DESEA RESOLVER OTRO SISTEMA DE ECUACIONES ?\n\n\n\n  1.- Si \n\n  2.- NO(salir)\n\n OPC. : ";
cin>>sn;
}while(sn<1 || sn>2);
}while(sn<2);
return 0;
}





Sería de gran ayuda su apoyo. Mil gracias y saludos.


Título: Re: POR FAVOR AYUDA CON PROGRAMA EN C++
Publicado por: Vaagish en 10 Noviembre 2013, 18:41 pm
Mmmm.. el ejercicio no sera ponerle comentarios al programa, no? :silbar:
Aun así, me parece que tendrías que enfocarlo de otra forma.. O sea, comprendes algo del código?
Si estas comenzando a aprender, te va a convenir aprender sobre funciones, variables, bucles (si es que no sabes, claro) y entonces, hacer una consulta mas puntual.

Saludos!


Título: Re: POR FAVOR AYUDA CON PROGRAMA EN C++
Publicado por: Almapa en 10 Noviembre 2013, 21:28 pm
Creo que Vaagish tiene razón, es imposible que no entiendas ninguna de las líneas. Si no sabes que hace un comando en concreto tienes esta página que está muy bien. http://www.cplusplus.com/

La función que puede que te pierdas un poco es en la de "metodogaussjordan" pero si tienes el algoritmo o método de este tipo de resolución lo entenderás rápidamente.

Si tienes dudas más concretas no dudes en preguntarlas, pero demuestra que es un problema o ejercicio tuyo y no nuestro.

Un saludo!


Título: Re: POR FAVOR AYUDA CON PROGRAMA EN C++
Publicado por: lolo18 en 10 Noviembre 2013, 23:11 pm
ok, gracias por la pagina.