POR FAVOR AYUDA CON PROGRAMA EN C++

Iniciado por lolo18, 10 Noviembre 2013, 11:12 AM

0 Miembros y 1 Visitante están viendo este tema.

lolo18

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.

Vaagish

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!

Almapa

#2
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!

lolo18