- Esto puede ser el problema que queres decir que solo traduce una palabra y no mas; despues que hace la opcion de añadir o traducir la variable "op" vale 1 o 2, y aunque decidas traducir otra palabara poniendo "s", op va a valer 1 o 2 y como no cumple la condicion de la linea 32 no entra en ese bucle nunca mas. Tenes que reiniciar "op" en 0 por ejemplo en la linea 42.
- En el procedimiento traducir() no tiene sentido un 'switch' porque elija traducir de una manera u otra hace lo mismo (llama al mismo metodo con el mismo parametro.
En vez de:
Código:
switch (op) {
case 1:
tradu(op);
break;
case 2:
tradu(op);
break;
}
pone solo esto
Código:
tradu(op)
- Nunca traduce una 'oracion' porque lo hiciste para solo traducir por palabras. Tendria que hacer alguna manera de que ingrese una oracion y que compares palabra por palabra. Puede que hallas agregado una 'oracion' y busques esa exactamente (todas las letras, espacios o cualquier caracter coincida); ahi si funcionaria pero no es para nada practico y no es coherente. *
- Por el tema de la repeticion de palabras es pedir que palabra queres introducir y en que idioma esta, entonces busca en la correspondiente variable de la estructura. Si esta no la agregas, y si no esta como ya sabes la palabra en un idioma lo agregas y pedis que ingrese en el otro idioma esa palabra.
Y cuando busques una palabra para traducir deberias fijarte si hay mas palabras en el "diccionario", para eso deberia usarse la variable lleno; o no seria necesario que exista esa variable porque preguntas por alguna cadena (eng o esp) si es nulo (creo que todos las cadenas son nulas por defecto sino usarias "lleno" solamente) termina de recorrer el diccionario. En este caso para hacer eso, cuando recorres en la condicion del 'for' agregas la condicion trad[n].eng==NULL. **
Un consejo: no te obsesiones con usar condiciones; pensa si fueras a un ATM y te pregunte cada vez que ingrese a una opcion si desea seguir.
Es solo un consejo
*Si lo que quieres es traducir oraciones, seria algo bastante mas complejo, porque pensa que quieras traducir diferentes oraciones con las mismas palabras, tienen diferentes significados por ende las combinaciones posibles serias muchisimas y ademas traducidas. Si lo que quieres es hacer una programa realmente funcional, es un trabajo mucho mas dificil
**Aclaracion: viendo que usas la variable lleno en otro procedimiento quedaria mejor usar eso y no lo de NULL, pero tendrias un costo minimo de momoria inceseario.
Saludo!