Título: transponer matriz c++
Publicado por: indict en 23 Febrero 2013, 13:12 pm
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! :)
Título: Re: transponer matriz c++
Publicado por: leosansan en 23 Febrero 2013, 15:56 pm
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!.
Título: Re: transponer matriz c++
Publicado por: indict en 19 Marzo 2013, 00:28 am
muchas gracias :D
|