Foro de elhacker.net

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.

Código:
#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
  1. #include<iostream>
  2. #include <cstdlib>
  3. #include<vector>
  4. #include<algorithm>
  5. #include <iomanip>
  6. using namespace std;
  7.  
  8.  
  9. int main(){
  10.    int m,n;
  11.    cout<<"introduzca el numero de filas"<<endl;
  12.    cin>>m;
  13.    cout<<"introduzca el numero de columnas"<<endl;
  14.    cin>>n;
  15.    vector<vector<int> > matriz ( m, vector<int> ( n ) );
  16.    vector<vector<int> > matrizt ( n, vector<int> ( m ) );
  17.    int k = 0;
  18.  for ( int i = 0; i < m; i++ ) {
  19.    for ( int j = 0; j < n; j++ ){
  20.      //cout << "["<<i+1<<"]"<< "["<<j+1<<"]= ";/*activa esta y la siguiente para entrar a mano*/
  21.      //cin >>matriz[i][j];
  22.      matriz[i][j] = k++;/*y desactivas esta*/
  23.    }
  24.  }
  25.  for ( int i = 0; i < m; i++ ) {
  26.    for ( int j = 0; j < n; j++ )
  27.      cout<< setw ( 3 ) << matriz[i][j] <<' ';
  28.    cout<<'\n';
  29.    }
  30.    for(int i=0;i<n;i++){
  31.             for(int j=0;j<m;j++){
  32.                  matrizt[i][j]=matriz[j][i];
  33.  
  34.              }
  35.    }
  36.  cout<<'\n';
  37.  for ( int i = 0; i < n; i++ ) {
  38.    for ( int j = 0; j < m; j++ )
  39.      cout<< setw ( 3 ) << matrizt[i][j] <<' ';
  40.    cout<<'\n';
  41.  }system("pause");
  42.   // muestra(matriz,n,m);
  43.   // transpon(matriz,n,m);
  44.  
  45.    system("pause");
  46.    return 0;
  47.  }
  48.  

Saluditos!.


Título: Re: transponer matriz c++
Publicado por: indict en 19 Marzo 2013, 00:28 am
muchas gracias  :D