transponer matriz c++

Iniciado por indict, 23 Febrero 2013, 13:12 PM

0 Miembros y 1 Visitante están viendo este tema.

indict

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! :)

leosansan

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:


Código (cpp) [Seleccionar]
#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!.

indict