eliminar fila y columna de una matriz
Publicado por Nicolas Haro (4 intervenciones) el 24/09/2021 07:57:42
Hola amigos programadores.
Tengo una duda sobre c++.Sucede que tengo una matriz que quiero eliminar una fila y columna n mediante el uso de punteros sin embargo primero decidi crear un codigo simplre sin punteros para despues en base a este usar punteros, el usuario ingresa n (numero de fila y columna a eliminar), para esto cree un doble for para que cuando las variable del for tomen valores igual o superiores a la posicion n, el valor de dicha posicion se cambie por el valor n+1. sin embargo intento correr el programa y algo no funciona ya que la matriz no se imprime ni tampoco el programa me devuelve un error. Adjunto mi codigo. De antemano gracias por su tiempo.
#include <iostream>
#include <vector>
#include <time.h>
using namespace std;
int main()
{
int a,b;
cin>>a;
vector <vector<int>> A(a);
for(int i=0;i<a;i++){
A[i].resize(a);
}
vector <vector<int>> X(a);
for(int i=0;i<a;i++){
X[i].resize(a);
}
for(int i=0;i<a;i++){
for(int j=0;j<a;j++){
A[i][j]= 1 + rand()%100;
}
}
cout<<"matriz aleatoria\nA:\n";
for(int i=0;i<a;i++){
cout<<"| ";
for(int j=0;j<a;j++){
cout<<A[i][j]<<" ";
}
cout<<"|"<<endl;
}
cin>>b;
cout<<"matriz aleatoria A despues de eliminar la fia y columna "<<b<<"\nA:\n";
vector <vector<int>> C(a- 1);
for(int i=0;i<a- 1;i++){
C[i].resize(a- 1);
}
for(int i=0;i<a;i++){
for(int j=0;j<a;j++){
if(j==b- 1){
X[i][j]=A[i+ 1][j+ 1];
}else{
X[i][j]=A[i][j];
}
}
}
for(int i=0;i<a;i++){
cout<<"| ";
for(int j=0;j<a;j++){
cout<<X[i][j]<<" ";
}
cout<<"|"<<endl;
}
return 0;
}
Tengo una duda sobre c++.Sucede que tengo una matriz que quiero eliminar una fila y columna n mediante el uso de punteros sin embargo primero decidi crear un codigo simplre sin punteros para despues en base a este usar punteros, el usuario ingresa n (numero de fila y columna a eliminar), para esto cree un doble for para que cuando las variable del for tomen valores igual o superiores a la posicion n, el valor de dicha posicion se cambie por el valor n+1. sin embargo intento correr el programa y algo no funciona ya que la matriz no se imprime ni tampoco el programa me devuelve un error. Adjunto mi codigo. De antemano gracias por su tiempo.
#include <iostream>
#include <vector>
#include <time.h>
using namespace std;
int main()
{
int a,b;
cin>>a;
vector <vector<int>> A(a);
for(int i=0;i<a;i++){
A[i].resize(a);
}
vector <vector<int>> X(a);
for(int i=0;i<a;i++){
X[i].resize(a);
}
for(int i=0;i<a;i++){
for(int j=0;j<a;j++){
A[i][j]= 1 + rand()%100;
}
}
cout<<"matriz aleatoria\nA:\n";
for(int i=0;i<a;i++){
cout<<"| ";
for(int j=0;j<a;j++){
cout<<A[i][j]<<" ";
}
cout<<"|"<<endl;
}
cin>>b;
cout<<"matriz aleatoria A despues de eliminar la fia y columna "<<b<<"\nA:\n";
vector <vector<int>> C(a- 1);
for(int i=0;i<a- 1;i++){
C[i].resize(a- 1);
}
for(int i=0;i<a;i++){
for(int j=0;j<a;j++){
if(j==b- 1){
X[i][j]=A[i+ 1][j+ 1];
}else{
X[i][j]=A[i][j];
}
}
}
for(int i=0;i<a;i++){
cout<<"| ";
for(int j=0;j<a;j++){
cout<<X[i][j]<<" ";
}
cout<<"|"<<endl;
}
return 0;
}
Valora esta pregunta


0