Aprendizaje Asesoría en C#

Tema en 'Desarrollo' iniciado por Neflÿte, 14 Jun 2017.

  1. Neflÿte

    Neflÿte Insider Principiante

    6
    0
    58
    Hola a todos:

    Soy estudiante de informática. Prácticamente soy novato y apenas estoy aprendiendo lo básico en Programación en C# y quisiera solicitar asesoría por este medio.

    Estoy desarrollando un traductor sencillo de 10 palabras español-inglés en una Aplicación de Windows Forms, para el cual hice una lista de las 10 palabras en español y a su vez esas mismas 10 palabras con su equivalente en inglés. Utilicé un ciclo for para que busque la palabra que el usuario estaría ingresando y me devuelva palabra que se encuentra en la misma posición pero en el listado del otro idioma de modo que me devuelva el valor como traducción. El detalle es que tengo que crear dos condicionales, de tal forma que de acuerdo al radiobutton que esté seleccionado ayude al programa a identificar más fácilmente el idioma en el que está escrita la palabra que ingresó el usuario y me haga la traducción de la palabra, pero a su vez, tengo que crear también una condicional para indicarle al programa que si el usuario ingrese una palabra que no esté dentro de las 10 que tengo escritas en el diccionario, me aparezca un mensaje de error.

    He estado haciendo unas pruebas y cuando ejecuto mi programa para traducir una palabra que no está dentro del diccionario creado, cuando traduzco de español a inglés no me aparece el mensaje de error, sin embargo cuando lo hago de inglés a español sí me manda el mensaje de error. ¿Alguien me podría asesorar por favor para ver dónde está el error en mi código y cómo puedo hacer para que el programa ejecute correctamente lo que requiero?

    Esto es lo que llevo escrito:

    usingSystem;
    usingSystem.Collections.Generic;
    usingSystem.ComponentModel;
    usingSystem.Data;
    usingSystem.Drawing;
    usingSystem.Linq;
    usingSystem.Text;
    usingSystem.Threading.Tasks;
    usingSystem.Windows.Forms;

    namespaceTraductor__Varias_Palabras_
    {
    publicpartialclassTranslator:Form
    {
    publicTranslator()
    {
    InitializeComponent();
    }

    privatevoid label1_Click(object sender,EventArgs e)
    {

    }

    privatevoidBtnTraducir_Click(object sender,EventArgs e)
    {
    string[] espanol = newstring[10]{"hola","noche","niño","lapiz","pulsera","reloj","bebe","escuela","calle","ciudad"};
    string[] ingles = newstring[10]{"hello","night","child","pencil","bracelet","clock","baby","school","street","city"};
    string palabra;
    int i;
    palabra =TxtPalabra.Text;

    if(RbInglesEspanol.Checked==true)
    {
    for(i =0; i <10; i++)
    {
    if(palabra == ingles)

    TxtTraducción.Text= espanol;
    }
    }

    if(RbEspanolIngles.Checked==true)
    {
    for(i =0; i <10; i++)
    {
    if(palabra == espanol)

    TxtTraducción.Text= ingles;
    }
    }
    else
    {
    MessageBox.Show("La palabra no fue encontrada");
    }
    }

    privatevoidBtnSalir_Click(object sender,EventArgs e)
    {
    Application.Exit();
    }

    privatevoidTranslator_Load(object sender,EventArgs e)
    {
    AcceptButton=BtnTraducir;
    }
    }
    }
     
  2. derfel

    derfel Insider conocido

    127
    24
    292
    Buenas.

    Así a simple vista, te falta un ELSE para indicar el error de que la palabra no fue encontrada.
    Bajo la condicion:
    if (RbEspanolIngles.Checked == true)

    sí que tienes puesto un else para cuando no se encuentre, pero bajo la condición:
    if (RbInglesEspanol.Checked == true)

    no lo tienes.

    Saludos.
     
  3. Neflÿte

    Neflÿte Insider Principiante

    6
    0
    58
    Hola derfel:

    Gracias por dar respuesta a mi consulta.

    Originalmente había puesto el else después de la condición que creé en cada if, pero el resultado era que cuando intentaba traducir una palabra, incluso siendo alguna de las que tengo en la lista, me aparecía el mensaje de error que coloqué en el else hasta que el ciclo llegaba a la posición donde se encontraba palabra que devolvía como valor de la traducción, así que lo que hice fue poner el else hasta el final para tratar de sacarlo del bucle, pero el resultado que obtuve fue el que publiqué en el post, es decir, ahorita lo que hace el else es colgarse del último if y por eso es que solamente cuando intento traducir de inglés a español y escribo alguna palabra que no esté en el diccionario me devuelve el mensaje de error. Aún no sé cómo puedo sacar el else para que no quede dentro del bucle, es lo que estoy tratando de investigar. Espero haberme dado a entender.
     
  4. arguinyano

    arguinyano Insider Principiante

    4
    0
    62
    Yo creo que has de cambiar este:
    if(RbEspanolIngles.Checked==true)
    por este
    else if(RbEspanolIngles.Checked==true)

    prueba a ver, un saludo.
     
  5. Neflÿte

    Neflÿte Insider Principiante

    6
    0
    58
    Hola arguinyano:

    Acabo de realizar algunas pruebas con el tip sugerido.

    Cuando tecleo alguna palabra de las que tengo incluidas en el diccionario tanto en inglés como en español, al momento de realizar la traducción se ejecuta correctamente el programa, sin embargo no me está mandando el mensaje de error cuando ingreso alguna palabra que no esté incluida, tanto hago la prueba de español a inglés o viceversa. :'(
     
  6. arguinyano

    arguinyano Insider Principiante

    4
    0
    62
    Prueba esto:
    string[] espanol = newstring[10]{ "hola","noche","niño","lapiz","pulsera","reloj","bebe","escuela","calle","ciudad"};
                string[] ingles = newstring[10]{ "hello","night","child","pencil","bracelet","clock","baby","school","street","city"};
                string palabra;
                int i;
                int error = 0;
                palabra = TxtPalabra.Text;
    
                if (RbInglesEspanol.Checked == true)
                {
                    for (i = 0; i < 10; i++)
                    {
                        if (palabra == ingles)TxtTraducción.Text = espanol;
                        else error++;
                    }
                }
    
                if (RbEspanolIngles.Checked == true)
                {
                    for (i = 0; i < 10; i++)
                    {
                        if (palabra == espanol) TxtTraducción.Text = ingles;
                        else error++;
                    }
                }
                if (error >= 10) MessageBox.Show("La palabra no fue encontrada");
     
    Última edición: 15 Jun 2017
  7. Neflÿte

    Neflÿte Insider Principiante

    6
    0
    58
    Hola arguinyano:

    Volví a realizar las pruebas con el tip sugerido, pero me envía los siguientes errores de compilación:

    Errores.JPG
    Errores Compilación.JPG
     
  8. arguinyano

    arguinyano Insider Principiante

    4
    0
    62
    Ya te lo modifique, se me olvido incluir la posición en matriz. Prueba a hora a ver.

    No se porque me pone <i> en vez de ""(no me muestra los corchetes ..) el foro este va un poco raro.

    Basicamente es añadir (abrir corchete, i, cerrar corchete) detrás de los 2 espanol y los 2 ingles. ''


    *se ve que corchete i es algo del foro y no se puede usar.

    ◍ Imgur: The most awesome images on the Internet - http://imgur.com/a/BQZyz <-- foto del codigo
     
    Última edición: 15 Jun 2017
  9. Neflÿte

    Neflÿte Insider Principiante

    6
    0
    58
    Una disculpa por la tardanza.

    Acabo de realizar las pruebas y funciona perfectamente.

    Muchísimas gracias arguinyano !!
    :mola: