[ Foro de C++ ]
debo hacer un programa que me despeje un sistema de ecuaciones usando gauss o gauss y jordan.
tengo la mayoria del codigo pero me presenta errores, esta hecho en c++ devc. les agradezco me ayuden a corregirlo!!
gracias
#ifdef __MSDOS__
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#else
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <conio.h>
using namespace std;
#endif
int main ()
{
int i, j, k, n;
cout<<"ingrese el n/243mero de ecuaciones (n): ";
cin>> n;
cin.get();
float termino, **matriz = new float*[n];
char literal, *literales = new char [n+1];
for (i=0; i<n; i++)
{
literales[i] ='0';
cout<< "ingrese el literal de la variable " <<(i+1) << ":";
do {
literal =tolower (getch ());
}
while (!isalpha (literal) strchr (literales, literal));
literales[i] = literal;
cout<< literal <<endl;
}
for (i=0; i<n; i++)
{
matriz[i] = new float[n+1];
for (j=0; j<n; j++)
{
cout<< "ingrese el coeficiente de la variable" <<literales[j] << "de la ecuacion" <<(i+1)<< ":";
cin>> matriz [i] [j];
}
cout<< "ingrese la constante de la ecuacion"<< (i+1)<< ":";
cin>> matriz [i] [n];
}
cout<< endl;
for (i=0; i<n; i++)
{
if (matriz[i] [i]==0.0)
{
cerr << "error: division entre cero." << endl<< endl<<;
system ("pause");
return EXIT_FAILURE;
}
for (k=0; k<n; k++)
if (k!=i)
{
termino = matriz[k] [i] / matriz[i] [i];
for (j=0; j<=n; j++)
matriz[k] [j] -= termino * matriz[i] [j];
}
}
cout<< "solucion:" <<endl << endl;
for (i=0; i<n; i++)
{
termino = matriz[i] [n] / matriz [i] [i];
cout << literales[i] << "=" << termino << endl;
}
cout<< endl;
system ("pause");
return EXIT_SUCCESS;
}
Da más detalles sobre los problemas que tienes. Yo veo que cosas que no me gustan y que son propensas a errores, pero aun así quizá tus problemas no sean esos.
Por ejemplo, líneas como
float termino, **matriz = new float*[n];
en las que mezclas variables simples y arrays, y además defines arrays como punteros, y además das valor a unas variables sí y a otras no, son una enorme fuente de problemas y resultarían muy fáciles de mejorar.
El hecho de que esas líneas sean poco legibles hace que se te puedan escapar errores como éste:
cin>> matriz [i] [n];
en el que el índice "n" está fuera del límite que has reservado para la matriz, así que el programa puede interrumpirse en este punto o comportarse erróneamente.
Hay otros detalles peligrosos, como que mezcles "cin >> ", "cin.get" y "getch" en un fragmento tan corto (y aun así termines con un "system("pause")").
Si intentas que tu código sea legible, te será mucho más fácil ver los errores a ti mismo. Si "lo compactas para escribir menos", perderás mucho más tiempo en buscar fallos que lo que habrías tardado en escribirlo de forma más clara. ;-)
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)