SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: gnome en Viernes 29 de Agosto de 2003, 21:28
-
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
-
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.
-
Gracias , pero sigue dando los mismos errores. A ver si conseguimos solucionarlo
:)
-
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.