-" Si esto le parece japonés adivine que dice acá: あなたのお母さんは私のガールフレンドです =D "

Pasar valores de arreglos bidimensionales a funciones en c

| sábado, 28 de agosto de 2010
Mientras estoy haciendo el ejercicio 10 (con mi teclado y mouse inalámbrico nuevo =D ) me doy cuenta que uso muchas veces la misma sintaxis para mostrar el arreglo. Entonces se me vino la cabeza de hacer una función para poder mostrarla y no secarme la mente en el intento, pero ¿Cómo se pasa el valor de un arreglo bidimensional a una función?

Es sencillo: no se pasa.

Lo que se pasa es la dirección.

Entonces, si tenemos un arreglo simple de 1 dimensión y queremos pasar el valor a una función simplemente se indica el nombre sin los corchetes. por ej:


#include<stdio.h>
#define K 4 //la constante modificable

//void porque no quiero que me devuelva nada a main()
//Atencion a como se pone el corchete vacío para recibir la direccion

void muestra(int a[])
{
int i;
for(i=0;i<K;i++) printf("%d ",a[i]);
}

main()
{
int i,A[K];
for(i=0;i<K;i++)
{
scanf("%d",&A[i]);
fflush(stdin);
}

//Fijate como va sin corchetes ni nada
//y en la funcion se pone distinto al recibirlo
muestra(A);
}


Pero si el arreglo tiene mas de una dimensión hay que darle el valor de las demás dimensiones, por ejemplo:


#include<stdio.h>
#define K 4 //imaginando que trabajamos con una matriz cuadrada

//La primera dimensión no se pone, pero las demás si

void muestra(int a[][K])
{
int i,j;
for(i=0;i<K;i++) for(j=0;j<K;j++)printf("%d ",a[i][j]);
}

main()
{
int i,j,A[K][K];

for(i=0;i<K;i++)
{
for(j=0;j<K;j++)
{
scanf("%d",&A[i][j]);
fflush(stdin);
}
}

//Sigue poniéndose sin corchetes
muestra(A);
}

estem... creo que está bien, que alguien lo compile y me diga si anda.
y... asi es la cosa... Ahora sigo con el 10 a ver que pasa.

0 comentarios:

Publicar un comentario

licencia

Licencia de Creative Commons
Ejercicios de programación by Iván Neira (ae) is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Based on a work at paraserlicenciado.blogspot.com.