Tentamen TEN1 HI

Relevanta dokument
Tentamen TEN1 HI

Tentamen TEN1 HI

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

Övningsuppgifter. Uppgifter föreslagna från vår kursbok markeras med avsnitt och sedan: SC Self Check, P Programing, PP Programing Projects.

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

Uppgifter föreslagna från vår kursbok markeras med avsnitt och sedan: SC Self Check, P Programing, PP Programing Projects.

HI1024 Programmering, grundkurs TEN

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Föreläsning 7. Träd och binära sökträd

Försättsblad till skriftlig tentamen vid Linköpings Universitet

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

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Tentamen Datastrukturer för D2 DAT 035

TDIU01 / 725G

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Föreläsning 9 Datastrukturer (DAT037)

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 4 Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT036)

Tentamen i Grundläggande Programvaruutveckling, TDA548

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

Föreläsning 7. Träd och binära sökträd

Tentamen i Introduktion till programmering

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Tentamen i Algoritmer & Datastrukturer i Java

Träd Hierarkiska strukturer

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

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

Tentamen i Algoritmer & Datastrukturer i Java

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

TDDC30 Programmering i Java, datastrukturer och algoritmer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

Tentamen, Algoritmer och datastrukturer

Föreläsning 9 Innehåll

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

DAI2 (TIDAL) + I2 (TKIEK)

Tentamen, EDAA10 Programmering i Java

Tentamen Datastrukturer (DAT037)

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt

Lösningar Datastrukturer TDA

Föreläsning 4 Datastrukturer (DAT037)

Tentamen Datastrukturer D DAT 035/INN960

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

Tillämpad Programmering (ID1218) :00-13:00

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

TDDC30 Programmering i Java, datastrukturer och algoritmer

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Föreläsning 2. Länkad lista och iterator

Tentamen i Algoritmer & Datastrukturer i Java

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Föreläsning Datastrukturer (DAT036)

Föreläsning 9 Innehåll

Tentamen i Programmeringsteknik I

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Föreläsning 5 Datastrukturer (DAT037)

Programmering II (ID1019) :00-17:00

Tentamen Programmeringsteknik 2 och MN Skrivtid: Inga hjälpmedel.

Föreläsning 9. Sortering

Planering Programmering grundkurs HI1024 HT TIDAA

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Föreläsning 14 Innehåll

Tildatenta Lösningsskiss

Seminarium 13 Innehåll

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Algoritmer och datastrukturer 2012, fo rela sning 8

Binära sökträd. Seminarium 9 Binära sökträd Innehåll. Traversering av binära sökträd. Binära sökträd Definition. Exempel på vad du ska kunna

Lösningsförslag till tentamen Datastrukturer, DAT037,

public boolean containskey(string key) { return search(key, head)!= null; }

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Dugga Datastrukturer (DAT036)

Datastrukturer. föreläsning 10. Maps 1

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

Fredag 10 juni 2016 kl 8 12

Planering Programmering grundkurs HI1024 HT data

KTH, NADA, Vahid Mosavat. 1. Flervalsfrågor (5p)

Transkript:

Tentamen TEN1 HI1029 2015-03-17 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha tålamod! Logga inte ut förrän ni är klara med hela tentan. Välj H: som ert workspace i eclipse. Skapa ett projekt TEN1 (välj execution environment JRE: JavaSE-1.7). Skapa ett package per uppgift och kalla dessa uppgift1, uppgift2,, uppgift5. I varje package lägger ni nu till filerna ni behöver för denna uppgift. Även om ni inte löser hela uppgiften så kan ni få delpoäng men ni måste se till att koden kompilerar och kan köras. Både output och koden bedöms och det är viktigt att denna är välskriven och uppfyller uppgiftens instruktioner. Om ett program är ineffektivt kan detta ge poängavdrag. Det är meningen att man skall använda de tekniker vi lärt oss där detta är fördelaktigt. Välj bra variabelnamn och struktur men lägg inte så stor vikt vid kommentarer. Kom ihåg ert tentamenskonto. Resultaten kommer att presenteras kopplade till dessa! Tentamen består av 5 uppgifter. Filer som behövs för att lösa uppgifterna hittar ni i W:\PROV\AoD\ Java API hittar ni i W:\PROV\Java\api\index.html Betygsgränser (Max 15p): 7p Fx, 8p E, 9p D, 10p C, 11p B, 12 A Examinator och rättande lärare: Nicklas Brandefelt

1. I den här uppgiften utgår vi ifrån vår enkellänkade lista från föreläsningen (något nedbantad). Använd filerna i W:\AoD\Uppgift1. Glöm inte bort specialfallet att vi har en tom lista när du programmerar. a) Skriv om tostring-metoden så att den utför samma uppdrag som nu (att skriva ut listans alla element i rätt ordning) med hjälp av rekursion istället för iteration. Du får använda en wrapper-metod men inga medlemsvariabler utöver de som redan finns (head och size). (1p) b) Skriv om getnode-metoden så att den utför samma uppdrag som nu med hjälp av rekursion istället för iteration. Du får använda en wrappermetod men ändra hellre i anropet till metoden. Denna metod är ju privat. (1p) c) Ibland om det är viktigt att en lista tar minsta möjliga plats kan det vara bättre att klara sig utan medlemsvariabeln size. Ta bort medlemsvariabeln size och introducera inga nya medlemsvariabler. Ändra befintliga metoder så att de fungerar precis som innan men nu utan medlemsvariablen size. Spara de gamla funktionerna bortkommenterade ifall du inte lyckas med denna uppgift. (1p)

2. I den här uppgiften gäller det att ta sig från toppen av en sifferpyramid till botten på ett sådant sätt att man passerat varje siffra precis en gång. I varje steg får man bara gå vänster eller höger på sin väg nedåt. För full poäng skall man använda sig av backtracking. Programmet skall presentera ordningen på de siffror man passerat på väg nedåt. Det skall klara en godtycklig triangel innehållande endast siffrorna 0-9 med tio nivåer. Om det finns flera lösningar räcker det att programmet hittar en lösning. Saknas lösning skall programmet ange det. I W:\AoD\Uppgift2 hittar ni ett skal med pyramiden nedan hårdkodad. För denna bör utskriften bli: 5, 1, 7, 8, 3, 6, 0, 9, 2, 4. (3p)

3. Implementera en heap för heltal med en array som inre datastruktur. Du får inte använda några andra datastrukturer från java s api. Du behöver bara implementera insättning och inte borttagning. Heapen ska ha plats för 1000 heltal och behöver inte kunna växa när den blir full. Metoden insert skall returnera true om den lyckas sätta in och false om arrayen är full. I W:\AoD\Uppgift3 hittar du en main som bör fungera med din heap. Där ser du att du också ska implementera en tostring. Denna ska bara skriva ut alla element på en rad i den ordning de ligger i arrayen. (3p) Tips: En heap är ett komplett binärt träd där rotens nyckel är minsta nyckeln i trädet och varje icke tomt subträd är en heap. Insättning: 1. Sätt in ny nod på första lediga plats. 2. Medans noden inte är rot och nodens nyckel är mindre än förälderns nyckel: byt plats på förälder och nod Om man lagrar en heap i en array kan man börja med roten och lägga elementen nivå efter nivå från vänster till höger och då gäller: en nod med index p har vänster barn med index 2p+1, höger barn med index 2p+2 och sin förälder med index (p-1)/2.

4. I denna uppgift utgår vi från vårt binära sökträd från föreläsningen i en nedbantad version. Använd filerna i W:\AoD\Uppgift4. Lös uppgifterna nedan utan att skapa nya medlemsvariabler. Du får gärna använda privata hjälpmetoder vid behov. Sökträdet får inte påverkas av anrop till metoderna du skapar enligt nedan. a) Skriv metoden find. För den som inte minns så ska den returnerar datat från den nod vars data är lika med parametern target enligt metoden target.compareto. Om datat saknas i trädet skall metoden returnera null. (2p) b) För att kunna studera att en implementation av ett binärt sökträd faktiskt fungerar korrekt kan det vara bra att kunna skriva ut hur trädet faktiskt ser ut. Skriv metoden printtree som skriver ut ett träd till standard ut. Den ska skriva ut trädet med en nivå per rad. För varje nivå skriver den ut barnen till alla noder som fanns i nivån ovanför även om dessa är tomma (då skriver den null). På så sätt kan man entydigt se strukturen hos trädet. Trädet man får om man adderar H, B, N, A, E, C, F, D i given ordning skrivs då ut: H B N A E null null null null C F null D null null null null (2p)

5. Här ska vi titta på det allmänna myntväxlingsproblemet. Vi ska alltså skriva ett program som givet valörerna i en valuta och givet mängden växel som skall ges beräknar minsta antalet mynt/sedlar som vi kan lämna ut. Om valörerna är 1kr, 10kr och 11kr och vi ska ge 30kr i växel ska programmet alltså svara 3 (dvs 3 tiokronor). Programmet behöver alltså inte svara hur växeln skall ges utan bara antalet mynt/sedlar. Dock problemet skall i denna uppgift lösas med dynamisk programmering bottom-up. Om du löser problemet med dynamisk programmering top-down (rekursion med tabulerade värden) eller bara rekursion så får man noll poäng. För full poäng skall lösningen dessutom vara effektiv. (2p)