Matriz como argumento de función
Publicado por Daniel (1 intervención) el 19/09/2004 13:27:56
Hola a todos!
Estoy empezando a programar en C por mi cuenta.
Utilizo GCC 3.3.3 en una Debian GNU/Linux.
El asunto por el que escribo es el siguiente:
Estoy editando un programa en el que declaro una matriz bidimensional en la función main() y empiezo a trabajar con ella pasándola de parámetro a funciones. El código resumido sería:
int n, m;
void Inicio() {
.....
}
void Rellenar (double A[n][m]) {
...
}
void Mostrar(double A[n][m]) {
... /* Muestra todos los valores de la matriz según lo asignado */
}
void Comprobacion (double A[n][m]) {
printf("%ld", A[1][3]); /* Imprime 0.000000 */
if (A[1][3] == 0.000000) {
print ("Correcto\n");
} else {
print ("Incorrecto\n");
}
/* Imprime incorrecto aunque valga 0.000000 */
}
int main (void) {
Incio(); /* Función que pide a el usuario la dimensión del matriz
* y la almacena en la variables globales n y m */
double matriz[n][m]; /* Declaración de la matriz con la que trabajo */
Rellenar(matriz); /* Relleno la matriz con valores */
Mostrar(matriz); /* Muestra todos los valores de la matriz correspondiendo
* con los asignados en Rellenar */
Comprobar(matriz); /* Aquí es donde empieza a fallar el programa */
}
¿Hago bien el paso de la matriz? ¿Qué es lo que falla en la comparación?
PD: La función Comparación no falla siempre. Depende según los datos asignados en la matriz. Con los que no falla, no falla nunca y con los que falla, falla siempre.
Gracias por su atención y ayuda.
Estoy empezando a programar en C por mi cuenta.
Utilizo GCC 3.3.3 en una Debian GNU/Linux.
El asunto por el que escribo es el siguiente:
Estoy editando un programa en el que declaro una matriz bidimensional en la función main() y empiezo a trabajar con ella pasándola de parámetro a funciones. El código resumido sería:
int n, m;
void Inicio() {
.....
}
void Rellenar (double A[n][m]) {
...
}
void Mostrar(double A[n][m]) {
... /* Muestra todos los valores de la matriz según lo asignado */
}
void Comprobacion (double A[n][m]) {
printf("%ld", A[1][3]); /* Imprime 0.000000 */
if (A[1][3] == 0.000000) {
print ("Correcto\n");
} else {
print ("Incorrecto\n");
}
/* Imprime incorrecto aunque valga 0.000000 */
}
int main (void) {
Incio(); /* Función que pide a el usuario la dimensión del matriz
* y la almacena en la variables globales n y m */
double matriz[n][m]; /* Declaración de la matriz con la que trabajo */
Rellenar(matriz); /* Relleno la matriz con valores */
Mostrar(matriz); /* Muestra todos los valores de la matriz correspondiendo
* con los asignados en Rellenar */
Comprobar(matriz); /* Aquí es donde empieza a fallar el programa */
}
¿Hago bien el paso de la matriz? ¿Qué es lo que falla en la comparación?
PD: La función Comparación no falla siempre. Depende según los datos asignados en la matriz. Con los que no falla, no falla nunca y con los que falla, falla siempre.
Gracias por su atención y ayuda.
Valora esta pregunta


0