Devo progettare un server di esami online per un esame come GRE in cui la difficoltà delle domande aumenta se rispondi correttamente e diminuisci se rispondi in modo errato.
Questions are multiple choice questions
Difficulty scale of question is 1-10, 1 being the easiest and 10 being the hardest.
If two continuous questions are answered wrong, decrease the difficulty by 1 and if two questions answered right increase the difficulty by 1.
Test starts with a question of difficulty level of 4.
Question carries marks equal to its difficulty.
La mia domanda è : quale struttura dati dovrei utilizzare per memorizzare le domande? Qual è il miglior algoritmo per recuperare la domanda in base alla sua difficoltà, ecc.?
Attualmente sto prendendo in considerazione una doppia lista concatenata:
struct node {
int data;
node *prev;
node *next;
int n
int MAX;
};
Qui, 2 n dobbiamo archiviare. Uno è MAX (dimensione effettiva) e n è possibile dimensione casuale per raccogliere domande da n - MAX abbiamo selezionato già per ogni doppio elenco collegato è possibile aggiungere ulteriori dati int in cui è possibile memorizzare il collegamento precedente, il collegamento successivo, il puntatore all'array, int Maxdata (Dimensione MAX), int n (dimensione corrente).
Ogni nodo è un puntatore a una serie di domande per ogni livello. Se la risposta è corretta, sposta il nodo successivo e seleziona le domande casuali da quell'elenco, altrimenti si sposta sul nodo precedente e seleziona una domanda.
Ad esempio, supponiamo che un array abbia 10 domande 1 - 10. Poiché la dimensione dell'array è n = 10, sai che
- ora hai selezionato una domanda casuale rand ()% 10 = 6 ° domande
- ora scambia la domanda numero 6 & 10, fai n-- e restituisci la 6a domanda
- ora n = 9 quindi la prossima volta 10 non sarà considerata
- random restituirà solo da 1 a 9
C'è un modo migliore per farlo?