-
Notifications
You must be signed in to change notification settings - Fork 0
/
EchelonForm.cc
62 lines (46 loc) · 1.23 KB
/
EchelonForm.cc
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
#include <iostream>
#include <vector>
#include <algorithm>
#include "Number.hh"
#include "Matrix.hh"
#include <string>
using namespace std;
void echelonform (Matrix& mat, int n){
if (n == mat.numero_lineas()) return;
else {
//Buscamos un elemento distinto de 0
int i,j;
mat.buscar_pivote(i,j,n);
//cout << "EL PIVOTE ES LINEA: " << i << " COLUMNA: " << j << endl;
if (i==-1) return;
mat.cambiar_linea(n,i);
Number k = mat.consultar_numero(n,j);
mat.dividir_linea(n,k);
//mat.escribir();
for (int x=n+1; x<mat.numero_lineas(); ++x){
mat.restar_lineas(n,j,x);
//cout << "restar la linea " << x << " menos la linea " << n <<endl;
}
//mat.escribir();
++n;
echelonform (mat, n);
}
}
int main (){
cout << "Introduce tamaño de la matriz" << endl;
int n,m;
cin >> n >> m;
Matrix mat (n,m);
cout << "Introduce los valores de la matriz" << endl;
mat.leer();
echelonform (mat, 0);
cout << "La matriz en ech. form es: " << endl;
mat.escribir();
string respuesta;
cout << "¿Quieres la matriz sin denominadores? [si/no]" << endl;
cin >> respuesta;
if (respuesta == "si")
mat.sin_den();
cout << "Matriz sin denominadores: " << endl;
mat.escribir();
}