Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: indict en 23 Febrero 2013, 13:12 PM

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:


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!.
Título: Re: transponer matriz c++
Publicado por: indict en 19 Marzo 2013, 00:28 AM
muchas gracias  :D