Glosförhör

Denna uppgift skall ge övning i att skriva egna klasser, att läsa från fil och att använda listor, och standardklasserna Scanner och StringTokenizer..

Bakgrund

Vi vill ha ett program för att genomföra ett glosförhör, och vill att det skall läsa in en fil med glosor, på följande form:

    venio:kommer
    sub:under
    nostrum:vårt
    custodio:vaktar
    clamo:ropar
    aperio:öppnar
    nihil:ingenting
    sentio:märker

I exemplet använder vi latinska och svenska glosor, men programmet skall naturligtvis kunna användas för godtyckliga språk. Filen med glosor kan du skriva in i en texteditor (det är alltså inte meningen att ditt program skall skapa filen med glosor).

Efter att programmet har läst in filen med glosor skall det förhöra användaren på orden i listan, först från latin till svenska, därefter från svenska till latin. De ord som användaren gissar fel läggs sist i högen, och återkommer senare i samma omgång — omgången är inte klar förrän användaren har svarat rätt på samtliga ord.

Om användaren inte matar in exakt rätt svar kan programmet fråga om svaret ändå är rätt (felet kan vara någon obetydlig böjningsform eller liknande):

    Första omgången: 
    clamo: ropar
    Rätt!
    venio: kommer
    Rätt!
    aperio: öppnar
    Rätt!
    nihil: inget
    Rätt svar är ingenting, visste du det? ja
    sub: under
    Rätt!
    sentio: märker
    Rätt!
    nostrum: vårt
    Rätt!
    custodio: vaktar
    Rätt!
    Inga fel i denna omgång, bra!
    
    Andra omgången: 
    vaktar: custodio
    Rätt!
    vårt: rostrum
    Rätt svar är nostrum, visste du det? nej
    ropar: clamo
    Rätt!
    märker: sentio
    Rätt!
    under: sub
    Rätt!
    ingenting: nihil
    Rätt!
    kommer: venio
    Rätt!
    öppnar: aperio
    Rätt!
    vårt: nostrum
    Rätt!
    Totalt 1 fel i denna omgång.

Uppgift

Skriv ett program som genomför ett glosförhör enligt ovanstående beskrivning.

Krav för godkänt

Några tips

Efterhand som jag får in frågor, och ser vad som ställer till problem på uppgiften, kommer jag att lägga ut tips på denna sida. Det kan därför vara en god idé att titta in då och då.

Regler

Du måste lösa uppgiften på egen hand, men du får gärna diskutera den med kamrater och övningsassistenter.