• Viernes 8 de Noviembre de 2024, 07:09

Autor Tema:  crear una matriz puntero de dimensión variable  (Leído 1793 veces)

chuvaca007

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
crear una matriz puntero de dimensión variable
« en: Martes 22 de Julio de 2008, 21:54 »
0
Buenas tarde, foreros.
Necesito una ayuda de Uds.
Necesito hacer un programa en C, que sirva para almacenar una matriz puntero de dimensión variable, es decir, que la dimensión de la matriz dependa de un valor de entrada del usuario. No sé si es posible hacer eso.

Yo comencé mi código de la siguiente forma:

/*comienzo.c*/
#include <stdio.h>
#include <conio.h>
#include <new.h>

void solicitar(int tam2, float *matriz2[tam2][tam2])
{
int a,b;
for(a=0;a<tam2;a++)
{
for(b=0;b<tam2;b++)
{
printf("Introduzca el valor del término de la fila %d y la columna %d: ",a+1,b+1);
scanf("%f",&*matriz2[a]);
}
}
}

void main()
{
int tam,g,h;
printf("Coloca la dimensión de la matriz a la cual deseas invertir: ");
scanf("%d",&tam);
float *matriz[tam][tam];
solicitar(tam,*matriz[0:tam-1][0:tam-1]);
clrscr();
printf("La matriz introducida es: n");
for(g=0;g<tam;g++)
{
for(h=0;h<tam;h++)
{
printf("%f ",*matriz[g][h]);
}
printf("n");
}
getch();
}

Pero siempre me da errores porque supuestamente las dimensiones de la matriz deben ser constantes para el programa y no pueden ser definida por el usuario.
Si alguién me puede decir como hacerle entender al compilador que la dimensión de la matriz la determinará el usuario con el valor introducido se lo agradecería mucho.
Saludos

Iganguli

  • Miembro activo
  • **
  • Mensajes: 51
  • Nacionalidad: mx
    • Ver Perfil
Re: crear una matriz puntero de dimensión variable
« Respuesta #1 en: Miércoles 23 de Julio de 2008, 22:58 »
0
puedes probar con un puntero doble ej: float **mat, despues pides al usuario que determine el tamaño pidiendo filas y columnas, y con "new" o "malloc" creas la matriz en el double puntero;

Código: Text
  1. printf("da las filas");
  2. scanf("%d", &filas);
  3. printf("da las columnas");
  4. scanf("%d", &columnas);
  5. **mat = new float[filas];
  6. for( i = 0; i < filas; i++)
  7.  *mat[i] = new float[columnas];
  8.  
y asi haces la matriz

Elforious

  • Miembro activo
  • **
  • Mensajes: 44
    • Ver Perfil
Re: crear una matriz puntero de dimensión variable
« Respuesta #2 en: Viernes 25 de Julio de 2008, 08:01 »
0
Pero recuerda que cuando definís un puntero con new, tenés que eliminarlo con delete.

Código: Text
  1.  
  2. **mat = new float[filas];
  3. // demás código...
  4. delete mat;
  5.  
  6.  


Variable dinámica que creas, variable dinámica que destruyes.

Iganguli

  • Miembro activo
  • **
  • Mensajes: 51
  • Nacionalidad: mx
    • Ver Perfil
Re: crear una matriz puntero de dimensión variable
« Respuesta #3 en: Viernes 25 de Julio de 2008, 18:53 »
0
Citar
Pero recuerda que cuando definís un puntero con new, tenés que eliminarlo con delete

en este caso se hace asi
Código: Text
  1. for( int = 0; i < filas; ++i)
  2.     delete [] mat[filas]
  3.  delete [] mat
  4.  
  5.  

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: crear una matriz puntero de dimensión variable
« Respuesta #4 en: Lunes 28 de Julio de 2008, 14:49 »
0
Tened en cuenta que new() es de C++ y no de C. Para C puro, utilizad malloc() y free(). Saludos.