Foros del Web » Programación para mayores de 30 ;) » C/C++ »

dimension de array o puntero

Estas en el tema de dimension de array o puntero en el foro de C/C++ en Foros del Web. Hola! Mi duda es la siguiente: quiero definir la dimension de una matriz bidimensional (una tabla) segun el numero de filas y columnas que introduzca ...
  #1 (permalink)  
Antiguo 15/09/2008, 08:18
 
Fecha de Ingreso: septiembre-2008
Mensajes: 22
Antigüedad: 15 años, 7 meses
Puntos: 0
dimension de array o puntero

Hola!
Mi duda es la siguiente:
quiero definir la dimension de una matriz bidimensional (una tabla) segun el numero de filas y columnas que introduzca el usuario. En el ejemplo se trata de multiplicar dos matrices a y b para obtener p.

La primera opcion (array):

int m,n,k,i,j,l;
float h;
cout<<"Ingrese orden de la primera matriz A[mxn]"<<endl;
cout<<"m = "<<endl;
cin>>m;
cout<<"n = "<<endl;
cin>>n;
cout<<"Ingrese orden de la columa de la matriz b["<<n<<"][k]"<<endl;
cout<<"k = "<<endl;
cin>>k;
int a[m][n];
int b[n][k];
int p[m][k];


da error ya que la declaracion de un array exige especificar su longitud como una expresion constante.

La segunda opcion (punteros):


int m,n,k,i,j,l;
float h;
cout<<"Ingrese orden de la primera matriz A[mxn]"<<endl;
cout<<"m = "<<endl;
cin>>m;
cout<<"n = "<<endl;
cin>>n;
cout<<"Ingrese orden de la columa de la matriz b["<<n<<"][k]"<<endl;
cout<<"k = "<<endl;
cin>>k;
int *a=new int [m][n];
int *b=new int [n][k];
int *p=new int [m][k];


me da tambien error puesto que al crear arrays multidimensionales de objetos con new la primera dimension (la de más a la izquierda) es la única que puede ser una variable.

Mi pregunta es: existe alguna forma de poder definir ambas dimensiones segun las especificaciones del usuario?? (creo que una opcion podria ser un doble puntero ** pero no estoy muy segura de como utilizarlo).

Gracias de antemano.
  #2 (permalink)  
Antiguo 15/09/2008, 11:01
 
Fecha de Ingreso: abril-2008
Ubicación: En algun lugar del D.F
Mensajes: 3
Antigüedad: 16 años
Puntos: 0
Respuesta: dimension de array o puntero

Cita:
Iniciado por mireis Ver Mensaje
Mi pregunta es: existe alguna forma de poder definir ambas dimensiones segun las especificaciones del usuario?? (creo que una opcion podria ser un doble puntero ** pero no estoy muy segura de como utilizarlo).
Si usando el doble puntero de esta forma
int **matA; // defino el dobel puntero
cout<<"da las columnas ";
cin >> col;
cout <<"da las filas ";
cin>>fil;
int **matA = new int[fil];
for(int i = 0; i < filas ; i++)
int *matA[i] = new int[col];
y com reservaste memoria dinamicamente usa delete
for( int = 0; i < filas; ++i)
delete [] mat[filas]
delete [] mat
si lo haces con c++ si usas c usa malloc y free
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:46.