2007-03-14.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Skriv ett program, Draw_Tree, som ritar ut ett träd enligt körexemplen nedan. Exempel 1: Mata in storlek på trädet: 1 # # # # Exempel 2: Mata in storlek på trädet: 2 # # # # # # # # Exempel 3: Mata in storlek på trädet: 8 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
2007-03-14.kl.14-19 Uppgift 2 Skriv ett program, Generate_Names_Program, som skapar ett annat program, Names, som skall hamna på filen names.adb. Programmet Generate_Names_Program skall låta användaren mata in ett heltal, N, som sen skall användas för att skapa ett precis anpassat program Names. Programmet Names skall utföra följande: Användaren skall mata in ett antal namn (utan felkontroll) som sen skall skrivas ut igen. Det är dessutom givet att inga namn innehåller mer än 10 tecken (i våra indata). OBS! i programmet Names skall man inte fråga efter antalet tal som skall matas in. Ett exempel på programkörning av programmet Generate_Names_Program: Mata in det antal namn som skall läsas in: 5 I names.adb finns nu ett program som läser in 5 namn. Ett exempel på programkörning av det genererade programmet Names givet att det första programmet, Generate_Names_Program, fick talet 5 som indata: Mata in 5 namn på separata rader: Maria Jonas Torbjörn Fredrik Klas De namn som matades in var: Maria Jonas Torbjörn Fredrik Klas
2007-03-14.kl.14-19 Uppgift 3 Skriv ett program, Min_Matrix, som fyller en matris med dimensionen 10x10 med slumpade heltal i intervallet [0, 9]. De slumpade matrisen skall, efter det att alla tal är slumpade, skrivas ut på skärmen. Efter detta skall den minsta delmatris som går att få där fortfarande alla nollor finns med skrivas ut på skärmen. Man skall alltså inte i den andra utskriften skriva ut inledande och avslutande rader som inte innehåller några nollor. Dessutom skall motsvarande klippning göras i sidled. Exempel på programkörning: Den slumpade matrisens innehåll: 1 2 2 1 4 5 7 9 3 4 2 5 0 6 5 2 0 7 8 1 5 4 1 3 9 6 7 0 6 9 1 3 7 4 9 5 2 3 7 8 2 4 5 0 0 0 4 3 2 9 4 6 7 9 2 3 5 4 1 9 1 3 0 3 6 0 8 4 2 5 1 5 3 8 9 5 5 7 3 2 3 7 6 1 8 7 3 5 8 9 3 6 4 8 2 1 7 8 9 9 Den minimala matris som innehåller alla nollor: 0 6 5 2 0 7 1 3 9 6 7 0 7 4 9 5 2 3 5 0 0 0 4 3 7 9 2 3 5 4 0 3 6 0 8 4
2007-03-14.kl.14-19 Uppgift 4 Du skall skriva ett program som läser in ett (enkelt) matematiskt uttryck och sen beräknar detta. Ditt program skall klara av de fyra enkla räknesätten +, -, * och /. Ett uttryck består alltid av två operander samt en operator (operatorn står mellan operanderna). Användaren matar alltid in ett flyttal, operanden och sen ett flyttal. Det är inga blanktecken mellan operanderna och operatorn. Det finns dock en liten hake. Ditt program skall delas upp så att det har dels en procedur, Get, som läser in uttrycket och lagrar detta i en post och dels en utskrifts-/beräkningsprocedur, Put, som tar emot posten, räknar ut resultatet och skriver ut det på skärmen. Se exemplen nedan vad som skall göras. Procedurerna skall inte skriva ut ledtexterna och man skall inte lagra mer information än det givna i posten. Det får heller inte skickas fler parametrar till procedurerna. Det är givet att man alltid matar in en decimal på flyttalen. Utskrifterna skall ha en decimals noggrannhet. Exempel 1 på programkörning: Mata in ett uttryck: 23.5+12.5 Uttrycket 23.5 + 12.5 = 36.0 Exempel 2 på programkörning: Mata in ett uttryck: 12.0*4.0 Uttrycket 12.0 * 4.0 = 48.0 Exempel 3 på programkörning: Mata in ett uttryck: 232.5/0.5 Uttrycket 232.5 / 0.5 = 465.0 Exempel 4 på programkörning: Mata in ett uttryck: 232.5-233.5 Uttrycket 232.5-233.5 = -1.0
2007-03-15.kl.08-13 Uppgift 1 ( Betyg 3 uppgift ) Skriv ett program, Draw_Lake, som ritar ut en sjö enligt körexemplen nedan. Exempel 1: Mata in storlek på sjön: 1 -- /~~\ ~~ \~~/ -- Exempel 2: Mata in storlek på sjön: 2 ---- /~~~~\ /~~~~~~\ ~~~~~~ ~~~~~~ \~~~~~~/ \~~~~/ ---- Exempel 3: Mata in storlek på sjön: 5 ---------- /~~~~~~~~~~\ /~~~~~~~~~~~~\ /~~~~~~~~~~~~~~\ /~~~~~~~~~~~~~~~~\ /~~~~~~~~~~~~~~~~~~\ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ \~~~~~~~~~~~~~~~~~~/ \~~~~~~~~~~~~~~~~/ \~~~~~~~~~~~~~~/ \~~~~~~~~~~~~/ \~~~~~~~~~~/ ----------
2007-03-15.kl.08-13 Uppgift 2 Skriv ett program, Generate_Sum_Program, som skapar ett annat program, Sum, som skall hamna på filen sum.adb. Programmet Generate_Sum_Program skall låta användaren mata in ett heltal, N, som sen skall användas för att skapa ett precis anpassat program Sum. Programmet Sum skall utföra följande: Användaren skall mata in ett antal heltal (utan felkontroll) som skall summeras. Programmet skall givetvis skriva ut summan. OBS! i programmet Sum skall man inte fråga efter antalet tal som skall matas in. Ett exempel på programkörning av programmet Generate_Sum_Program: Mata in det antal heltal som skall summeras: 5 I sum.adb finns nu ett program som summerar 5 heltal. Ett exempel på programkörning av det genererade programmet Sum givet att det första programmet, Generate_Sum_Program, fick talet 5 som indata: Mata in 5 heltal: 1 2 3 4 5 Summan blev: 15
2007-03-15.kl.08-13 Uppgift 3 Skriv ett program, Place_Queens, som placerar ut N stycken damer på ett kvadratiskt schackbräde av dimension NxN (kan alltså ha annan dimension än 8x8). Användaren skall mata in dimensionen på schackbrädet. Minsta dimension som är möjlig är 0, men vi räknar med att användaren matar in tal som är större än noll. KRAV: Ingen dam får stå på samma rad, kolumn eller på samma diagonal som någon annan. Till hjälp finns lite givet i filen EXTRA.ADB. Ta in dessa saker i ditt program om du vill. Exempel 1 på programkörning: Mata in dimension: 1 Damerna kan t.ex. placeras på följande sätt: D Exempel 2 på programkörning: Mata in dimension: 2 Damerna kan INTE placeras! Exempel 3 på programkörning: Mata in dimension: 4 Damerna kan t.ex. placeras på följande sätt:.d.....d D.....D. Exempel 4 på programkörning: Mata in dimension: 8 Damerna kan t.ex. placeras på följande sätt: D......D......D...D....D......D..D......D... TIPS 1: Det är lämpligt att lösa denna uppgift med rekursion. TIPS 2: Man kan skapa en datatyp i ett underprogram för matrisen som kanske behövs. TIPS 3: Man kan kasta/resa ett undantag när man funnit en lösning för att slippa leta vidare efter fler lösningar.
2007-03-15.kl.08-13 Uppgift 4 Följande format är givet som indata till det program du skall skriva: Efternamn:Förnamn:Telefonnummer Du skall skriva ett program som låter användaren mata in en rad med ovanstående format och lagra informationen i en post som är uppdalad i tre strängar (förnamn, efternamn och telefonnummer). Det är ok att lagra mer information i posten. Till sist skall programmet skriva ut persondatat enligt exemplet nedan. Programmet skall läsa alla rader tills dess att man matar in en tom rad. Då skall programmet avslutas. Det är givet att raderna aldrig är längre än 60 tecken. Exempel på programkörning: Mata in persondata: Albertsson:Albert:013-4567 Albert Albertsson Telefon: 013-4567 Mata in persondata: Ek:My:0102-110 My Ek Telefon: 0102-110 Mata in persondata: von Silfverstråhle:Niklas Gunnar:099-1234 Niklas Gunnar von Silfverstråhle Telefon: 099-1234 Mata in persondata: Tack för idag!
2007-03-15.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Skriv ett program som lägger in talen 1, 2, 3,..., 52 (dessa tal motsvarar de olika korten i en kortlek) slumpmässigt i ett fält som är 52 heltal långt. Det sätt ni skall göra detta på är att för varje tal (1, 2, 3,..., 52) slumpa fram en position i fältet och om denna position är ledig skall ni stoppa in talet där. Om positionen är upptagen slumpas en ny position (detta upprepas tills dess att man hittar en ledig position). Programmet skall skriva ut den blandade kortleken, d.v.s. talen som ligger i fältet. KRAV: Utskriften skall bestå av 4 rader med 13 tal i varje rad.
2007-03-15.kl.14-19 Uppgift 2 Skriv ett program, Generate_Draw_Program, som skapar ett annat program, Draw, som skall hamna på filen draw.adb. Programmet Draw skall utföra följande: Användaren skall mata in ett heltal som anger storleken på en figur. Programmet skall sen rita ut figuren (se körexempel nedan) på skärmen i den angivna storleken. OBS! i programmet Generate_Draw_Program skall man inte fråga efter storleken utan det skall endast skapa det program som utför jobbet senare. Ett exempel på programkörning av programmet Generate_Draw_Program: I draw.adb finns nu ett program som ritar figurer. Exempel 1 på programkörning av det genererade programmet Draw: Mata in storleken på figuren: 0 ++ ++ Exempel 2 på programkörning av det genererade programmet Draw: Mata in storleken på figuren: 1 +-+ +-+ Exempel 3 på programkörning av det genererade programmet Draw: Mata in storleken på figuren: 4 +----+ +----+
2007-03-15.kl.14-19 Uppgift 3 Skriv ett program, Rotate_File, som läser in innehållet från textfilen ORIGINAL.TXT (hela filens innehåll räknar vi får plats i arbetsminnet denna gång) och roterar innehållet 90 grader. Den nya textmassan skall sen skrivas ut på filen ROTERAD.TXT. Det vi vet är att det inte finns rader i filen som är längre än 20 tecken och det finns maximalt 20 rader. Detta för att du skall kunna dimensionera någon lämplig datastruktur att lagra filens innehåll i ditt program. Exempel på hur ORIGINAL.TXT skulle kunna se ut: Man kan tänka sig att det finns långa och korta rader att ta hand om i filen. 12345678901234567890 Givet ovanstående indatafil blir resultatet i ROTERAD.TXT följande: 1iroaM 2 acta 3fdhtn 4ie 5lrkdk 6e oea 7nartn 8.tt 9 taft 0 iä 1 t nn 2 a nk 3 sa 4 h 5 a ls 6 n åi 7 d ng 8 g 9 o a 0 m KRAV! Det får inte finnas rader som avslutas med blanktecken i resultatfilen. Det skall heller inte finnas fler rader än nödvändigt.
2007-03-15.kl.14-19 Uppgift 4 Som ni säkert har hört har vi i Sverige idag väldigt ont om personnummer. De räcker helt enkelt inte till för den mängd av folk som kan råka fylla år samma dag. Därför håller man på att arbeta fram ett nytt personnummerformat. Vi har fått förhandstips om hur det nya formatet kommer att se ut. Ni ser detta nedan. Skriv ett program som läser in ett personnummer och sen skriver ut det igen. Inläsning och utskrift skall ske i procedurer som heter Get respektive Put som har en parameter vardera. Personnumret skall lagras i en post bestående av tre heltal och en sträng med tolv tecken (för de sista tolv siffrorna i personnumret). Inget annat får lagras i posten. Personnummerinmatningskontroll skall göras så att personnumret följer följande specifikation: ÅÅÅÅ-MMDD-SSSS-SSSS-SSSS Alla bokstäver i formatet ovan skall vara siffror som motsvarar årtal, månad, dag samt de sista tolv kontrollsiffrorna. Förutom att årtal skall skrivas med 4 siffror skall dessutom åtta extra tilläggssiffror tillkomma. Bindestrecken skall också kontrolleras. Man kan anta att användaren alltid matar in exakt rätt antal tecken. Ingen felkontroll av rimliga datum eller kontrollsiffror behöver dock göras. Det räcker att det är siffror på dessa positioner. Om något är fel i det inmatade datat skall Format_Error kastas från din Get-procedur. Huvudprogrammet skall fånga felet och be om ny inmatning tills det att godkänt indata matats in från användaren. Du får göra ett paket av allt som har med Personnummerhanteringen att göra, men det är inget krav i denna uppgift. OBS! Då formatet ännu är hemligstämplat av svenska staten får ni inte yppa det för någon. :-)
2007-03-16.kl.08-13 Uppgift 1 ( Betyg 3 uppgift ) Skriv ett program, Draw_Car, som ritar ut en bil enligt körexemplen nedan. Exempel 1: Mata in storlek på bilen: 1 --- / \ ---- \ / - - -- -- - - - Exempel 2: Mata in storlek på bilen: 2 ------ / \ / \ / \ ------ \ / / / --- --- ---- ----- --- --- --- Exempel 3: Mata in storlek på bilen: 3 --------- / \ / \ / \ / \ / \ -------- \ / / / / / ----- ----- ------ -------- ----- ----- -----
2007-03-16.kl.08-13 Uppgift 2 Skriv ett program, Generate_Sorting_Program, som skapar ett annat program, Sorting, som skall hamna på filen sorting.adb. Programmet Generate_Sorting_Program skall låta användaren mata in ett heltal, N, som sen skall användas för att skapa ett precis anpassat program Sorting. Programmet Sorting skall utföra följande: Användaren skall mata in ett antal heltal (utan felkontroll) som skall sorteras. Programmet skall givetvis skriva ut dels de osorterade talen och efter sorteringen de sorterade talen. OBS! i programmet Sorting skall man inte fråga efter antalet tal som skall matas in. KRAV: Man får endast ha enkla variabler av typen Integer i programmet Sorting. Alltså inga andra datatyper är tillåtna. I programmet Generate_Sorting_Program får man dock använda det man vill. Ett exempel på programkörning av programmet Generate_Sorting_Program: Mata in det antal heltal som skall sorteras: 5 I sorting.adb finns nu ett program som sorterar 5 heltal. Ett exempel på programkörning av det genererade programmet Sorting givet att det första programmet, Generate_Sorting_Program, fick talet 5 som indata: Mata in 5 heltal: 5 3 2 4 1 De osorterade talen är: 5 3 2 4 1 Talen efter sortering : 1 2 3 4 5
2007-03-16.kl.08-13 Uppgift 3 På filen file_handling.ads finns specifikationen till ett filhanteringpaket som ni skall fullända. I paketet skall en Open och en Close finnas. Open skall skapa en filinformationspost och fylla den med information om vilken fil det är man skall hantera och hur man skall bearbeta filen. Normalt sett håller man i denna post reda på vilken adress man för tillfället skall bearbeta på hårddisk och detta representeras som ett heltal. Heltalet sätts normalt sett till 0 (startpositionen i filen), men kan också sättas till 1000 (en fingerad slutposition i filen) om man öppnar filen i läge Append_File. Om filvariabeln redan håller reda på en fil skall undantaget Use_Error resas/kastas. Close skall återlämna de filinformationspost som variabeln håller reda på. Om det inte finns någon fil som är öppen skall undantaget Use_Error kastas/resas. Förutom fullbordan av paketet skall du skriva ett program som visar att ditt paket fungerar som det skall. Inget avacerat program, men det skall fråga användaren efter filnamn och sen öppna filen. Programmet skall sen försöka öppna filen igen (fel kommer då att uppstå som skall hanteras utan att programmet skall krascha). Efter detta skall filen stängas (två gånger för att visa på att det uppstår ett fel även här). Programmet får inte krascha utan undantagen skall fångas.
2007-03-16.kl.08-13 Uppgift 4 Skriv ett program, Max_3x3_Matrix, som fyller en matris med dimensionen 5x5 med slumpade heltal i intervallet [0, 9]. De slumpade matrisen skall, efter det att alla tal är slumpade, skrivas ut på skärmen. Efter detta skall programmet leta reda på en av de delmatriser av dimension 3x3 som har den största summan av alla sina ingående tal. Det kan finnas flera 3x3-matriser som har samma summa så det spelar ingen roll vilken av dessa du hittar. Den delmatris du funnit skall sen skrivas ut på skärmen. Exempel på programkörning: Den slumpade matrisens innehåll: 1 2 2 1 4 2 5 0 6 5 5 4 1 3 9 1 3 7 4 9 2 4 5 0 0 Den 3x3-matris som har störst summa: 0 6 5 1 3 9 7 4 9
2007-04-11.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Skriv ett program som hjälper barn att lära sig de fyra räknesätten enligt följande specifikation. Man skall kuna välja vilket räknesätt man vill träna på i en enkel meny (se nedan). Programmet skall slumpa fram två tal som skall användas till beräkningen. Alla tal som skrivs ut samt de svar barnet ger skall ligga i intervallet [0, 100].Undantag är att division skall ge svar i intervallet [0, 10] samt att man inte skall testa multiplikation av tal utanför intervallet [0,10]. Alla svar skall dessutom vara heltal. Programmet skall ge barnet chans att svara tills det att det svarar rätt. Vilket räknesätt vill du använda? 1 = Plus(+) 2 = Minus (-) 3 = Gånger (*) 4 = Delat med (/) A = Avsluta Välj: 3 5 * 4 =? Ditt svar: 20 Rätt! Vilket räknesätt vill du använda? 1 = Plus(+) 2 = Minus (-) 3 = Gånger (*) 4 = Delat med (/) A = Avsluta Välj: 4 20 / 4 =? Ditt svar: 3 Nej försök igen. 20 / 4 =? Ditt svar: 5 Rätt! Vilket räknesätt vill du använda? 1 = Plus(+) 2 = Minus (-) 3 = Gånger (*) 4 = Delat med (/) A = Avsluta Välj: A Tack för idag! Ingen felhantering av användarens indata behövs, mer än svarets korrekthet (förstås).
2007-04-11.kl.14-19 Uppgift 2 Följande algoritm för slumptalsgenerering är framtagen av John von Neumann. Han har dock inte sagt att det är en bra slumptalsfunktion. 1. Givet ett tal X (indata). 2. Kvadrera talet (ger talet Y). 3. Plocka ut de N mittersta siffrorna ur Y (ger talet Z). 4. Returnera Z. Din uppgift är att skapa den funktion som tar emot det tal som räknar fram nästa slumptal givet att N = 4. Om det kvadrerade talet har färre siffror än N tas hela det nya talet med. Är det ett udda antal siffror (fler än N) skall sista siffran ignoreras innan man tar ut de siffrorna enligt punkt 3 ovan. En tabell med exempel på indata och utdata: X Y Z ---- -------- ---- 1234 1522756 5227 5227 27321529 3215 3215 10336225 3362 3362 11303044 3030 3030 9180900 1809 1809 3272481 2724 2724 7420176 4201 4201 17648401 6484 6484 42042256 422 422 178084 7808 För att man lätt skall se att din funktion fungerar skall du (i funktionen) skriva ut den rad som motsvarar en rad i ovanstående tabell. Skriv dessutom ett huvudprogram som skriver ut tabellhuvudet samt anropar funktionen ett antal gånger. Det är ok att skriva ut en tabell med t.ex. 10 rader. Tips: Det är lämpligt att använda utdata från funktionen som indata till nästa generering av slumptal. Det är också bra att låta användaren välja startvärdet. KRAV: Du får inte ha en massa if -satser som kontrollerar i vilket intervall Y ligger. D.v.s. du får inte göra fullständig uppräkning av de olika fall som uppstär för att få fram vilka siffror som skall plockas ut.
2007-04-11.kl.14-19 Uppgift 3 Det finns ett givet paket som heter Date_Handling. I detta finns det några standardrutiner som du säkert känner igen. Det du skall göra är att lägga till en funktion som heter Random i detta paket. Funktionen skall generera ett slumpmässigt korrekt datum. Skriv dessutom ett huvudprogram som låter användaren mata in ett datum som ligger i intervallet [1900-01-01, 2100-12-31] som sen datorn skall gissa sig fram till med hjälp av din slumpdatumsfunktion. När datorn har gissat ett datum skall det få reda på (detta sköter programmet självt) om datumet var för tidigt eller för sent jämfört med det inmatade. Intervallet att gissa på nästa gång får då justeras så att det gissade datumet errsätter en av gränserna i intervallet. Exempel på programkörning: Mata in ett datum i intervallet [1900-01-01, 2100-12-31]: 2001-02-28 Aktuellt intervall [1900-01-01, 2100-12-31]: Datorn gissar: 2028-08-15 Aktuellt intervall [1900-01-01, 2028-08-15]: Datorn gissar: 1928-03-25 Aktuellt intervall [1928-03-25, 2028-08-15]: Datorn gissar: 1973-10-11 Aktuellt intervall [1973-10-11, 2028-08-15]: Datorn gissar: 2007-11-13 Aktuellt intervall [1973-10-11, 2007-11-13]: Datorn gissar: 1991-09-06 Aktuellt intervall [1991-09-06, 2007-11-13]: Datorn gissar: 1991-09-06 Aktuellt intervall [1991-09-06, 2007-11-13]: Datorn gissar: 2002-04-04 Aktuellt intervall [1991-09-06, 2002-04-04]: Datorn gissar: 1997-05-01 Aktuellt intervall [1997-05-01, 2002-04-04]: Datorn gissar: 2000-10-15 Aktuellt intervall [2000-10-15, 2002-04-04]: Datorn gissar: 2002-01-29 Aktuellt intervall [2000-10-15, 2002-01-29]: Datorn gissar: 2001-10-15 Aktuellt intervall [2000-10-15, 2001-10-15]: Datorn gissar: 2000-11-03 Aktuellt intervall [2000-11-03, 2001-10-15]: Datorn gissar: 2001-04-15 Aktuellt intervall [2000-11-03, 2001-04-15]: Datorn gissar: 2001-04-04 Aktuellt intervall [2000-11-03, 2001-04-04]: Datorn gissar: 2001-02-16 Aktuellt intervall [2001-02-16, 2001-04-04]: Datorn gissar: 2001-02-17 Aktuellt intervall [2001-02-17, 2001-04-04]: Datorn gissar: 2001-02-28 Datorn gissade rätt! OBS! Datorn kan råka gissa på samma datum flera gånger. Det behöver inte vara så att gissningarna kommer direkt efter varandra.
2007-04-11.kl.14-19 Uppgift 4 Du skall skriva ett program som läser i de korrekta ord som finns i filen KORTA_ORD.TXT (det är ok att använda sig av att det är 57 tvåbokstaviga ord i filen) och lagra dessa i ett fält. Efter detta skall ditt program slumpa ut 1000 tvåbokstaviga ord och sen skriva ut på skärmen hur stor procent av dessa som fanns i filen. Ditt program skall avslutas efter varje genomförd statistikberäkning. Här följer 8 programkörningar som visar att det kan bli lite spridning i resultatet. Det var ca 6.30% korrekta ord. Det var ca 9.60% korrekta ord. Det var ca 8.60% korrekta ord. Det var ca 8.70% korrekta ord. Det var ca 8.40% korrekta ord. Det var ca 7.90% korrekta ord. Det var ca 8.10% korrekta ord. Det var ca 8.00% korrekta ord. Tips: Teoretisk sett borde resultatet bli 57 / (26 * 26) = 57 / 676 (vilket blir ca 8.42%). Får du resultat som inte ligger i närheten av detta hela tiden är det nog fel på ditt program.
2007-06-08.kl.08-13 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 + + + / \ / \ / \ + + + + + + + + / \ / \ / \ / \ + + + + + + + + + + / \ / \ / \ / \ / \ + + + + + + + + + + + + \ / \ / \ / \ / \ / + + + + + + + + + + \ / \ / \ / \ / + + + + + + + + \ / \ / \ / + + +
2007-06-08.kl.08-13 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.
2007-06-08.kl.08-13 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.
2007-06-08.kl.08-13 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.
2007-06-08.kl.08-13 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.
2007-06-11.kl.08-13 Uppgift 1 ( Betyg 3 uppgift ) 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. Vi antar att det alltid är så att parenteserna är matchade om man finner en slutparentes. Dett behöver du inte kontrollera. Det som däremot inte är givet är att det finns slutparenteser i tillräcklig mängd för att matcha alla startparanteser. Din uppgift är att skriva ett program som kontrollerar om det är helt matchat med parenteser i filen. Om det inte är det skall du skriva ut hur många parenteser av de olika varianterna som saknas. 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. Det saknas 3 stycken ). Det saknas 2 stycken ]. Det saknas 5 stycken }. 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. Om det är så att någon av parentesvarianterna är matchade men inte de övriga skall endast de varianter som inte matchas skrivas ut att de felar. D.v.s. Det blir endast färre utskriftsrader i andra programkörningsexemplet. P.S. Om ni vet vad krullparenteserna heter på riktigt får ni gärna meddela detta dem som rättar uppgifterna. D.S.
2007-06-11.kl.08-13 Uppgift 2 Det finns givet början till ett huvudprogram, Generic_Random_Handling_Test, som skriver ut 20 stycken slumptal. Slumptalen genereras i funktionen Random som ligger i ett paket som heter Generic_Random_Handling. Tyvärr är inte paketet riktigt färdigt heller. Det är för specifikt och skall göras om till ett generiskt paket. Din uppgift är alltså att fixa till paketet så att det blir generiskt med avseende på vilken storleksordning rötterna till de slumpade talen skall ha. Funktionen Random är gjord så att den returnerar 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,...). För tillfället är rötterna maximerade till 10 (i datatypen Integer_Type), men detta skall alltså ändras (din uppgift) så att huvudprogrammet kan bestämma detta senare. Se till att paketet blir generiskt med avseende på storleken på rötterna samt huvudprogrammet så att det använder sig av det modifierade paketet (d.v.s. instansierar det).
2007-06-11.kl.08-13 Uppgift 3 När man spelar kort är det ofta så att man inte är ensam. Om man antar att man är två personer som skall spela något kortspel där man har fem kort på handen (t.ex. poker) är det väsentligt att man inte har SAMMA kort båda två. Detta löser sig automatiskt om man spelar med en given kortlek, men det blir alltid annorlunda när man låter en dator generera slumpmässiga kort till respektive spelare. Det finns ett givet paket som heter Deck_Handling som hanterar det som motsvarar en kortlek. I detta paket finns det en given Generate-procedur som skapar en hand med 5 olika kort. Dock finns ett problem. Om man skapar två händer med 5 olika kort kan det slumpa sig så att man råkar få något eller några kort som är samma mellan de två händerna. Din uppgift är att se till att det finns en funktion, Legal_Hands, i paketet som tar emot två händer och kollar om de innehåller helt separerade kort. Om händerna inte innehåller SAMMA kort någonstans skall funktionen returnera True. I annat fall False. Det finns ett givet huvudprogram som heter Deck_Handling_Test. Du skall inte ändra i detta och heller inte i något annat i det givna paketet. Det är dock tillåtet att skapa separata extra underprogram till din nya funktion om du så tycker behövs. Körexempel: 7h Ac Kc 4d 5s and 7h 5d 9h Ts 2c is not ok. 4s 5d 7s 3d Qd and 2c 7s 4s Qd 4c is not ok. 7s 4h Tc 4s 6s and 7d 8c Ac 4c Jc is ok. Kh Ts 5d 5h Tc and 9h Ad Kh 3d 8s is not ok. 2c Qd 6h 7s Ks and 4s Td Jd 9s 5d is ok. Ad Tc 4c Jc 9d and 2d Kd 3s 7c Jh is ok. 8c Jc Kc 5h Qh and 8s Ks 7s 5c 5d is ok. 5d 5h 8d 3s 4h and 6s 3h 3s Js Jc is not ok. 5c Td 5s As 5h and 4c Tc 8c 2d Jc is ok. 8s 6c Jh 2d Qd and Kc Qd As 6s 8h is not ok. Ad 9c Qs 9d Ts and 8d 9s Kd 7h 9h is ok. Jh Qd Kd Kh Ks and 5s 8c Jh 2c Th is not ok. Kd 3s 4c 9d 6c and 8s 6h Ac Tc Ad is ok. 8h Jh Ah 3h As and 6s 7h 5h Jc 4c is ok. Kc 9d Qs 9h 8h and 3d Ac 5s Td 3h is ok. 9s 8s Ks 8h Jd and Qh 7d 2h Jh Th is ok. 4d 9h 3c 7d 5h and 5s 7h 2h 9s Th is ok. 8c 2s Ad Jh Qc and Jc 9d Kd Tc 5c is ok. 9h Ac 8h 3s 9s and Jc Qc Kh 9h 9c is not ok. 3c Ad 4c As 4s and 2d 5c 3c 3d Qc is not ok. OBS! De markerade delarna i körexemplet är endast till för att du skal lse varför det gått fel. Det är inget som kommer att synas i utskrifterna från programmet.
2007-06-11.kl.08-13 Uppgift 4 Skriv ett program, Draw_Special_Hexagones, som ritar ut hexagoner enligt körexemplen. Exempel 1: Mata in storlek på hexagonen: 1 + / \ + + + + \ / + Exempel 2: Mata in storlek på hexagonen: 2 + / \ / \ / + \ + / \ + + + + + + \ / + \ + / \ / \ / + Exempel 3: Mata in storlek på hexagonen: 3 + / \ / \ / + \ / / \ \ / / \ \ + / + \ + + / \ + + + + + + \ / + + \ + / + \ \ / / \ \ / / \ + / \ / \ / +
2007-08-20.kl.14-19 Uppgift 1 På filen PASSWD.TXT finns en lista med inloggningsdata för en tenta. I filen finns det för varje tentand information om personnummer, en anonym ID-sträng (SC1, SC2, SC3,...), ett id som kopplar studenten till en specifik tenta (TEN1, TEN2,...) samt ett unikt lösenord för just den specifika tentan för den tentanden. En tentand kan finnas med flera gånger i filen kopplad mot olika tentor. Exempel på innehåll i filen (titta i filen PASSWD.TXT för aktuella data): 851231-0101:SC2:TEN1:sprtj3 861021-0202:SC1:TEN1:p34wdk 851231-0101:SC1:TEN1:jfgoa6 870123-0303:SC1:TEN2:dfbf74 Din uppgift är att skriva inloggningssystemet för ett tentasystem som utvecklas. Vid inloggning skall användaren ange personnummer (på rätt format antar vi för att slippa felhantering av detta) samt lösenord (här skriver användaren exakt 6 tecken vilket ger att du slipper kontrollera detta). I filen är det givet att alla delar är lika långa (d.v.s. man kan inte ha t.ex. SC11 eller TEN12). Om användaren matar in ett personnummer som finns i databasen (filen) och lösenordet stämmer överens med personnumret blir användaren inloggad och ditt program skall skriva ut Inloggad på tenta TEN1. Välkommen SC1. (TEN1 och SC1 ersätts med aktuella data förstås) på skärmen. I annat fall skall ett felmeddelande skrivas ut och användaren får prova en gång till. Maximalt 3 försök är tillåtna. Efter detta kastas han/hon ut och programmet avslutas med meddelandet Det är inte din dag idag!.
2007-08-20.kl.14-19 Uppgift 2 Följande definition är given för en matematisk funktion: f( N) = 3N + 1 udda N N --- jämna N 2 Om man tar ett godtyckligt värde, N, och räknar ut vad funktionen ger för resultat och sen använder detta resultat som nytt N-värde för att sen upprepa detta ett flertal gånger har det visat sig att man förr eller senare kommer fram till att man får resultatet 1 från funktionen ovan efter ett antal iterationer. Detta är inte matematiskt bevisat, men man har testat startvärden på N från 1 och upp till ett väldigt stort tal och det verkar vara så att detta stämmer. Din uppgift är att ta fram det minsta N-värde som ger resultatet 1 efter exakt 50 iterationer. Ett exempel som kanske visar lite bättre hur man ser på detta med iterationerna: Startvärde Iterationer ------------------------- 2 1 3 10 5 16 8 4 2 1 4 2 1 5 16 8 4 2 1 6 3 10 5 16 8 4 2 1 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 Utskriften från ditt program skall bestå av startvärdet (det N som genererar 50 iterationer för att nå talet 1) samt alla värden i de olika iterationerna (utom talet 1 som ligger sist). Från exemplen ovan skulle motsvarande utskrift varit enligt följande om antalet iterationer skulle vara 16 istället för 50 (det råkade vara talet 7 som gav exakt 16 iterationer). 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2
2007-08-20.kl.14-19 Uppgift 3 Du skall skriva ett program som slumpar ut 16 stycken primtal och lägger dessa i en kvadratisk matris (4x4). Efter det att talen är instoppade i matrisen skall programmet först skriva ut innehållet i matrisen på skärmen och därefter kontrollera om summan i varje rad, kolumn samt de två diagonalerna är lika. Om så är fallet skall det förutom innehållet i matrisen skrivas ut att det är en magisk primtalskvadrat. Ett exempel på en magisk primtalskvadrat är: 3 61 19 37 43 31 5 41 7 11 73 29 67 17 23 13 I uppgiften ingår att göra en rimlighetskontroll om någon del av uppgiften är onödig att implementera. Om så är fallet är det tillåtet att skippa denna del och endast lösa de relevanta delarna. KRAV: Skriv en kommentar i programmet om du utelämnar någon del. I kommentaren skall det finnas en motivering till varför du utelämnat delen. TIPS: Examinator avgör om din motivering är rimlig. Självklart kan du inte ta bort allt i uppgiften. Ett krav för att det skall vara en äkta magisk kvadrat är att man inte återanvänder några tal, men i denna uppgift skulle detta kunna råka bli fallet då vi slumpar ut nummer utan inbördes test. Tips: Det är ok att begränsa slumpningen till tal mellan 2 och 1000.
2007-08-20.kl.14-19 Uppgift 4 När man släktforskar måste man kunna lagra många olika saker om relationerna kring en person. Din uppgift är att skapa datatypen till följande datastruktur. Mor Far Make/Maka Person Lista av ättlingar med make/maka Lista av relationer Barn 1 Barn 2 I figuren betyder Person den aktuella personen och dess relationer till andra. En Person skall vara en post innehållande tre pekare samt en sträng som innehåller namnet på personen (det skulle kunna vara mycket mer information, men vi skippar det i denna uppgift). De pekare som finns i posten skall peka på mor och far (som är två andra Person er) samt på en lista av Relation er. En Relation är en post som pekar på den make/make/sambo/... (en Person ) som man har barn tillsammans med samt en pekare till en lista med Ättling ar. En Ättling är en post som innehåller en pekare till ett barn (en Person ). Om du vill kan en Ättling vara endast själva pekaren till ett barn (en optimering av datastrukturen). TIPS: Tänk inte på vad som skall utföras i projektet. Det är ENDAST datastruktudelarna som är relevanta. OBS! Endast datastrukturen skall redovisas. Inga procedurer eller funktioner skall göras. Det är tillåtet att ha fler paket som hjälp om man vill det. OBS! Det är endast datatypen Person som är relevant att ha i den publika delen i paketet Relation_Handling. Dock skall denna vara privat.
2007-08-20.kl.14-19 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 SPECIAL_TEXT.TXT finns en datamängd där raderna har följande format: Sträng : Sträng : Sträng Det finns alltså ett antal tecken först, sen ett kolon, sen ytterligare ett antal tecken, ett kolon och till sist ett antal tecken igen. I strängarna finns det inga kolon förstås. Filen kan bestå av godtyckligt många rader! Din uppgift är att skriva ut (på skärmen) hur långa strängarna är. För varje rad i filen blir utdatat på skärmen alltså: Heltal : Heltal : Heltal Antag att filen ser ut på följande sätt (se dock i filen för aktuella data): Anders:Andersson:Andersgränd 3 Bengt:Bengtsson:Bengts väg 123 2 tr. Julius:Ceasar:Rom Jultomten::Nordpolen Utskriften på skärmen skulle då bli: 6:9:13 5:9:20 6:6:3 9:0:9
2007-10-18.kl.08-13 Uppgift 1 ( Betyg 3 uppgift ) Skriv ett program, Happy_Birthday, som låter användaren mata in sitt födelsedatum och därefter räknar ut vilket datum användaren fyller 10000 dagar. Exempel 1: Mata in ditt födelsedatum: 2007-10-18 Din 10000:e dag är 2035-03-05 Exempel 2: Mata in ditt födelsedatum: 2000-01-01 Din 10000:e dag är 2027-05-19 Exempel 3 (där personen fyller 10000:e dag idag) : Mata in ditt födelsedatum: 1980-06-01 Din 10000:e dag är 2007-10-18
2007-10-18.kl.08-13 Uppgift 2 Skriv ett program, Sorting_Special_Strings, som läser in 10 stycken strängar, sorterar dessa och skriver till sist ut dem. Strängarna är maximalt 80 tecken långa. Formatet på strängarna ser ut på följande sätt (det är givet att det inte finns blanktecken i slutet av strängdelarna): Del_1:Del_2:Del_3 De tre delarna kan vara godtyckligt långa, d.v.s. de är inte bundna till att vara ett specifikt antal tecken per del. Ett par exempel på strängar kan vara följande: Bert Nilsson:Bertsgränd 7:Ytterstaden Bert:Film:Barn ABC::CBA Det kan alltså vara delar som är tomma i strängen som man ser ovan. Sorteringen skall ske på så sätt att man jämför delarna var för sig. Del_1 i en sträng jämförs alltså med en Del_1 i en annan etc. Om strängarna är olika långa jämförs endast så många tecken i den längre strängen som det finns i den kortare. Om alla tecken är lika räknas den kortaste strängen som minst (exempel: Bert < Bert Nilsson). Om Del_1 är lika i två strängar skall Del_2 jämföras. D.v.s. Del_1 har högst prioritet, Del_2 näst högst och Del_3 lägst. Ett körexempel: Mata in det antal 10 strängar som skall sorteras: ABC:ABC:ABC ABC:ABC:ABB ABB:ABC:ABC ABC:ABB:ABC ABC:ABB:ABB AC:ABC:ABC AB:ABC:ABC ABCD:ABC:ABC ABC:AB:ABCD ABCD:ABC:AB Strängarna sorterade: AB:ABC:ABC ABB:ABC:ABC ABC:AB:ABCD ABC:ABB:ABB ABC:ABB:ABC ABC:ABC:ABB ABC:ABC:ABC ABCD:ABC:AB ABCD:ABC:ABC AC:ABC:ABC
2007-10-18.kl.08-13 Uppgift 3 Skriv ett program som ritar ut en kluven ölatom på skärmen. Användaren skall ange storleken. För dig som inte vet hur en kluven ölatom ser ut finns exempel nedan som belyser detta. Exempel 1: Mata in storleken på den kluvna ölatomen: 1 ö m l o at Exempel 2: Mata in storleken på den kluvna ölatomen: 2 ö m l o a t ö m l o at Exempel 3: Mata in storleken på den kluvna ölatomen: 3 ö m l o a t ö m l o a t ö m l o at Exempel 4: Mata in storleken på den kluvna ölatomen: 4 ö m l o a t ö m l o a t ö m l o a t ö m l o at Slutsats: Ju mer man håller på att öla, desto mer tom blir man... :-)
2007-10-18.kl.08-13 Uppgift 4 Skriv ett program som läser in ett antal strängar från en fil (en sträng per rad) och omvandlar dessa till vanliga decimala heltal och skriver ut dem på skärmen. Strängarna på filen är hexadecimala tal (maximalt 8 tecken långa). Ett exempel på innehåll i filen (som heter HEXTAL.TXT) kan vara: 7D7 A 12 Det fins alltså ett hexadecimalt tal per rad i filen och det skall komma ut ett vanligt decimalt tal per rad på skärmen. Ovanstående fil borde då generera utdatat: 2007 10 18 För er som eventuellt inte vet hur ett hexadecimalt tal är uppbyggt finns här en kort beskrivning av detta. Vi börjar med ett vanligt decimalt tal (basen 10). Det har entalssiffra (värde 10 0 ), tiotalssiffra (värde 10 1 ), hundratalssiffra (värde 10 2 ), etc. Ett hexadecimalt tal (basen 16) har entalssiffra (värde 16 0 ), 16-talssiffra (värde 16 1 ), 256-talssiffra (värde 16 2 ), etc. Talet 123 i basen 10 (123 10 ) har värdet: 1 * 10 2 + 2 * 10 1 + 3 * 10 0 = 123 10 Samma tal i basen 16 (123 16 ) har värdet: 1 * 16 2 + 2 * 16 1 + 3 * 16 0 = 291 10 För att representera talen 10-15 på respektive position i ett hexadecimalt tal använder man bokstäverna A-F. (A = 10, B = 11,..., F = 15). Talet AB 16 motsvarar alltså: A * 16 1 + B * 16 0 = 10 * 16 1 + 11 * 16 0 = 171 10 Tips: För att omvandla ett hexadecimalt tal till ett decimalt tal kan man alltså plocka ut respektive hexadecimal siffra och multiplicera denna med sitt värde och summera alltihop. Man kanske kan göra på andra sätt också, men det är upp till er att komma på isåfall.