Hola,
necesitaría ayuda en como transponer una matriz, donde yo doy los elementos.
Creo que faltaría otra función para escribir los elementos de la matriz.
#include<iostream>
#include <cstdlib>
#include<vector>
#include<algorithm>
using namespace std;
typedef vector<int>matriz;
vector<matriz>M(int m,matriz(int n));
void muestra(matriz M, int n, int m){
for(int i=0;i<m;i++){cout<<"[";
for(int j=0;j<n;j++){cout<<M[i][j]<<endl;
}
cout<<"]"<<endl;
}
}
void transpon(matriz M){
for(int i=0;i<matriz.size()-1;i++){
for(int j=i+1;j<matriz.size();j++){
int aux=M[i][j];
M[i][j]=M[j][i];
M[j][i]=aux;
}
}
}
int main(){int M,m,n;
cout<<"introduzca el numero de filas"<<endl;
cin>>m;
cout<<"introduzca el numero de columnas"<<endl;
cin>>n;
muestra(M,n,m);
transpon(M);
system("pause");
return 0;}
¡Gracias por la ayuda! :)
Me temo que tienes mal declarado el tipo de vector bidimensional. Además pretendes guardar en una matriz mxn otra de nxm ¡ ¡ ¡ , it´s imposible!. Tendrás para ello que crear otra matriz de nxm y en ella guardar los traspuestos.
Te lo paso sin función, eso ya es cosa tuya:
#include<iostream>
#include <cstdlib>
#include<vector>
#include<algorithm>
#include <iomanip>
using namespace std;
int main(){
int m,n;
cout<<"introduzca el numero de filas"<<endl;
cin>>m;
cout<<"introduzca el numero de columnas"<<endl;
cin>>n;
vector<vector<int> > matriz ( m, vector<int> ( n ) );
vector<vector<int> > matrizt ( n, vector<int> ( m ) );
int k = 0;
for ( int i = 0; i < m; i++ ) {
for ( int j = 0; j < n; j++ ){
//cout << "["<<i+1<<"]"<< "["<<j+1<<"]= ";/*activa esta y la siguiente para entrar a mano*/
//cin >>matriz[i][j];
matriz[i][j] = k++;/*y desactivas esta*/
}
}
for ( int i = 0; i < m; i++ ) {
for ( int j = 0; j < n; j++ )
cout<< setw ( 3 ) << matriz[i][j] <<' ';
cout<<'\n';
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
matrizt[i][j]=matriz[j][i];
}
}
cout<<'\n';
for ( int i = 0; i < n; i++ ) {
for ( int j = 0; j < m; j++ )
cout<< setw ( 3 ) << matrizt[i][j] <<' ';
cout<<'\n';
}system("pause");
// muestra(matriz,n,m);
// transpon(matriz,n,m);
system("pause");
return 0;
}
Saluditos!.
muchas gracias :D