• Lenguaje

    C++

  • Descripción

    Resuelve sistemas de ecuaciones con el método de Gauss-Jordan.

    Por ejemplo para resolver el siguiente sistema de ecuaciones:

    2x+y-z=8
    -3x-y+2z=-11
    -2x+y+2z=-3

    Ingrese los siguientes datos:
    Ingrese el número de ecuaciones (n): 3
    Ingrese la literal de la variable 1: x
    Ingrese la literal de la variable 2: y
    Ingrese la literal de la variable 3: z
    Ingrese el coeficiente de la variable 'x' de la ecuación 1: 2
    Ingrese el coeficiente de la variable 'y' de la ecuación 1: 1
    Ingrese el coeficiente de la variable 'z' de la ecuación 1: -1
    Ingrese la constante de la ecuación 1: 8
    Ingrese el coeficiente de la variable 'x' de la ecuación 2: -3
    Ingrese el coeficiente de la variable 'y' de la ecuación 2: -1
    Ingrese el coeficiente de la variable 'z' de la ecuación 2: 2
    Ingrese la constante de la ecuación 2: -11
    Ingrese el coeficiente de la variable 'x' de la ecuación 3: -2
    Ingrese el coeficiente de la variable 'y' de la ecuación 3: 1
    Ingrese el coeficiente de la variable 'z' de la ecuación 3: 2
    Ingrese la constante de la ecuación 3: -3

    Solución:

    x = 2
    y = 3
    z = -1

    Presione una tecla para continuar . . .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#ifdef __MSDOS__
    #include <iostream.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    #include <conio.h>
    #define _getch getch
#else
    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <cctype>
    #include <conio.h>
    using namespace std;
#endif

int main (void)
{
    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 la literal de la variable " << (i+1) << ": ";
        do {
            literal = (char) 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 ecuaci\242n " << (i+1) << ": ";
            cin >> matriz[i][j];
        }
        cout << "Ingrese la constante de la ecuaci\242n " << (i+1) << ": ";
        cin >> matriz[i][n];
    }
    cout << endl;
    for (i=0; i<n; i++)
    {
        if (matriz[i][i]==0.0)
        {
            cerr << "Error: divisi\242n 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 << "Soluci\242n:" << 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;
}