Aprender inglés, ¿¡en C++!?

Me contó SetRoot a través de un comentario que se le ocurrió hacer un programa en C++ que nos ayudará a aprender palabras en inglés, en sus propias palabras:
Se me ocurrio hacer un programa para aprender ingles y creo que los tiros tambien van por ahi corrígeme:
1 llenar 1000 palabras
2 agruparlas por alguna relacion como emociones articulos y otros(para esto quisiera usar una matriz para acceder a ella mas facil aunque 2 matrices tambien creo q me van :s con punteros y eso ,s)
3 ejecucion: con un par de cases hacer un menu que me permita lanzar 20 palabras al azar(con sran o ran creo + time) con su significado
y despues que me permita hacer un tipo de examen o test con esas mismas palabras desordenadas que cada acierto valga algo para ganar puntos y asi involucrar a los amigos y familiares

Me gustó la idea de hacer un pequeño ‘bosquejo’ de su idea porque precisamente se necesita usar el código de mi último post: Números aleatorios sin repetir en C++. Así que mi algoritmo es algo así:

  1. Crear una matriz tipo string de N filas y 2 columnas, la primera columna son las palabras en inglés; la segunda, en español.
  2. Pedir el número de palabras que el usuario quiera memorizar.
  3. Obtener ese número de palabras aleatoriamente y mostrarlas.
  4. Borrar las palabras y empezar a preguntar el significado de cada una.
  5. Comparar la respuesta del usuario con la respuesta correcta.
  6. Calcular su calificación y mostrarla.

El código es este:

#include
#include
#include
using namespace std;

int nofw;
#define N 8 // numero de pares de palabras en la matriz

bool checkrep(int n, int num[])
{
    for(int i=0; i<nofw; i++)
        if(n == num[i])
            return true;
    return false;
}

int main()
{
    srand(time(NULL));
    string ans, words[N][2] = {{"hi", "hola"}, {"house", "casa"}, {"water", "agua"},
      {"roof", "techo"}, {"chair", "silla"}, {"loudspeaker", "bocina"},
      {"screen", "pantalla"}, {"money", "dinero"}};
    int n, correct=0, wrong=0;
    cout <> nofw;
    // obtener 'nofw' palabras aleatoriamente de nuestra matriz
    int num[nofw];
    for(int i=0; i<nofw; i++)
    {
        do
            n = rand() % N;
        while(checkrep(n, num));
        num[i] = n;
        cout << words[n][0] < " << words[n][1] << endl;
    }
    cin.get(); cin.get();
    system("cls");
    // preguntar el significado de cada palabra
    for(int i=0; i<nofw; i++)
    {
        cout << words[num[i]][0] <> ans;
        if(ans == words[num[i]][1])
        {
            correct++;
            cout <> Bien :)nn";
        }
        else
        {
            wrong++;
            cout <> Mal :(nn";
        }
    }
    cout << "Tuviste un " << (float)correct / (float)nofw * 100 <<
                "% de respuestas correctas.";
    cin.get(); cin.get();
}

Como dije antes, es sólo un bosquejo, pero tal vez sea el punto de partida para un buen proyecto. Para optimizarlo creo que se deberían agregar algunas cosas:

  • Obtener los pares de palabras desde una base de datos
  • Ordenarlas por categorías
  • Que no importe si la respuesta está en mayúsculas o minúsculas
  • Mejorar la interacción con el usuario

16 thoughts on “Aprender inglés, ¿¡en C++!?

  1. oyes disculpa me podrías decir como puedo hacer para subir mis propios programas en mi blog así como tu los publicas con colores y todo eso?
    esque la verdad aun no se casi nada de html y pues me gustaria una ayuda

  2. hola les pido porfavor me ayuden tengo que crear un progrma con la funcion void contar para saber cuantas listas tengo en ese programa y no se como hacer plis ayudenme

  3. Hola thebatzuk, me podrias pasar tu mail, es que tengo unas dudas de como acer un programa me estoy practicando para un parcial y hay uno de los ejercicios que no me sale! desde ya muchas Gracias

  4. hola me podrias ayudar con un programa tengo muchas dudas acerca de como hacer un diccionario en c++ agradesco muchisimo tu tiempo concedido

  5. hola, espero estés bien. Oye me dio curiosidad probar este programa de ingles. pero no me quiere correr, sale un error en “int num[nofw];” dice que es una expresión constante requerida. le he acomodado pero igual no corre. me podrías decir cual es el error.? disculpa y gracias.

  6. oye, me preguntaba si puedes hacer un ejemplo que incluya Archivos, cómo crearlos, borrarlos, modificarlos, sobreescribirlos, etc… es que no entiendo….. agradecería mucho (:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s