Övningsuppgifter 725G82



Relevanta dokument
Tentaupplägg denna gång

Tentaupplägg denna gång

TDP Uppgift 1

Föreläsning 6: Introduktion av listor

Uppgift 1 ( Betyg 3 uppgift )

Programmeringsuppgifter 1

kl Tentaupplägg

Tentamen OOP

Föreläsning 11. Giriga algoritmer

Uppgift 1 (Oläsliga krypterade meddelanden)

Ickelinjära ekvationer

Föreläsning 3.1: Datastrukturer, en översikt

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Chapter 3: Using Classes and Objects

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Programmeringsolympiaden 2012 Kvalificering

kl Tentaupplägg

Objektorienterad programmering D2

Föreläsning 1 & 2 INTRODUKTION

TAIU07 Matematiska beräkningar med Matlab

Föreläsning 4: Poster

Om include-filer i PHP

Tele2 växel. Användarmanual

Import av utlandsresultat

Programmeringsolympiaden 2008 Kvalificering

Excel och Word LABORATION. Innehåll Uppgift A Diagramhantering Uppgift B Kalkylering Dokumentation Presentation i WORD

Nallelek Lärarvägledning

Öppna dokumentet. Det heter ecdlfil.doc (Du får instruktioner om var)

Grundläggande programmering med C# 7,5 högskolepoäng

Maskinkassajournalen hittas under Maskinhandel Maskiner Maskinkassajournal och används till följande:

EXTRA UPPGIFTER I C++ PROGRAMMERING-A

Migrera till Word 2010

LÄSLANDET - BOKSTÄVER OCH ORD

Instruktioner för dig som ska söka till Mattekollo 2016

Del 2 Monteringsanvisning motor. Boxline Modern Ribbline Futura (Basic)

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Förberedelser: Sätt upp konerna i stigande ordningsföljd (första inlärningen) eller i blandad ordningsföljd (för de elever som kommit längre).

Användarmanual Pagero Connect 2.0

Programmeringsteknik med C och Matlab

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

TDP Regler

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

UPPGIFT 2 KVADRATVANDRING

Användarmanual Körjournal för iphone

Läs detta innan du fortsätter, eller skriv ut det, klicka runt lite och läs samtidigt.

UPPGIFT 1 KANINER. Håkan Strömberg 1 Pär Söderhjelm

Datastrukturer och algoritmer

Miljo statistiks-underlag / CO2-utsla pp

Uppgift 1 (Sorterade heltal som är OK)

Skapa ett register över din grupp/klass

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Problem: BOW Bowling. Regler för Bowling. swedish. BOI 2015, dag 1. Tillgängligt minne: 256 MB

Fortsättningskurs i programmering F 2. Algoritmer i Programutveckling Hugo Quisbert Problemexempel 1

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

Problemet löd: Är det möjligt att på en sfär färga varje punkt på ett sådant sätt att:

Bruksanvisning för hjälpbegäran

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Mobil lagerhantering med streckkodsskanner

1 Skapa Tabell Skapa Relationer Redigera Relationer Redigera Fält i Tabell Lägga till Poster i Tabell...

Netwise CMG Voice , Rev 1.0, CJ 1(16)

Gruppspelsregler. Enskede Lawn Tennisklubb

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift )

19. Skriva ut statistik

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

"if"-satsen. Inledande programmering med C# (1DV402)

Grunderna i stegkodsprogrammering

Seriehantering. [En enkel guide för hur du som serieadministratör använder SVEMO TA.]

Uppgift 1 (vadå sortering?)

Uppgift 1 ( Betyg 3 uppgift )

Bygga hus med LECA-stenar

Programmering Grundkurs (6H2950) Grundläggande Programmering (6A2001)

Björn Abelli Programmeringens grunder med exempel i C#

Senaste revideringen av kapitlet gjordes , efter att ett fel upptäckts.

5 Grundläggande in- och utmatning

Kursmaterial för laborationer i

Fotbollsskolan. skott.indd

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Till dig med Måltidsservice

RödGrön-spelet Av: Jonas Hall. Högstadiet. Tid: minuter beroende på variant Material: TI-82/83/84 samt tärningar

Tentaupplägg denna gång

Begrepp Värde (mätvärde), medelvärde, median, lista, tabell, rad, kolumn, spridningsdiagram (punktdiagram)

Så här beställer du från Apoteket Farmaci via nätet

8-4 Ekvationer. Namn:..

STADSBYGGNADSFÖRVALTNINGEN. Aktivitetsstöd. Behörigheten Föreningsadministratör. Datum: Version 2. Sidan 1 (30)

PROGRAMMERING-JAVA TENTAMINA

Textsträngar från/till skärm eller fil

Handledning för uppsatsadministratörer

Manual BC-545 ANVÄNDARMANUAL

Användarmanual till DAISY-spelaren Telex Scholar

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

Referens till. WeavePoint 6 Mini

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

DEN MYSTISKA TÄRNINGEN. Effekt: Läs publikens tankar genom att förutse vilket nummer som valts.

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Tentaupplägg denna gång

PNSPO! Exporterar och Importerar texter från CX- Designer. 20 mars 2012 OMRON Corporation

Synkronisering. Föreläsning 8

För sökande: Vanliga frågor om e-tjänsten 4/2011

UMEÅ UNIVERSITET 26 april 2002 Instutionen för datavetenskap. Grafproblem. Laboration 4, Datastrukturer och Algoritmer VT02

Transkript:

Övningsuppgifter 725G82 Mål Syftet med dessa övningsuppgifter är att utveckla din förmåga att lösa problem med programmering i programspråket Java. Uppgifterna är uppdelade i tre delar och fokuserar på tre grundläggande områden: Grundläggande satser, som t.ex. tilldelning och uttryck, operationer för in- och utmanting (tangentbord/skärm) samt styrstrukturer, if, for, while, do-while. Underprogram (Javas metoder) och hur de kan användas för att dela upp ett problem/program. En av Javas inbyggda datastrukturer, det dynamiska fältet ArrayList.

Del A - Grundläggande satser Uppgift 1 - Tomten på solsemester Efter jul är tomten trött och tar där med en relaxresa till Bahamas. För att ta sig från nordpolen till hotellet behöver tomten åka flyg, buss och sedan taxi. Eftersom taxibilarna har fullt upp just denna period (många som vill fly undan snö och rusk) måste dessa bokas i förtid. Din uppgift är att räkna ut vilken tidpunkt som taxin skall bokas för. Tomten kommer att mata in sin utresetid från nordpolen i ditt program. Det tar 6,5 timmar att flyga från Nordpolen till Bahamas. Utöver detta tar det maximalt 20 minuter att ta sig till busstationen när man väl kommer fram. Bussarna går var 30:e minut (varje hel och halvtimme) från flygplatsen till resorten. Bussresan tar maximalt 1 timme. Det tar sedan ca 5 minuter att gå från fjärrbussterminalen till taxiparkeringen. Vi utgår ifrån att nordpolen och Bahamas har samma tidszon. Du behöver inte använda loopar i din lösning, men du får om du vill. Mata in utresetid Timme: 11 Minut: 35 Taxin skall bokas för kl 19:35. Mata in utresetid Timme: 17 Minut: 00 Taxin skall bokas för kl 01:05. Körexempel 3: Mata in utresetid Timme: 07 Minut: 11 Taxin skall bokas för kl 15:35.

Uppgift 2 - Momstabellen Konstruera ett program som skriver ut en momstabell. Programmet ska på terminalen fråga efter och ta som inmatning följande värden (där alla värden ska rimlighetskontrolleras, se nedan): Nedre samt övre gräns för prisintervallet Steglängd i tabellen Momsprocenten (uttryckt som decimaltal i intervallet 0 till 100 %) För att få lite överblick kan det vara vettigt att börja med antagandet att användaren kommer att mata in rimliga värden och skriva ett program utan felkontroller. Programmet ska ge resultat enligt nedan vid körning (användarens indata kursiverad). När du fått till själva tabellen så kan du lägga till felhantering av användarens inmatning. D.v.s. antag nu att användaren matar in felaktiga värden. Felhanteringen skall vara av typen rimlighetskontroll vilket innebär att användaren alltid kommer att mata in data av rätt datatyp. Detta ska göras så fort som felet kan upptäckas. Programmet ska ej avbrytas utan ny fråga ska ställas om användaren matar in ett felaktigt data! Tänk på att användaren kan mata in felaktiga data många gånger. Första pris: 10.00 Sista pris: 15.00 Steg: 0.5 Momsprocent: 10.00 === Momstabell === Pris utan moms Moms Pris med moms 10.00 1.00 11.00 10.50 1.05 11.55 11.00 1.10 12.10...... 15.00 1.50 16.50 Första pris: 10.00 Sista pris: 12.00 Steg: 0.3 Momsprocent: 20.00 === Momstabell === Pris utan moms Moms Pris med moms 10.00 2.00 12.00 10.30 2.06 12.36 10.60 2.12 12.72...... 11.80 2.36 14.16 OBS! Sista Pris utan moms -värdet i andra exemplet är 11.80 och inte 12.00 (inte heller 12.10)! Lämpliga testdata kan vara (kombinera lite olika för att se om ditt program verkar fungera): Första pris: -1 0 10 100 Sista pris: -1 0 1 11 12 15 101 1000000 Steg: -1 0 0.1 0.25 0.3 0.5 1 10 Momsprocent:-1 0 1 20 50 100 101

Uppgift 3 - Läckande kaffeapparat En kaffeapparat står och är evigt igång. Det är en sådan där användaren får välja bland många olika saker, som t.ex. cappuccino, latte, café lungo, hetvatten m.m. Tyvärr läcker apparaten, inte vätska, utan minne. Varje gång apparaten används uppstår en minnesläcka á 1 byte. Ju mer minne som apparaten förlorar, desto längre tid tar det för användaren att få sin dryck. Apparaten har 1 Kbyte minne att röra sig på, när allt detta minne tar slut så kraschar apparaten. Det är dock troligare att användaren långt tidigare blir så frustrerad över att apparaten går långsamt så att denne rycker ut sladden och maskinen startar om (då är allt minne fritt igen). Tiden det tar att få sin dryck tillagad kan beräknas med följande formel: 60 M 20 T=40 0.5 Där T är tiden i sekunder och M är minnesläckans storlek. Skriv ett program där användaren matar in hur lång tid som det maximalt är acceptabelt att vänta på kaffe (minst 5 sekunder). Programmet skall då mata ut hur många koppar som kan beredas innan apparaten måste startas om. Mata in den maximalt acceptabla väntetiden: 22.0 Apparaten måste startas om efter 43 koppar. Mata in den maximalt acceptabla väntetiden: 5.0 Apparaten måste startas om efter 1 koppar. Körexempel 3: Mata in den maximalt acceptabla väntetiden: 120.0 Apparaten måste startas om efter 92 koppar. Körexempel 4: Mata in den maximalt acceptabla väntetiden: 1200.0 Apparaten måste startas om efter 159 koppar. TIPS: Den matematiska approachen skulle vara att lösa ut M från formeln ovan. Det är inte tanken att du skall göra så i denna uppgift. Låt programmet helt enkelt testa sig fram med formeln ovan tills man överstiger tidsgränsen.

Del B - Underprogram Uppgift 4 - Ettan Skriv ett program som skriver ut en "etta". Användaren matar in storleken på ettan som skall ritas ut. I denna uppgift skall du försöka använda metoder så mycket som du kan. En bra tumregel är att inte ha mer än 10 rader kod per metod (inklusive main). Om två metoder blir lika varandra, kan du komma på något sätt att ersätta dem med en enda? Mata in N: 1 / Mata in N: 2 _ / Körexempel 3: Mata in N: 3 / Körexempel 4: Mata in N: 5 /

Uppgift 5 - Syldavernas kod Den syldaviska armen har en ny kod som de använder för att säkert kommunicera mellan sina regimenten. Koden fungerar på följande sätt: För alla bokstäver mellan 'A' och 'Z' och mellan 'a' och 'z' så vänder man på alfabetet. 'a' blir alltså 'z' och vice versa, 'b' blir 'y' och vice versa o.s.v. Alla tecken som inte är bokstäver är helt oförändrade. T.ex. blir strängen "hejsan" "svqhzm" och "Anfall nu!" blir "Zmuzoo mf!". Det som är så bra med denna kod är att avkrypteringen kan ske med samma algoritm som krypteringen! Skriv ett program som låter användaren mata in ett meddelande (på en rad) och som sedan skriver ut det avkrypterade meddelandet. Dela upp din lösning i lämpliga underprogram. Ett tips är att göra en metod som avkrypterar just ett tecken. Mata in meddelandet: Yziz vgg kzi wztzi pezi groo qfozuglm mf! Det avkrypterade meddelandet lyder: Bara ett par dagar kvar till julafton nu! Mata in meddelandet: Rmtvm plnnvi zgg pfmmz orhgz fg wvmmz plw. Det avkrypterade meddelandet lyder: Ingen kommer att kunna lista ut denna kod. TIPS: Tänk på att det går att plussa chars. Testa t.ex. char c = 'A' + 2; System.out.println(c);

Del C - Fält Uppgift 6 - Medianleksak Tomtens verkstad har akut materialbrist och måste begränsa antalet leksaker till en leksak per barn. Ifall tomten väljer den första leksaken på varje lista kommer inte barnen bli överraskade, tomten tänkte därför att medianleksaken blir ett bra val av leksak! Skapa ett program som hittar median-leksaken bland en godtycklig mängd leksaker. Det är givet att det alltid är ett udda antal leksaker som matas in. Mata in leksaker: Bil SuperCoolActionFigur Kol Psyduck Laserpistol Medianleksak: Kol Mata in leksaker: Boll Ring Apa Ponny Slagträ Bok Abakus Medianleksak: Ponny

Uppgift 7 - Bollar och glasrör Vi tänker oss N stycken genomskinliga glasrör ståendes på rad. Som ett spel kan man tänka sig att vi släpper ner bollar från ovan och låter dem landa i rören. Vi tänker oss att det är slumpmässigt vilket rör som just varje boll hamnar i. Vi antar även att rören är väldigt långa och smala och att det kan finnas maximalt 99 stycken. Skriv ett program där användaren får mata in N, d.v.s. hur många rör vi har. Användaren skall därefter mata in hur många bollar vi vill släppa ned (också maximalt 99 stycken). Programmet skall därefter slumpa hur bollarna hamnar i rören och rita ut detta på skärmen. I den utritade "bilden" skall även rören vara numrerade från 1 upp till N. Ingen felhantering av indata krävs. Mata in N: 5 Mata in antal bollar: 13 o o o o o o o o o o o o o 1 2 3 4 5 Mata in N: 4 Mata in antal bollar: 7 o o o o o o o 1 2 3 4 Körexempel 3: Mata in N: 13 Mata in antal bollar: 7 o o o o o o o 1 2 3 4 5 6 7 8 9 10 11 12 13

Uppgift 8 - Automatisk försäljare Skriv ett program som simulerar en amerikansk godisautomat (en sådan som syns här i bilden). Programmet skall med en prompt uppmana användaren till att utföra någon av följande: Mata in ett antal 'Q' som i "quarter" (ett 25- centsmynt). Maskinen lagrar hur stort belopp som användaren har petat i och ger en bekräftelse. Mata in Rad och Kolumn, t.ex. "B2" vilket innebär den andra produkten på B-raden ("Combos" i detta fall). Automaten skall kontrollera att det inmatade beloppet är tillräckligt stort och ge ett felmeddelande om det inte är det. Om det finns tillräckligt med pengar så skall den köpta varan lossas och växeln skall återlämnas. Programmet avslutas Mata in 'R' som i "return". Då skall köpet avbrytas och alla myten återlämnas. Programmet avslutas också. På filen STOCK.TXT finns varorna som automaten har i lager. Du får klistra in dessa data in i ditt program. Automaten har ett oändligt lager med godis, så det kan inte ta slut och den kan alltid ge exakt växel (se bild). WELCOME TO AUTOVENDOR 3000 RETURN (R), USER >> Q Q Q Q Q Bild: By Nenyedi at English Wikipedia (Transferred from en.wikipedia to Commons.) [Public domain], via Wikimedia Commons WELCOME TO AUTOVENDOR 3000 RETURN (R), USER >> Q Q Q AMOUNT DEPOSITED: $1.25 RETURN (R), USER >> B 3 DENIED! INSUFFICIENT DEPOSIT, DEPOSIT MORE COINS! RETURN (R), USER >> Q Q Q AMOUNT DEPOSITED: $2.00 RETURN (R), USER >> B 3 AMOUNT DEPOSITED: $0.75 RETURN (R), USER >> Q AMOUNT DEPOSITED: $1.00 RETURN (R), USER >> R COIN RETURN: $1.00 GOOD BYE, PLEASE COME AGAIN! ITEM DISPENSED: Grandma's waffles COIN RETURN: $0.40 GOOD BYE, PLEASE COME AGAIN!

Uppgift 9 - Sidnumrering Skriv ett program som låter användaren mata in ett antal sidnummer. Inmatningen avslutas med en nolla. Det är givet att numren alltid kommer i stigande ordning och att det inte förekommer dubbletter. Programmet skall sedan skriva ut detta med ett mer komprimerat format. Formatet skall vara på följande vis: 1. När det är minst två konsekutiva tal, skriv ut det första och det sista med ett bindestreck emellan. 2. Alla andra nummer skall separeras med komma. 3. Utskriften skall vara på en rad. Mata in sidnummer: 1 2 3 0 Resultat: 1 3 Mata in sidnummer: 1 2 3 5 0 Resultat: 1 3,5 Körexempel 3: Mata in sidnummer: 1 2 5 6 8 9 10 0 Resultat: 1 2,5 6,8 10 Körexempel 4: Mata in sidnummer: 1 0 Resultat: 1 Körexempel 5: Mata in sidnummer: 1 2 3 5 6 7 8 9 11 12 13 15 16 0 Resultat: 1 3,5 9,11 13,15 16 TIPS: Dela först upp problemet. Tänk dig att du löser en förenklad variant (t.ex. där man bara skall skriva ut separerat med komma, eller där det bara är konsekutiva tal). Utöka sedan denna variant till den fulla lösningen.

Uppgift 10 - Sillsallad AB Du har blivit anställd av Sillsallad AB, ett företag startat av superentrepenören Ulon Mesk. Företagets marknadsidé är att automatiskt framställa sillsallad. Till detta har företaget införskaffat ett rullande band, en långsmal korg, en bläckskrivare och roboten Slicemaster 3000. I nuläget är framställningsprocessen dock inte helt automatiserad, så det behövs en operatör som hjälper roboten i arbetet. Så här är framställningsprocessen tänkt att gå till: 2. Ingredienser landar i korgen (första hamnar längst ned). 4. Slicemaster 3000 (ditt program) skickar data till skrivaren. RULLBAND 1. Ingredienser (t.ex. rödbetor, potatisar, äpplen, gurka, sill) kommer på rullbandet och identifieras av operatören. 3. Slicemaster 3000 plockar upp en ingrediens i taget. Operatören anger hur den skall tärnas. Slicemaster 3000 tärnar ingrediensen och lägger tärningarna i plastförpackningen. 30% Potatis 25% Rödbeta 15% Sill 10% Gurka 20% Äpple 5. Skrivaren matar ut en etikett med en tabell med sillsalladens innehåll. Etiketten klistras sedan på plastförpackningens undersida. Då roboten skall tärna ingredienserna skall man ange hur många snitt som roboten skall göra. Först anger man snitten som skär ingrediensen i skivor, sedan snitten som skär dem i strimlor och till sist snitten som tärnar strimlorna. Om vi t.ex. skär en potatis i två skivor, strimlar dessa till sex strimlor och sedan skär dessa i arton tärningar skulle motsvarande sekvens av snitt bli: 1 2 2. Potatis (Från sidan) Två skivor (Från sidan) Sex långa strimlor (Ovanifrån) 18 tärningar. Observera att man kan be roboten att göra 0 snitt. T.ex. sekvensen 0 0 0 skulle innebära att man inte skär ingrediensen över huvud taget. Ett annat exempel är sekvensen 1 0 1 som ger 4 tärningar. Vi antar att operatören ser till att ingredienserna tärnas så att tärningarna blir jämnstora. Ditt program är alltså gränssnittet mellan operatören och resten av systemet. Programmet skall göra följande: Låta operatören mata in ingredienserna som kommer på det löpande bandet. Ingredienserna matas in på egna rader och kan bestå av flera ord. Nära alla ingredienser har kommit så skall operatören mata in "SLUT". Du kan utgå ifrån att det kommer minst en ingrediens men du vet inte hur många ingredienser som kommer. Låta operatören mata in (med tre heltal) hur ingredienserna skall tärnas. Ordningen på ingredienserna är det omvända från hur de kom på rullbandet. Beräkna och mata ut sillsalladens innehållsförteckning. Varje rad i tabellen anger hur mycket (hur många tärningar av totalen) av en ingrediens som salladen innehåller. Tabellen behöver inte sorteras, men varje ingrediens skall bara förekomma en gång.

Inkommande ingredienser (mata in på egna rader): Potatis Potatis Sillfilé Rödbeta Äpple Rödbeta Rödbeta Gurka SLUT Mata in snitt för "Gurka": 1 3 0 Mata in snitt för "Rödbeta": 3 3 3 Mata in snitt för "Rödbeta": 3 2 2 Mata in snitt för "Äpple": 3 4 3 Mata in snitt för "Rödbeta": 2 3 3 Mata in snitt för "Sillfilé": 0 3 6 Mata in snitt för "Potatis": 1 2 2 Mata in snitt för "Potatis": 1 3 2 Innehåll: 2% Gurka 48% Rödbeta 26% Äpple 9% Sillfilé 13% Potatis Inkommande ingredienser (mata in på egna rader): Sillfilé Rödbeta SLUT Mata in snitt för "Rödbeta": 1 1 1 Mata in snitt för "Sillfilé": 0 1 1 Innehåll: 66% Rödbeta 33% Sillfilé Eftersom procentandelarna är avrundade är det troligt att summan inte blir 100%, men Ulon hoppas på att ingen kommer upptäcka detta.