Upeo un poco el hilo con unas dudas q tengo (estoy empezando con C)
Bien, el caso es que en la facultad estamos dando Pascal, pero por mi cuenta quiero aprender C (para no tener q estar esperando para el año q viene).
Estoy intentando portar mi practica de Pascal a C, una "calculadora" de matrices.
Tengo q crear el tamaño de las matrices en tiempo de ejecucion:
En Pascal utilizamos punteros a esquemas de arrays, algo tan simple como:
TYPE
tArray (F, C: INTEGER) = ARRAY [1..F, 1..C] OF REAL;
tpArray = ^tArray;
Estoy intentando hacer lo mismo en C y la unica manera q he encontrado ha sido con la funcion malloc (para reservar memoria y esas gaitas
), algo tal q asi:
Crear_Matriz(float **matriz)
{
short i, j;
// Crear filas
matriz = (float**) malloc(f * sizeof(float*));
if (matriz == NULL) {
printf("Memoria insuficiente.\n");
printf("La ejección se interrumpirá.\n");
printf("Pulse una tecla para terminar ... ");
getchar();
exit(0);
}
// Crear columnas
for (i = 0; i < f; i++) {
*(matriz + i) = (float*) malloc(c * sizeof(float));
if (* (matriz + i) == NULL) {
printf("Memoria insuficiente.\n");
printf("La ejección se interrumpirá.\n");
printf("Pulse una tecla para terminar ... ");
getchar();
exit(0);
}
}
}
¿No hay otra manera menos liante?
Otra cosa, despues de crear las dimensiones de la matriz intento rellenarla con numeros con esta funcion:
int ObtNumMatriz(float **matriz)
{
int i, j;
printf("Introduce los numeros de la matriz: \n");
for (i = 0; i < f; i++)
for (j = 0; j < c; j++) {
printf("matriz [%2hd][%2hd] = ", i, j);
scanf("%f", &matriz[i][j]);
}
}
Lo compilo y todo parece ir bien pero al ejecutar me da error:
cm2236:~/Desktop/matriz DSurf$ ./a.out
Introduce el numero de filas de la matriz
2
Introduce el numero de columnas de la matriz
2
Introduce los numeros de la matriz:
Bus error
A ver si me podeis echar un cable.
Salu2