Avevo capito, tranquillo, ho tardato a rispondere perchè non ero in casa
Qua c'è una bozza di codice:
#include <stdlib.h>
#include <iostream>
#include <string>
using namespace std;
main()
{
srand(time(NULL));
int n;
int counter=0;
string answer;
string Eng[10]={"home","book","yesterday","scary","biscuit","brillant","cheese","full","garage","drink"};
string Ita[10]={"casa","libro","ieri","pauroso","biscotto","brillante","formaggio","pieno","benzinaio","bere"};
int sbagli[10];
cout<<"Su quante parole vuoi essere interrogato?"<<endl; //Il ciclo for muoverà proprio n passi
cin>>n;
cout<<endl;
for(int i=0;i<n;i++)
{
int parola=rand()%10;
int lingua=rand()%2;
string english=Eng[parola];
string italian=Ita[parola];
if(lingua==0)
{
cout<<Eng[parola]<<endl;
cout<<"Traduzione: ";
cin>>answer;
if(answer==italian) cout<<"Esatto!"<<endl<<endl;
if(answer!=italian)
{
cout<<"Sbagliato! La traduzione corretta e': "<<Ita[parola]<<endl<<endl;
sbagli[counter]=parola;
++counter;
}
}
if(lingua==1)
{
cout<<Ita[parola]<<endl;
cout<<"Traduzione: ";
cin>>answer;
if(answer==english) cout<<"Esatto!"<<endl<<endl;
if(answer!=english)
{
cout<<"Sbagliato! La traduzione corretta e': "<<Eng[parola]<<endl<<endl;
sbagli[counter]=parola;
++counter;
}
}
}
cout <<"Ora ti interrogo sulle parole che hai sbagliato" <<endl;
for (int temp=0; temp<counter; temp++){
int parola=sbagli[temp];
string english=Eng[parola];
cout<<Ita[parola]<<endl;
cout<<"Traduzione: ";
cin>>answer;
if(answer==english) cout<<"Esatto!"<<endl<<endl;
else cout <<"Studia di più! Hai sbagliato per la seconda volta!" <<endl;
}
return 0;
}
Bozza nel senso che funziona, anche se ci sono moolti punti in cui può (e dovrebbe essere migliorato). Io mi son limitato a farti vedere la versione funzionante e il modo in cui si risolve il problema, tu poi ti puoi sbizzarrire nel mettere a posto il resto!
Come vedi, ho creato un altro vettore dove vado a memorizzare il posto della parola sbagliata: quando poi me le ha provate tutte, va a vedere nel vettore sbagli la posizione delle parole sbagliate e richiede quelle. Fin qua abbastanza semplice.
Io te l'ho fatto solo in una lingua, nell'altro caso è identico.
Se ti va adesso ti do un paio di consigli su quello che secondo me sarebbe da cambiare, e un'idea di come lo farei io (che poi manco fossi chissà chi, sono un novizio anch'io!):
- al momento, lui può chiederti parole che ti ha già provato, questo secondo me si può considerare un 'bug' (magari tu l'hai fatto apposta, non lo so)
- la definizione della dimensione dei vettori mi fa un po' paura: io ho mantenuto il tuo stesso stile per non mandarti in confusione, però sappi che ci possono essere errori, ad es: se vai a modificare la dimensione di un vettore e ti dimentichi degli altri, hai vettori di dimensione diversa (a questo puoi ovviare facendo un #define N all'inizio dove includi le librerie e passando N come dimensione dei vettori). Se inserisci più parole della dimensione del vettore, vai in overflow e non si sa bene cosa succeda nel programma (puoi fare allocazione dinamica della memoria o usare i vector)
-se vai ad aggiungere molte parole, scriverle esplicitamente nella dichiarazione del vettore rende il codice illeggibile. Perchè non fai in modo che tu salvi le coppie di parole su un file e le carichi nel vettore da lì quando avvii il programma? Così riesci a gestire anche un numero elevato di parole...
- come sei messo con le classi? Si semplificherebbe notevolemente se cominciassi ad usarle, può sembrare difficile all'inizio poi ti rendi conto che effettivamente son comode.
Ciao!