Esame online di progettazione

0

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

  1. ora hai selezionato una domanda casuale rand ()% 10 = 6 ° domande
  2. ora scambia la domanda numero 6 & 10, fai n-- e restituisci la 6a domanda
  3. ora n = 9 quindi la prossima volta 10 non sarà considerata
  4. random restituirà solo da 1 a 9

C'è un modo migliore per farlo?

    
posta PythonEnthusiast 27.12.2013 - 17:44
fonte

1 risposta

1

Una tabella di database per le tue domande potrebbe essere simile a questa:

QuestionID          PK
Question            Text
Difficulty          Int

Tieni traccia delle domande già poste e risposte in un'altra tabella:

StudentID           FK
TestID              FK
QuestionID          FK
AnswerID            FK  (assumes multiple choice)

Possibili risposte alle domande (scelta multipla):

AnswerID            PK
QuestionID          FK
Answer              Text
IsTheCorrectAnswer  boolean
    
risposta data 27.12.2013 - 18:16
fonte

Leggi altre domande sui tag