Código C++:
Ver original
#include <iostream> #include <iomanip> #include <vector> #include <cmath> #include <cstdlib> using namespace std; void leerDimensiones(unsigned &n, unsigned &m){ try{ cout<<"Numero de filas y columnas (0 y 0) para salir: "<<endl; cin>>n>>m; if(n==0 && m==0) throw string("¡Error! Matriz vacía."); if(n<=0) throw 1; if(m<=0) throw 2; }catch(int e){ switch(e){ case 1: cout<<"El numero de filas debe ser mayor a 0!"<<endl;break; case 2: cout<<"El numero de columnas debe ser mayor a 0!"<<endl; break; } leerDimensiones(n,m); } } void leerlim(double &li, double &ls){ try{ cout<<"Limites inferior y superior: "<<endl; cin>>li>>ls; if(li>=ls) throw 1; }catch (int e){ cout<<"El limite inferior debe ser menor al superior !"<<endl; leerlim(li,ls); } } int **randMatE(unsigned n, unsigned m, int li, int ls) { unsigned i,j,d=ls-li; int **a; a=new int*[n]; for (i=0;i<n;i++){ a[i]=new int[m]; for (j=0;j<m;j++) return a; } void showMat(int **a, unsigned n, unsigned m){ unsigned i,j; for (i=0;i<n;i++){ for (j=0;j<m;j++){ cout<<" "<<setw(8)<<setprecision(5)<<a[i][j]; if ((j+1)%10==0) cout<<endl; } cout<<endl; } } int **trans(int **a, unsigned n, unsigned m) { unsigned i,j;int **at; at=new int *[n]; for(i=0;i<m;i++) at[i]=new int(m); for(i=0;i<n;i++){ for(j=0;j<m;j++) at[j][i]=a[i][j]; } return at; } int main(){ double li,ls;int **a; unsigned n,m; cout<<"***** Matriz traspuesta *****"<<endl; try{ do { leerDimensiones(n,m); leerlim(li,ls); a=randMatE(n,m,li,ls); showMat(a,n,m); a=trans(a,n,m); cout<<"Matriz transpuesta"<<endl; showMat(a,m,n); } while(n!=0 && m!=0); } catch(string &e) { cout<<e; } return 0; }
que funciona hasta que pongo matrices grandes como 15x12
creo que el error esta en la funcion:
Código C++:
realmente no se que estoy haciendo mal...Ver original
int **trans(int **a, unsigned n, unsigned m) { unsigned i,j;int **at; at=new int *[n]; for(i=0;i<m;i++) at[i]=new int(m); for(i=0;i<n;i++){ for(j=0;j<m;j++) at[j][i]=a[i][j]; } return at; }
Gracias de antemano