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í:
- 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.
- Pedir el número de palabras que el usuario quiera memorizar.
- Obtener ese número de palabras aleatoriamente y mostrarlas.
- Borrar las palabras y empezar a preguntar el significado de cada una.
- Comparar la respuesta del usuario con la respuesta correcta.
- 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