Uppgift 1 ( Betyg 3 uppgift ) Skriv ett program, Draw_Hexagones, som ritar ut en bikupa enligt körexemplen nedan. Exempel 1: Mata in storlek på bikupan: 1 + / \ + + + + \ / + Exempel 3: Mata in storlek på bikupan: 3 + + + / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ + + \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / + + +
Uppgift 2 Det finns givet ett huvudprogram, Random_Handling_Test, som skriver ut 20 stycken slumptal. Slumptalen genereras i funktionen Random som ligger i ett paket som heter Random_Handling. Tyvärr finns inte själva funktionen Random färdig. Det är din uppgift att skapa denna i paketet. Skriv denna i paketet där det är markerat att du skall skriva funktionen. Ett krav är att funktionen Random endast skall returnera heltal vars rot också är ett heltal. Exempel på sådana tal är 0, 1, 4, 9, 16,... (rötterna till dessa är 0, 1, 2, 3, 4,...). Paketet är påbörjat så det enda som saknas är själva funktionen du skall skriva. Lite speciellt är att det i paketet är så att Reset redan är anropad innan man anropar din funktion. Detta sker längst ner i adb -filen i paketet. Du skall alltså inte göra Reset i din funktion! Det är tillåtet att skapa extra underprogram till din funktion om du så vill, men det är inte nödvändigt. Du skall inte ändra något i den befintliga programkoden vare sig i huvudprogrammet eller i paketet. Du skall se till att funktionen returnerar tal vars rötter maximalt är 10. Detta för att man snabbt skall se att utdatat verkar rimligt. OBS! Du får dock inte skriva funktionen så att den begränsas till detta mer än via den konstant (i datatypen Integer_Type) som finns i paketet.
Uppgift 3 Det finns ett paket som heter Poker_Handling. I detta finns ett antal delar redan färdiga. Det fattas dock en funktion som skall ta reda på vilket värde en pokerhand har. Först ett par definitioner: Det finns fyra färger (hjärter, spader, ruter och klöver) och dessa benämns på engelska förkortat som (h, s, d, c). Det finns 13 valörer (Ess, 2, 3, 4, 5, 6, 7, 8, 9, 10, Knekt, Dam, Kung). OBS! Ess kan räknas antingen som en etta eller som 14 (d.v.s. direkt efter kungen). På engelska betecknas valörerna förkortat som (A, 2, 3, 4, 5, 6, 7, 8, 9, T, J, Q, K). Man brukar skriva ut valören före färgen när man skriver ut kort. Korten spader dam och ruter 4 skrivs alltså: Qs respektive 4d. Nedan följer en tabell över hur värdet är kopplat till handen. Värde Namn Beskrivning 8 Straight flush Samma färg på alla kort och samtidigt stege 7 Four of a kind Samma valör på fyra kort (t.ex. 4 stycken 3:or). Det femte kortet används ej. 6 Full house Tre kort med samma valör (t.ex. 333) samt 2 kort med samma valör (t.ex. 66) oberoende av färg. Detta innebär alltså att alla fem korten används. 5 Flush Samma färg på alla korten 4 Straight Stege där inte alla kort är av samma färg. 3 Trips (set) Tre kort med samma valör. De två andra är olika. 2 Two pairs Två olika par (se One pair). Det femte kortets valör olikt de övriga. 1 One pair Två kort med samma valör. De övriga tre olika. 0 Nothing Ingen av ovanstående beskrivningar. Funktionen du skall skriva skall returnera det värde som står i första kolumnen i tabellen då du hittat vilken hand det rör sig om. Tips 1: Börja med att kontrollera om det är Flush samt Straight. Dessa två tillsammans kan avgöra om du har en Straight flush. Försök finna de mest värda händerna tidigt då detta ger att man direkt kan returnera värdet. Tips 2: Gör en frekvenstabell (ta reda på hur många av respektive valör som finns och lagra detta i ett fält). Kontrollera i frekvenstabellen om det är 4, 3 eller 2 av samma valör för att finna Trips, Full house m.m. Kan vara intressant att ha denna tabell redan för att finna om det är en Straight.
Uppgift 4 På en fil som heter TEXT.TXT finns en text som eventuellt innehåller en massa parenteser av olika sorter. Det kan vara vanliga parenteser () eller hakparenteser [] eller så kallade krullparenteser {}. Dessa kan ligga i varandra hur som helst, men för att det skall vara korrekt måste den egna parentestypen avslutas innan en annan parentestyp avlutas. En text kan alltså innehålla följande konstruktion: (... [... (... {... }... (... )... )...]... {}) En text får dock inte innehålla följande konstruktion: (... [... )... ] Texten får heller inte avslutas innan alla parenteser är avslutade. Ett exempel där det blir fel är alltså: (... (... (... )... (... )... ) Man kan också tänka sig att en svslutningsparentes dyker upp utan att det finns en startparentes. Detta är alltså också fel även om antale parenteser är korrekt: (... )... ) ( Din uppgift är att skriva ett program som kontrollerar att man har matchande parentespar genom hela texten. Det kan vara så att parenteser ligger på olika rader. Det är alltså hela texten som ses som en sekvens. Exempel på programkörning där filens innehåll var ok: Filen innehöll korrekt parantesmatchning. Exempel på programkörning där filens innehåll inte var ok: Filen innehöll inte korrekt parantesmatchning. Tips: Det är ok att skapa flera olika datafiler så att du kan testa ditt program. VIKTIGT är dock att du ser till att programmet läser från filen TEXT.TXT innan du skickar in din lösning. P.S. Om ni vet vad krullparenteserna heter på riktigt får ni gärna meddela detta dem som rättar uppgifterna. D.S.
Uppgift 5 (Specialuppgift endast för betyg 3) OBS! Denna uppgift går ej att kombinera med de övriga för högre betyg. På en fil som heter TEXT_SPECIAL.TXT finns en datamängd där raderna har följande format: Sträng Tal Oväsentliga data Strängen är alltid 6 tecken lång. Därefter kommer ett blanktecken. Talet kan vara antingen ett heltal (0, 12, 45,...) eller ett flyttal (3.14, 12.0, 27.34,...). OBS! talet 12.0 är alltså ett flyttal. Efter talet kommer alltid ett blanktecken. Resten av raden är oväsentlig i denna uppgift. Filen kan bestå av godtyckligt många rader! Din uppgift är att leta reda på alla tal som är heltal och beräkna medelvärdet av dessa. Alla flyttal skall ignoreras. Som utdata på skärmen skall antalet heltal skrivas ut samt medelvärdet av dessa. Om inga heltal finns skall detta skrivas ut. Körexempel där det inte finns några heltal på filen: Det fanns inga heltal i filen. Körexempel där det finns 5 heltal på filen: Det fanns 5 heltal i filen. Medelvärdet blev: 14.600 Tips: Det är ok att skapa flera olika datafiler så att du kan testa ditt program. VIKTIGT är dock att du ser till att programmet läser från filen TEXT_SPECIAL.TXT innan du skickar in din lösning.