• No results found

TDDI TDDI22 Tentaregler

N/A
N/A
Protected

Academic year: 2022

Share "TDDI TDDI22 Tentaregler"

Copied!
6
0
0

Loading.... (view fulltext now)

Full text

(1)

TDDI22 – Tentaregler

Inloggning

Logga in i tentasystemet genom att välja session ”exam system” och logga in med ditt vanliga LiU- ID. Välj inte att ha denna session som standardsession. Verifiera att dina uppgifter stämmer och förbered din tentaplats. Som vanligt är det inte tillåtet att ha väskor eller jackor vid sin skrivplats och mobiltelefoner ska ligga avstängda i jacka eller väska. Ta fram ditt LiU-kort och invänta tentavakt för att få ett engångslösenord.

Hjälpmedel

Följande får tas med på tentan:

• En bok om c++. För boken gäller följande regler:

– Kommentarer/noteringar som direkt rör text och exempel på sidan i fråga får finnas i sidmarginalen.

– Egna sidflikar för att enkelt kunna hitta t.ex. de olika kapitlen är tillåtna.

– Inga extra ark eller lappar, lösa eller fastsatta, får finnas.

– Tomma sidor, insidan av pärmarna, försättsblad, etc., får inte innehålla programkod.

• Maximalt ett A4-ark med egna anteckningar

• Penna för att anteckna under tentan. Ni kommer förses med blanka papper Följande får INTE tas med:

• Elektroniska hjälpmedel såsom miniräknare, mobiltelefon och smartklockor.

Utloggning

När du är nöjd med ditt betyg (som står i tentaklienten) kan du avsluta och logga ut som vanligt i menyn. Klicka sedan på ok följt av knappen avsluta tentan. Observera att du när du gjort detta inte kan logga in igen. Lämna inte din plats innan vanliga inloggningsskärmen syns.

Frågor om uppgifter

Frågor om tentan i stort eller uppgiftspecifika frågor ska ställas via tenta-klienten. Detta för att vi ska ha en historik av konversationen samt för att vi ska kunna ge samma hjälp till olika studenter.

Systemfrågor

Om du har systemfrågor som t.ex. problem med tentaklienten eller terminalen räcker du upp handen så kommer en assistent och hjälper till.

(2)

Tentan består av fyra uppgifter indelade i två kategorier; standardbibliotek (STL) och mallar. För godkänt betyg på tentan krävs godkänd lösning av en uppgift inom vardera kategori. För högre betyg krävs lösning av uppgifter inom en viss tid enligt tabell 1.

Tid (h) Antal uppgifter

Betyg STL Mallar

2.5 + B 1 1 5

4 + B 2 1 5

4 + B 1 2 5

4 + B 1 1 4

5 1 1 3

Tabell 1: Tidsgränser för olika slutbetyg, B är bonus från labserien (se nedan) För att en uppgift ska anses godkänd krävs följande:

• att man noga följt alla instruktioner och krav ställda i uppgiften

• din kod följer god programmeringsstil (se labseriens rättningsguide)

• att din kod har bra inkapsling och resurshantering

• att standardbibliotekskomponenter används på ett bra sätt Bonus från labserien

Bonus från labserien (benämnd B i tabell 1) ger ett visst antal minuter (5, 15, 20 eller 30) extra på respektive tidsgräns för högre betyg. Bonusen är endast giltig det år den erhölls.

(3)

Uppgift 1 - Mallar

Kopiera filen given_files/uppgift1.cc till din hemkatalog och modifiera din kopia.

I programspråket Python finns det en funktion enumerate som tar emot en itererbar containertyp och genererar en map-liknande struktur där nycklarna anger indexet av ett visst element från den givna containern. Värdet är motsvarande värde från den givna containern. Din uppgift är att göra en funktion som immiterar detta i C++.

Antag att följande data ges till funktionen:

["detta", "är", "ett", "fint", "exempel"]

Då ska din funktion generera följande struktur (nedan visat på formatet ”nyckel”: ”värde”):

{

0: "detta", 1: "är", 2: "ett", 3: "fint", 4: "exempel"

}

Användaren ska också kunna bestämma startindex med ett andra argument:

list<char> v {'a', 'b', 'c'};

enumerate(v, -4);

// ger {-4: 'a', -3: 'b', -2:'c'}

Skapa en mallfunktion enumerate som fungerar enligt ovan och exempel i den givna filen.

(4)

På filen given_files/exchange_rates.txt finns växlingskurser som beskriver hur många svens- ka kronor man får för en enhet av given valuta. Exempelvis ger en KRV (Sydkoreansk won) 0.007069 kronor. Datat är tagit ifrån riksbanken för datumet 2015-09-25.

Din uppgift är att skapa ett program som ber användaren mata in ett antal belopp. När användaren är klar med inmatningen (matar in värdet 0) ska programmet skriva ut summan av alla belopp uttryckt i svenska kronor med två decimaler.

Användaren kan mata in belopp på formatet NNN värde som ska tolkas som ett värde i valuta NNN.

Användaren kan även välja att endast mata in ett värde utan valuta som ska tolkas som ett värde i svenska kronor.

Ditt program behöver inte göra några felkontroller, du kan anta att användaren matar in valutor som finns i den givna filen och att alla värden kan tolkas som reella tal.

Körexempel 1 (Användarinmatning i fet stil) Mata in belopp (avsluta med 0):

12.3 AUD 3.3 USD 12.6 RUB 503 0

Totalsumma: 202.43

Krav: Du ska använda std::map för att lagra växlingskurserna i ditt program. Växlingskurserna ska läsas in från en fil vars sökväg ges som kommandoradsargument vid programmets start. Om filen inte går att läsa ska programmet avslutas med ett bra felmeddelande.

(5)

Uppgift 3 - Mallar

Du ska skapa en klassmall Power som ska representera exponentiering. Klassen ska ta två mallpa- rametrar, datatypen som ska hanteras (härmed kallad T), samt basen (Base) som ska användas vid beräkningar. Nedan följer ett exempel på hur klassen ska kunna användas (finns som del i den givna filen uppgift3.cc).

Power<int, 2> p;

bool first {true};

for ( int i {}; i < 8; ++i ) {

if ( ! first ) {

cout << ", ";

}

first = false;

cout << p++;

};

// 1, 2, 4, 8, 16, 32, 64, 128 skrivs ut Din klass ska alltså stödja följande:

• Default-konstruktor som sätter det nuvarande värdet till 1 (Base0).

operator++ som multiplicerar värdet med basen, Base. Denna ska finnas i både prefix- och postfix-version.

• Implicit konvertering till den bakomliggande typen T.

(6)

Du ska i denna uppgift skapa ett program som beräknar en uppskatting av PI enligt följande beskriv- ning:

1. Skapa två vectorer (härmed kallade X och Y) med förallokerad plats för N double-värden.

2. Fyll de båda vectorerna med uniformt spridda slumpvärden i intervallet [−1.0, 1.0].

3. Skapa en ny tom vector, härmed kallad C, för att lagra bool-värden.

4. Använd algoritmen std::transform för att, för varje koordinat (x,y) som skapas genom att parvis ta element från vectorerna X och Y, lägga in värdet true i C om koordinaten ligger i enhetscirkeln (en cirkel med radie 1 som ligger i origo). Om koordinaten inte ligger i enhetscirkeln ska false sparas i C.

5. Beräkna antalet koordinater (F) som fanns inom enhetscirkeln genom att använda std::accumulate med vector C.

6. Uttrycket 4∗ (F /N) ger nu en uppskattning av Pi. Skriv ut detta värde.

Prova din algoritm med olika värden på N. Med N = 1000000 bör du få ungefär två decimalers noggrannhet. Det ska vara enkelt att ändra värdet på N i ditt färdiga program.

References

Related documents

ståelse för psykoanalysen, är han också särskilt sysselsatt med striden mellan ande och natur i människans väsen, dessa krafter, som med hans egna ord alltid

The effect of guided web-based cognitive behavioral therapy on patients with depressive symptoms and heart failure- A pilot randomized controlled trial.. Johan Lundgren,

Nevertheless, since physical relations commonly are given in continuous-time, the various systems presented in this thesis, such as the single track model in Example 2.1, are

Det kan emellertid inte gälla de exempel som jag har givit och som delvis också berör konstnären Patrik Bengtsson verk Topografin mellan vandring och flykt då framtida förvaltare

Symtom: Efter några timmars sömn sätter sig barnet upp, ter sig skräckslagen, skriker, gråter, känner inte igen personer, går ej att kommunicera med även om det verkar vara

Författaren utgår från ett rikt intervjumaterial för att se vad för slags frågor som man ägnar sig åt, vilka glädjeämnen och utmaningar som finns.. I detta väcks

även om utbildningsdelen varit betydelsefull för de enskilda deltagarna har deras framsteg inte varit så stora att det, i vart fall så här långt, lett vidare till arbete och endast

Råd för rutiner och underhåll av teleslinga Faktablad som riktar sig till ansvariga med teleslinga i sina lokaler/verksamheter.. Råd rutiner och underhåll av teleslinga (pdf)