Buen día, les pido me puedan explicar por que me deja cierto error este programa que he hecho en c++.
#
Código:
include <iostream>
using namespace std;
typedef double** matriz;
matriz crear_matriz(int m, int n)
{
matriz M=0;
M = new double* [m];
for (int i = 0; i < m; i++)
{
M[i]=new double [n];
}
return M;
}
matriz impr_matriz(int m, int n, matriz M)
{
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if(j==n-1)
{
cout<<M[i][j]<<" "<<endl;
}
else
{
cout<<M[i][j]<<" ";
}
}
}
}
matriz entrar_salir(matriz A, int m, int n)
{
int f;
int g;
char s;
cout<<"¿Cuál es el pivote? (m,n): ";
cin>>f>>s>>g;
cout<<f<<s<<g<<endl;
double y_st=A[f-1][g-1];
for (int k = 0; k < n; k++)
{
A[f-1][k]/=y_st;
}
for (int i= 0; i < m; i++)
{
if(i!=(f-1))
for (int j = 0; j < n; j++)
{
A[i][j]=A[i][j]-(A[i][g-1]*A[f-1][j]);
}
else
{
i++;
}
}
return A;
}
matriz rellena_matriz(int m, int n, matriz M)
{
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cout<<"Ingresa el elemento a_"<<i+1<<j+1<<" = ";
cin>>M[i][j];
}
}
return M;
}
int main() {
char l=0;
do
{
matriz A=NULL;
cout<<"Algoritmo para entrar y salir de la base"<<endl;
cout<<"Ingresa la matriz en su form canónica (o en la forma estándar)"<<endl;
cout<<"Introduce el tamaño de la matriz A en la froma m,n: ";
int n;
int m;
char s;
cin>>m>>s>>n;
cout<<"Ingresa los datos de la matriz A: "<<endl;
A=crear_matriz(m,n);
rellena_matriz(m,n, A);
cout<<endl;
impr_matriz(m,n,A);
cout<<endl;
entrar_salir(A, m, n);
impr_matriz(m, n, A);
cout<<"Wanna do it again? Press Y/y if you want to, or another key to quit ";
cin>>l;
}
while (l=='Y'|| l=='y');
}
Las dudas son las siguientes: como es la "movida" en los arreglos, ciertamente tengo mucha confusión. El algoritmo en si es solo seleccionar un elemento Aij de la matriz y reducirlo a una forma en que pueda ser introducido a una base, es decir, el elemento seleccionada sea 1 y los demas de las misma columna sean cero. Esto lo hago dividiendo toda la fila entre el pivote y despues ir haciendo el codigo que tengo en entrar_salir, pero en si no me ejecuta nada de la resta si elijo no se, digamos el A21 no ejecuta nada para j>1, para las demas columnas.