Tentaupplägg TIPS 1: Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer att fastna på så kanske det är fel uppgift att ge sig på. Tiden du lägger på att noga läsa uppgifterna tjänar du in på att välja rätt uppgift. TIPS 2: Kolla ibland till kommunikationsfönstret. Det kan ha kommit information till alla utan att ni skickat in en fråga. Kanske gäller det dig också (d.v.s. den uppgift du jobbar med). TIPS 3: Om ni har problem med kompilator, Emacs eller annat som INTE har med uppgifterna att göra, räck upp handen så kommer en assistent. Detsamma gäller om hur man kopierar givna filer " cp given_files/*. " eller liknande. Frågor om själva uppgifterna tar vi i första hand via tentasystemet. I körexemplen har vi markerat det som användaren matar in på tangentbordet med fet och kursiverad stil. Tänk på att körexemplen bara är ett exempel på när programmet körs. Testa ditt program noga och tänka över hur programmet skall fungera vid andra indata. Vi hinner normalt sett inte svara på frågor de sista 10 minuterna på tentan. Då ägnar vi all tid åt att rätta uppgifter för att alla skall hinna få svar innan ni går hem. Betygsgränser: Tid TekFak FilFak 1 poäng 13:00 Betyg 3 Betyg G 3 poäng 12:00 Betyg 4 3 poäng 10:45 Betyg VG 3 poäng 10:30 Betyg 5 >=4 poäng 12:00 Betyg 5 >=4 poäng 12:15 Betyg VG Lycka till med tenterandet och hoppas att alla får G på minst en uppgift idag. M.v.h. /Torbjörn (examinator)
Uppgift 1 - Slumptuben [1p] Skriv ett program som väl illustrerar en slumpgenerator. En slumpgenerator kan man se som en tub vari man har tryckt in en massa slumpade tal i. Till höger kommer det ut ett slumpat tal. Skriv ett program som ritar ut slumpgeneratorn, dekorerad med slumpade siffror mellan 1 och 6. 1 3 6 4 4 + 2 6 3 2 1 5 5 2 1 1 1 +---/\ 6 5 6 4 5 3 2 3 3 4 5 3 4 -> 6 3 2 5 6 5 1 3 4 4 1 1 +---\/ 5 6 1 3 5 + 1 2 6 4 6 + 5 3 3 5 6 2 6 5 6 6 6 +---/\ 6 5 1 2 6 1 6 4 3 4 2 4 2 -> 2 3 3 3 2 2 4 3 6 4 1 1 +---\/ 6 3 1 4 6 + Körexempel 3: 2 6 5 4 3 + 5 4 4 3 5 1 3 3 2 2 4 +---/\ 3 1 2 5 2 1 4 4 1 2 5 1 5 -> 1 1 4 6 4 3 1 2 6 6 5 5 +---\/ 5 6 3 2 4 + OBS: Se upp för "kopiering av kod". D.v.s. gör bra underprogram som löser delproblem som är återkommande.
Som bekant är symbolen för Tre-Kraften: Uppgift 2 - Tre-Kraften [1p] Rimligtvis borde vi då också ha: Fyr-Kraften Fem-Kraften Man ser tydligt att Tre-Kraften ingår i Fyr-Kraften, och att Fyr-Kraften ingår i Fem-Kraften. Skriv ett program som låter användaren mata in ett godtyckligt positivt heltal N och beräknar antalet (små) trianglar för N-Kraften. Du skall inte använda multiplikation eller upphöjt till för att räkna ut svaret, använd rekursion istället. Mata in N: 3 Antalet små trianglar i 3-kraften: 4 Mata in N: 2 Antalet små trianglar i 2-kraften: 1 Körexempel 3: Mata in N: 4 Antalet små trianglar i 4-kraften: 9 Körexempel 4: Mata in N: 5 Antalet små trianglar i 5-kraften: 16 TIPS: Du kanske redan har gissat det, men Ett-Kraften har inga trianglar. TIPS 2: 2 * X = X + X
Uppgift 3 - RaceRoyale [2p] I spelet RaceRoyal styr spelarna sina bilar runt en bana genom att spela kort. Det finns tre olika kort man kan spela på sin tur: 1) Gasa extra. 2) Bara åka rakt (åka i samma hastighet som tidigare). 3) Sakta ner och ta det försiktigt. Efter att alla spelare har gjort sitt val så uppdateras bilarnas positioner enligt följande regler: - Alla bilar som gasade extra bibehåller sin inbördes ordning men hamnar före de andra bilarna. - Alla bilar som bara åkte rakt bibehåller sin inbördes ordning men hamnar före de som saktade ner (och efter de som gasade extra). - Alla bilar som saktade ner bibehåller sin inbördes ordning men hamnar efter alla andra bilar. Skriv ett program där användaren får mata in vad tio spelare gör på sina turer och sedan matar ut spelarnas nya positioner. Vi antar att bil 1 börjar på position 1, bil 2 på position 2 o.s.v. Mata in vad bilarna gjorde: Bil 1: 3 Bil 2: 3 Bil 3: 1 Bil 4: 2 Bil 5: 1 Bil 6: 2 Bil 7: 2 Bil 8: 1 Bil 9: 3 Bil 10: 2 Bilarnas nya positioner: Position 1: Bil 3 Position 2: Bil 5 Position 3: Bil 8 Position 4: Bil 4 Position 5: Bil 6 Position 6: Bil 7 Position 7: Bil 10 Position 8: Bil 1 Position 9: Bil 2 Position 10: Bil 9 Mata in vad bilarna gjorde: Bil 1: 2 Bil 2: 2 Bil 3: 2 Bil 4: 3 Bil 5: 3 Bil 6: 3 Bil 7: 1 Bil 8: 1 Bil 9: 1 Bil 10: 1 Bilarnas nya positioner: Position 1: Bil 7 Position 2: Bil 8 Position 3: Bil 9 Position 4: Bil 10 Position 5: Bil 1 Position 6: Bil 2 Position 7: Bil 3 Position 8: Bil 4 Position 9: Bil 5 Position 10: Bil 6
Uppgift 4 - Knobbel [2p] I tärningsspelet Knobbel slår spelarna 6 tärningar och får poäng för olika kombinationer. Målet är att få ihop till 10000 poäng. Följande kombinationer kan man få (från lägsta till bästa): * En 5:a ger 50 poäng, två 5:or ger 100 poäng * En 1:a ger 100 poäng, två 1:or ger 200 poäng. * Tre stycken N:or ger N*100 poäng (t.ex. tre 3:or ger 300 poäng). * Dock ger tre stycken ettor 1000 poäng * Fler än tre lika dana ger samma som tre lika fast dubblat för varje extra tärning som ingår. (T.ex. ger fem 3:or 3*100*2*2 = 1200 poäng.) Undantag: Sex stycken ettor ger 10000 poäng direkt. Man får (i denna variant av knobbel) endast tillgodoräkna sig den bästa kombinationen som finns i uppsättningen slagna tärningar. T.ex. skulle 2 2 2 5 6 6 bara ge 200 poäng (inte 250). Och 6 6 6 2 2 2 ger 600 poäng (inte 800). Det finns regler för att man får "ta bort" tärningar (d.v.s. spara de poängen) och fortsätta slå, men det behöver vi inte ta hänsyn till i den här uppgiften. På filen KNOBBEL.TXT finns väldigt många rader med knobbel-slag. Varje rad har alltså sex stycken heltal separerade med blanksteg. Din uppgift är att gå igenom filen och hitta det "bästa" slaget. D.v.s. den rad som genererar den största knobbel-poängen. Körexempel: Den bästa raden var 4 5 4 4 1 4 som gav 800 poäng OBS: Filen kan innehålla ett godtyckligt antal rader.