C: Frivillig fortsättning på inlämningsuppgift 8

Det här är del två av inlämningsuppgiften om terminatorer. Den här uppgiften är frivillig!

I den här delen jobbar vi med en mer komplicerad datastruktur, där varje länk i den länkade listan också kan vara början på en annan lista.

Specifikation

Nu ska vi också hantera skaderapporter. Varje terminator kan ha en lista med skador, så från varje terminator-post i listan ovan ska det nu utgå en ny länkad lista med skadeposter.

Inmatningen kan, förutom TERMINATOR-rader som i del 1 ovan, också innehålla rader av den här typen:

123  2020-12-10  19:30  ena armen bortskjuten
Raden beskriver en skaderapport där 123 är terminatorns id-nummer, 2020-12-10 är ett datum (10 december 2020), 19:30 är ett klockslag, och resten av raden anger typen av skada.

Skriv ett program som läser in rader enligt ovan från standardinmatningen, och som lagrar information om terminatorerna och deras skador i länkade listor enligt figuren nedan. Posterna skapas med anrop till malloc.

Länkade listor

Godtyckligt många terminatorer och skaderapporter ska kunna lagras. En skaderapport-sträng kan vara högst fyrtio tecken lång.

Felaktiga rader ska ge ett felmeddelande, och sen ska programmet fortsätta utan att bry sig om den felaktiga raden.

Det kan vara bra att först göra ett förslag på hur din datastruktur ska se ut, med deklarationer av posttyperna (struct), och visa denna för läraren.

Gör dina egna testfiler för den här uppgiften!

Exempel

Exempel på utskrift:
Terminator nr 1387
Typ: T-1000
Skador: 1. 1995-07-10  12:14  nedsmält
        2. 1995-07-11  10:10  diverse kulhål
        3. 1995-07-12  10:14  splittrad
        4. 1995-07-12  10:42  sprängd
        5. 1995-07-12  10:43  nedsmält och terminerad

Terminator nr 123
Typ: T-800
Skador: 1. 2020-12-10  19:30  ena armen bortskjuten
        2. 2020-12-10  19:32  andra armen bortskjuten
        3. 2021-01-14  10:25  hål i huvet

Terminator nr 71632
Typ: T-600
Inga skador.


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 1 mars 2016