• Miércoles 15 de Mayo de 2024, 23:21

Autor Tema:  Re: Usar un array como parametro  (Leído 1315 veces)

gnome

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Usar un array como parametro
« en: Viernes 29 de Agosto de 2003, 21:28 »
0
Hola , me propuse hacer un pequeño traductor... y lo enfoque de una forma que pense util.
*********************
#include <stdio.h>
#include <string.h>
int i;
char ingl[80];
char word_a[][2][40]= {
"ahora","now",
"",""};

char word_b[][2][40]= {
"boy","chico",
"","" };

/* habrian array hasta word_z */

main()
{
printf("introduzca palabra en ingles: ");
gets(ingl);
if(ingl[0]=='a') { ejec(char word_a[][2]); }
/*cargar la funcion de traduccion con el array correspondientre */
else if(ingl[0]=='b') { /* lo mismo pero con b*/ }
else if(ingl[0]=='c') { /* etc */
.
.
.
.
ejec(char XX[][2])
{
i=0;
while((strcmp(XX[0],""))!=0) {

if(!strcmp(ingl, XX[0])) {
printf("traduccion al aleman: %s", XX[1]);
break;
}
i++;
}
if(!strcmp(XX[0], ""))
printf("no aparece en el diccionarion");
}
}

bien el problema esque para parametrizar la funcion con el array que quiero debo hacerlo por "llamada a referencia" , no es asi?  podria alguien explicarme o poner un ejemplo ? no me sale
gracias de ante mano

Ruso

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Usar un array como parametro
« Respuesta #1 en: Sábado 30 de Agosto de 2003, 13:37 »
0
Lo unico que tienes que hacer es, al declarar y/o definir la función ejec, poner que el argumento a pasar es un puntero, en vez de un array, ya que C no permite el paso de arrays como argumento pero si el de punteros. Es decir, tienes que cambiar:

ejec(char XX[][2]) por ejec(char XX**)

Espero que te sirva de ayuda y comenta aquí si funciona o si era otro el problema.
_________________________________________

Si no fuera por C, usaríamos BASI, PASAL y OBOL

gnome

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Usar un array como parametro
« Respuesta #2 en: Sábado 30 de Agosto de 2003, 14:15 »
0
Gracias , pero sigue dando los mismos errores. A ver si conseguimos solucionarlo
:)

chuidiang

  • Miembro MUY activo
  • ***
  • Mensajes: 123
  • Nacionalidad: es
    • Ver Perfil
    • http://www.chuidiang.com
Usar un array como parametro
« Respuesta #3 en: Lunes 1 de Septiembre de 2003, 09:50 »
0
Lo de los arrays para pasar por parámetro es un poco lio.
Si tienes
char cadena[10], el tipo es char[] y esto es lo que deberías poner como parámetro en la funcion

Si tienes cadena[10][20], etl tipo es char[][20] y eso debes poner de parámetro.

etc, etc.

En tu caso no se muy bien lo que pretendes. La declaración
char word_a[][2][40]= {"ahora","now","",""};
me resulta extraña.

Si nos atenemos a los tipos, si quieres pasar el array completo, ejec() debería coger como parámetro

int ejec (char XX[][2][40])
{
   ...
}

y llamarlo con ejec (word_a) o lo que sea

La linea que pone
if(ingl[0]=='a') { ejec(char word_a[][2]);
tampoco se muy bien que es lo que quieres. Estas llamando a ejec con una array que declaras ahi mismo (por lo de char delante) y es de tipo char [][2] y no esta inicializado. Supongo que esa linea es la que te protesta.

Espero que esto te sirva de algo.

Se bueno.