Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
Crear matriz puntero de dimensión variable
Enviado por chuvaca007 el día 22 de julio de 2008
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.
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][b]);
}
}
}
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 se lo agradecería.
Saludos
Puedes hacer que la matriz sea un doble puntero:
double **a;
Pides al usuario el tamaño de la matriz: int n, m;
Y guardas memoria gracias a la función calloc:
a = (double ** ) calloc(m, sizeof(double *));
if(a == NULL )
{
printf("\nERROR: No hay suficiente.\n");
exit(1);
}