Grundläggande in- och utmatning

Relevanta dokument
Uttryck, satser och strömhantering

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 (grundläggande konstruktioner)

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

Laboration 1. Imperativ programmering. Stilgranskning av Lab Slutredovisning av Laboration 1

Kursmaterial för laborationer i

kl Tentaupplägg

Uppgift 1a (Aktiekurser utan poster)

Uppgift 1 (Sorterade heltal som är OK)

kl Tentaupplägg

HI1024 Programmering, grundkurs TEN

TDIU01 Programmering i C++

Föreläsning 6: Introduktion av listor

Uppgift 1 (vadå sortering?)

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

kl Tentaupplägg

kl Tentaupplägg. TIPS 4: Du kan kompilera din kod med följande kommandon g++11, w++11 (för mer varningar)

Uppgift 1 ( Betyg 3 uppgift )

Värmedistribution i plåt

Uppgift 1 ( Betyg 3 uppgift )

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

kl Tentaupplägg

Frekvenstabell över tärningskast med C#

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

DUGGA Tentaupplägg

Övningsuppgifter. TDIU04 Programmering i C++, standardbibliotek. Innehåll. Vt Lektion Lektion Lektion Lektion 4...

TDIU01 - Programmering i C++, grundkurs

Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson Plot och rekursion

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

kl Tentaupplägg

Föreläsning 3.1: Datastrukturer, en översikt

Lab 0: Mycket grundläggande in- och utmatning

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Uppgift 1 ( Betyg 3 uppgift )

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Uppgifter till praktiska tentan, del A. (7 / 27)

TDIU01 (725G67) - Programmering i C++, grundkurs

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

kl Tentaupplägg

För alla uppgifter på tentan gäller: Man får använda både standard-c++ (som till exempel har pekare som anges med * och objekt som skapas med new) och

Uppgift 1 ( Betyg 3 uppgift )

5 Grundläggande in- och utmatning

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT 2014

kl Tentaupplägg

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

TDIU01 - Programmering i C++, grundkurs

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Tentamen i. för D1 m fl, även distanskursen. lördag 28 maj 2011

Laboration 1 Introduktion till Visual Basic 6.0

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Objektorienterad Programmering (TDDC77)

Objektorienterad programmering D2

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

TDDI14 Objektorienterad programmering

kl Tentaupplägg

Planering Programmering grundkurs HI1024 HT data

Programmering B med Visual C

C++ - En introduktion

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

i LabVIEW. Några programmeringstekniska grundbegrepp

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Tentamen TEN1 HI

kl Tentaupplägg

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

JAVA Mer om klasser och objektorientering

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

HI1024 Programmering, grundkurs TEN

TDDI TDDI22 Tentaregler

TDDI22 (exempel) TDDI22 Tentaregler

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X

kl Tentaupplägg

Laboration: Whitebox- och blackboxtesting

Strängar. Strängar (forts.)

Laboration 1: Figurer i hierarki

HI1024 Programmering, grundkurs TEN

Tentamen i Programmering grundkurs och Programmering C

TUTORIAL: KLASSER & OBJEKT

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Inlämningsuppgifter, EDAF30, 2015

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

DD1361 Programmeringsparadigm. Carina Edlund

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

DUGGA Tentaupplägg

Frekvenstabell över tärningskast med C#

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

Tentaupplägg denna gång

TDDC76 - Programmering och Datastrukturer

Föreläsning 3-4 Innehåll

Tentaupplägg denna gång

kl Tentaupplägg

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Transkript:

2011-08-22 Grundläggande in- och utmatning I denna inledande laboration kommer du att öva på de mest grundläggande operationerna för in- och utmatning. Mål Du ska efter denna laboration ha god insikt i Det generella utseendet hos ett C++-program Inläsnings- respektive utskriftbuffert Grundläggande datatyper Utskriftsformatering Uppgift Skriv ett program som hämtar data från tangentbordet enligt exemplen som följer. Det som syns på skärmen när man kör programmet ska överensstämma till fullo med givna exempel. Det gäller även antal blanktecken mellan ord och tal. Observera att denna laboration till stor del är till för att introducera hur man hanterar IDAs datormiljö för att skriva, kompilera och köra program. Om ni inte hinner med allt på laborationstiden är det ingen katastrof. Fortsätt på egen tid med resterande delar så att målen med uppgiften är uppfyllda. På kurshemsidan finns en fil som ni kan hämta med ett litet programskelett som innehåller alla texter som programmet ska skriva ut på skärmen. Detta för att ni ska slippa skriva en massa text och istället kunna fokusera på hur bufferthanteringen fungerar. Ett tips är att ni gör en liten del i taget och ser till att den fungerar för båda de givna körexemplen (se följande sidor). På detta sätt undviker ni att få alla fel på en gång. Det kan vara en bra ide att kommentera bort den kod ni inte vill testa för att på så sätt slippa mata in mer än nödvändigt. OBS! Ditt program ska klara av både körexempel 1 och 2 (samma program). Dock behöver det inte klara av alla möjliga varianter av indata, vilket i princip är omöjligt i detta läge. Sida 1

2011-08-22 Programkörningar Programmet ska ge resultat enligt följande exempel vid olika körningar (användarens indata markeras med kursiverad stil). Observera att eventuella inmatningar som är extra skal plockas bort innan nästa inmatning görs. Observera att du i ditt program endast får ha en variabel av respektive datatyp (det får alltså inte finnas t.ex. två stycken strängar). Det blir alltså bara fyra variabler i programmet. Exempel 1: Skriv in ett heltal: 10 Du skrev in talet: 10 Skriv in fem heltal: 12 30 27 13 11 Du skrev in talen: 12 30 27 13 11 Skriv in ett heltal och ett flyttal: 67 3.141592 Du skrev in heltalet: 67 Du skrev in flyttalet: 3.1416 Skriv in ett flyttal och ett heltal: 3.141592 67 Du skrev in heltalet:---------67 Du skrev in flyttalet:----3.1416 Skriv in ett tecken: T Du skrev in tecknet: T Skriv in ett ord: Kalle Du skrev in ordet: Kalle Skriv in ett heltal och ett ord: -5 Nisse Du skrev in talet -5 och ordet Nisse. Skriv in ett tecken och ett ord: A Ria Du skrev in Ria och A. Skriv in en rad text: Hej världen Du skrev in: Hej världen Skriv in en till rad text: Hej igen världen Du skrev in: Hej igen världen Skriv in tre ord: Testar ett program Du skrev in: Testar, ett och program Sida 2

2011-08-22 Exempel 2: Skriv in ett heltal: 10.3 Du skrev in talet: 10 Skriv in fem heltal: -12 10330 27 13 11 fem Du skrev in talen: -12 10330 27 13 11 Skriv in ett heltal och ett flyttal: 3267 3.141592 lite text Du skrev in heltalet: 3267 Du skrev in flyttalet: 3.1416 Skriv in ett flyttal och ett heltal: 67 3.141592 Du skrev in heltalet:----------3 Du skrev in flyttalet:---67.0000 Skriv in ett tecken: Tomas Du skrev in tecknet: T Skriv in ett ord: 123Kalle Du skrev in ordet: 123Kalle Skriv in ett heltal och ett ord: 12är det lunch Du skrev in talet 12 och ordet är. Skriv in ett tecken och ett ord: oklart Du skrev in klart och o. Skriv in en rad text: här skriver vi lite mer Du skrev in: här skriver vi lite mer Skriv in en till rad text: lite mera text här Du skrev in: lite mera text här Skriv in tre ord: Testar ett program Du skrev in: Testar, ett och program Sida 3

2011-08-22 Sida 4

2011-08-26 Uttryck, satser och teckenhantering I denna laboration kommer du lära dig grundläggande satser och uttryck i c++ samt hantering av tecken. Mål I denna laboration ska du lära dig följande: Vanliga repititions- och villkorssatser Enkla artimetiska uttryck och operatorer Använding av teckenhanteringsfunktioner från <cctype>. Uppgift 1 - Temperaturtabell Du ska skriva ett program som ska skriva ut en tabell med temperaturer i grader Celsius, Kelvin, Fahrenheit ochréaumur. Användaren ska få mata in startvärde och slutvärde för tabellen i celcius. Rimlighetskontroll på indatat ska utföras. Följande formler för omvandling från Celsius ( C) till Kelvin (K), Fahrenheit ( R) resp. Réaumur ( R) gäller: kelvin = celsius + 273.15 fahrenheit = celsius * 1.8 + 32 (eller celsius * 9/5 + 32) réaumur = celsius * 0.8 Körexempel: Ange startvärde: 0 Ange slutvärde: -20 Felaktigt intervall! Ange slutvärde: 20 Celsius Kelvin Fahrenheit Réaumur ----------------------------------------- 0 273.15 32.00 0.00 1 274.15 33.80 0.80 2 275.15 35.60 1.60........ 19 292.15 66.20 15.20 20 293.15 68.00 16.00 Sida 5

2011-08-26 Uppgift 2 - Ordbehandling Du ska skriva ett program som läser en text som användaren matar in varefter programmet ska beräkna lite statistik för texten. Det som ska beräknas är totala antalet ord och medellängden för orden i texten. Programmet ska även skriva ut det kortaste respektive längsta ordet som matades in. Texten ska läsas från standard inmatningsström (cin) till filslut. Om inga ord har lästs in ska en varning skrivas ut. Körexempel: Texten innehöll 4711 ord. Det kortaste ordet var nu med 2 bokstäver. Det längsta ordet var kompilatorkonstruktion med 22 bokstäver. Medelordlängden var 5 bokstäver. Uppgift 3 - Teckenhantering Skriv ett program som läser en text och räknar hur många tecken totalt som finns i texten, samt antalet bokstäver, siffror respektive vita tecken. Endast bokstäver ur det engelska alfabetet, dvs a-z, förutsätts förekomma. Texten ska läsas från standard inmatningsström (cin) till filslut. Ingen ledtext ska skrivas ut då programmet startas. Körexempel: Indata innehöll: Alfabetiska tecken: 553 Siffertecken...: 11 Vita tecken...: 352 Tecken totalt...: 1144 Kontrollera noga att programmet räknar korrekt! Låt t.ex. programmet läsa sin egen källkod genom omdirigering på kommandoraden: lab3 < lab3.cc Tips, se man -s3c ctype för mer information. Det finns även tre andra teckenomvandlingsfunktioner som kan vara bra att ha. Dessa är toupper() för att omvandla en liten bokstav till stor bokstav, tolower() för att omvandla en stor bokstav till liten bokstav och toascii() för att omvandla ett int-värde till teckenvärde. Sida 6

2011-08-22 Mål Funktioner och vector I denna laboration ska ni lära er att skapa underprogram och hantera vektorer I denna laboration ska du få insikt i Funktionsdefinitioner och deklarationer Argument, parametrar och returvärden Standardcontainern vector Uppgift Du ska skriva ett program som simulerar ett antal kast med en tärning och räknar hur många gånger tärningens olika sidor kommer upp. Tärningar av typ T4, T6, T8, T10, T12 och T20 ska kunna simuleras. Resultaten av tärningskasten ska lagras som heltal i en vector som då blir en sorts frekvenstabell. Följande funktioner, förutom huvudprogrammet, ska skapas: die() roll() ska läsa in önskad tärningstyp och returnera denna som en int. Ledtexterna som uppmanar till inmatning av tärningstypen ska skrivas ut av die(). Anropet av die() motsvaras av de två första raderna i exemplet. die() ska inte ha någon parameter. ska simulera tärningskasten. roll() ska ha tärningstyp, antalet kast som ska simuleras och frekvenstabellen som parametrar. roll() ska inte returnera något. Biblioteksfunktionerna rand(), srand() och time() ska användas för simuleringen. Hur de används ges exempel på i kapitel 7 i C++ direkt. Inkludera <cstdlib> och <ctime>. result() ska skriva ut resultatet. En rubrik som anger hur många kast som har simulerats och för vilken tärningstyp ska skrivas ut först. För varje tärningssida ska sedan en rad skrivas ut enligt följande körexempel. result() ska ha tärningstyp, antalet kast som har simulerats och frekvenstabellen som parametrar. Körexempel Vilken typ av tärning ska simuleras? Ange något tal av 4, 6, 8, 10, 12 eller 20: 6 Hur många tärningskast ska simuleras? 6000000 Resultatet av 6000000 kast med en tärning av typ T6: 1 999424 2 999046 3 999123 4 1001324 5 1001340 6 999743 Sida 7

2011-08-26 Rekursion I denna laboration ska ni lära er det rekursiva tankesättet. Mål I denna laboration bör du få insikt i det rekursiva tankesättet och skapa några rekursiva program Uppgift 1 Du ska skriva ett program som låter användaren mata in ett heltal n och sedan skriver ut de n första fibonacci-talen. Fibonacci-serien defineras nedan: fib(0) = 1 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2) Körexempel Mata in ett heltal: 4 De 4 första fibonaccitalen är: 1 1 2 3 Uppgift 2 Skriv en funktion som beräknar det tal som står på rad N och kolumn K i Pascals triangel. Pascals triangel ser ut på följande sätt: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 Första raden anses vara rad nummer noll (0) och första talet på raden anses vara i kolumn noll (0). Kolumnerna går alltså lite snett nedåt och åt vänster. Formulera en rekursiv formel som beräknar ett specifikt tal i triangeln. Kalla din funktion för pascal och låt den ha som indata talen N och K. Tips: Tänk på att det skall vara en rekursiv lösning där pascal(n, K) beror på (använder sig av) sig själv på något sätt. Sida 9

2011-08-26 Filströmmar Laborationen är uppdelad i tre delar. Det är viktigt att du visar din assistent programmet för deluppgift 1 innan du går vidare. Det finns textfiler med data som du kan använda för att testa programmet. Deluppgift 1 Programmet ska läsa in reella tal (double) från standard inmatningsström cin, lagra talen i en std::vector och sedan beräkna lite statistik för värdena. Programmet ska bestå av tre funktioner, förutom huvudprogrammet i main(): read() ska läsa in värden och lagra dem i vectorn. compute() ska göra beräkningar på värdena i vectorn. print() ska skriva ut resultaten som beräknats av compute(). Alla in- och utdata till och från funktionerna ska överföras via parametrar. Varje funktion ska ha de hjälpvariabler som kan behövas för att utföra sin uppgift som lokala variabler. Efter att read() har gjort inläsningen ska huvudprogrammet kontrollera om några värden lästs in eller ej. Om inga värden alls har lästs in ska programmet skriva ut Inga indata och sedan avslutas Om det finns inlästa värden ska compute() anropas för att hitta det minsta och det största värdet i vectorn samt beräkna medelvärdet av alla värden. compute() ska ha fyra parametrar: vectorn med de inlästa värdena, samt minsta värdet, största värdet och medelvärdet. Efter att beräkningarna utförts ska resultatet skrivas ut av print(), som ska ha fyra parametrar: antalet värden, minsta värdet, största värdet och medelvärdet. Utskriften ska ha följande utseende: Antal värden...: 10 Minsta värde...: 1.00 Största värde..: 10.00 Medelvärde...: 5.50 Reella värden ska skrivas ut i fixpunktsformat med två decimaler, som i exemplet ovan. Deluppgift 2 Gör en kopia av ditt program från deluppgift 1. Ändra programmet så att det, i stället för att läsa talen från cin, frågar efter ett filnamn, läser in filnamnet och öppnar en filström för läsning av indata. Om filen inte går att öppna ska programmet skriva ut ett felmeddelande och avslutas. Indatafiler ska vara textfiler, dvs filer med reella värden i textformat. Du hittar ett antal sådana filer med namn på formen data*.txt, t.ex. data1000.txt som innehåller 1000 tal. Deluppgift 3 Gör en kopia av ditt program från deluppgift 2. Ändra i programmet så att det läser från en binärfil, i stället för en textfil, och att namnet på binärfilen nu ska ges på kommandoraden. Indatafiler ska vara binärfiler med reella värden i binär representation (double). Det finns, förutom textfilerna (*.txt) som du använde i deluppgift B, också motsvarande binärfiler (*.bin). Tänk på att binärfiler vanligtvis inte kan flyttas mellan olika typer av datorer, eftersom binära tal kan representeras på helt olika sätt på olika datorer antal bitar som används för t.ex. double kan skilja och om det skulle råka vara samma antal bitar kan användningen av bitarna för att representera olika delar av flyttal skilja. Sida 11

2011-08-22 Länkad lista Datorn Skynet har problem med att hålla reda på sina terminatorer. Din uppgift är att konstruera en enkel datastruktur i form av en länkad lista samt funktioner för att hantera denna som Skynet kan använda för detta. Varje terminator har ett unikt identitetsnummer och en typbeteckning. Ett identitetsnummer är ett heltal mellan 1 och 999999. Det finns tio terminatortyper, T-100, T-200, upp till T-1000. Informationen om terminatorerna ska lagras i enkellänkad lista av terminatornoder, som ska vara ordnad i stigande id-nummerordning enligt exemplet i figuren nedan: 17 787 1147 4711 23159 T-100 T-600 T-500 T-1000 T-800 Informationen för varje terminator ska lagras i en struct Terminator_Node, med tre datamedlemmar: identitetsnummer, terminatortyp och en pekare till nästa nod i listan. Pekaren ska vara 0 om noden är den sista i listan. Inga andra medlemsfunktioner än konstruktor(er) och eventuellt en destruktor ska finnas. Listan ska inte innehålla några extra noder, som t.ex. en headernod. Operationerna på en terminatorlista ska vara vanliga funktioner, som ska ha åtminstone en parameter för den lista, eller i något fall den nod, som operationen ska utföras på. Följande operationer ska finnas: insert(lista, id, typ) sätt in en ny terminator i lista, givet id och typ, och returnera true. Om en terminator med id redan finns i lista görs inget och insert returnerar i stället false. Om minnestilldelningen misslyckas kommer bad_alloc att kastas (av new). remove(lista, id) ta bort terminator med id ur lista och returnera true. Om ingen sådan terminator hittas returneras i stället false. is_registered(lista, id) returnera true om en terminator med id finns i lista. is_empty(lista) returnera true om lista är tom. print_terminator(lista, id) skriv ut terminator med id, om den finns i lista. Utskriften ska se ut enligt följande: Terminator nr 787 Typ T-600 print(lista) Terminator nr 17 Typ T-100 Terminator nr 787 Typ T-600 skriver ut en samtliga terminatorer i lista. Om lista är tom görs inget. Utskriften ska se ut enligt följande: clear(lista) tar bort alla terminatorer ur lista. Nya terminatorer ska kunna sättas in. Hjälpfunktioner kan behövas. Följande ska finnas: find(lista, id) söka efter en viss terminator i lista, givet id. Returnerar pekaren till sökt terminators nod om den finns, annars 0 (tomma pekaren). Denna funktion ska vara rekursiv. Sida 13

Genomförande Det finns ett givet testprogram och lite testdata på fil. programmet är ett menystyrt program där du med kommandon kan välja att ge terminatordata för att lägga till nya terminatorer i en terminatorlista eller operera på terminatorlistan. Dela upp programkoden för terminatorlistan på två filer. Definitionen av Terminator_Node och funktionerna för att operera på en lista av terminatornoder ska deklareras på filen Terminator_node.h. Definitionerna för funktionerna i Terminator_Node.h samt hjälpfunktioner placeras på filen Terminator_node.cc. Var noga med att hantera dynamiskt minne korrekt! Funktionerna insert och remove ska lösas både iterativt och rekursivt (och döpas insert_iter och insert_rekursive och analogt för remove). Övriga funktioner får lösas på valfritt sätt men om alla löses både iterativt och rekursivt ges extra bonustid för detta.

2011-08-22 Länkad lista, fortsättning Den enkla terminatorlistan från förra uppgiften ska nu utvecklas i objektorienterad riktning. En datatyp för terminatorlistor ska definieras i form av en klass Terminator_List. Syftet med Terminator_List är att kapsla pekaren till den första noden i en lista av terminatornoder och endast tillåta medlemsfunktioner i Terminator_List att operera på en sådan lista. Figuren nedan ska illustrera detta, genom att pekaren till första noden finns i en omslutande kvadrat, vilken motsvarar klassen Terminator_List. 17 787 1147 4711 23159 T-100 T-600 T-500 T-1000 T-800 Genom att kapsla (private) pekaren till listan av terminatornoder i klassen Terminator_List kan vi säkerställa att initiering av en ny lista alltid görs (pekaren initieras till 0 av konstruktor) och att destruering av noderna alltid görs när en lista försvinner (minnet för alla terminatornoder lämnas tillbaka av destruktor). Operationerna på terminatorlistan som konstruerades i deluppgift 1 ska göras om till medlemsfunktioner i klassen Terminator_List. Det innebär i grunden att parametern lista ska tas bort, eftersom listpekaren nu kommer att finnas som en datamedlem i klassen Terminator_List och därmed är direkt åtkomlig i medlemsfunktionerna. Hjälpfunktionen find() ska vara en privat medlemsfunktion, eftersom den inte ska vara en allmänt tillgänglig operation. Terminator_Node blir en implementeringstyp för Terminator_List. En användare av Terminator_List ska alltså inte känna till Terminator_Node och den ska därför döljas på något bra sätt. En definition för klassen Terminator_List är given. Obs! I och med att Terminator_List innehåller en pekare till dynamiskt minne krävs egentligen att man definierar en kopieringskonstruktor och en kopieringstilldelningsoperator (=) som gör en djup kopiering. Detta ligger dock utanför denna kurs och det finns därför inget krav på att dessa ska definieras. I stället har de deklarerats som private i den givna klassdefinitionen för Terminator_List, vilket gör att det blir kompileringsfel om man skriver kod som kräver dem, vilket inte ska göras.genomförande deluppgift 2 Genomförande Definitionen för Terminator_List är given på filen Terminator_List.h. Operationerna på listan har du i princip redan kodat i förra laborationen, men de ska nu bli medlemsfunktioner i Terminator_List, vilket kräver viss enkel modifiering. Modifiera även det givna testprogrammet från förra laborationen. Listan ska nu vara av typen Terminator_List och operationerna är nu medlemsfunktioner i Terminator_List. För övrigt ska inga modifieringar behövas. Sida 15