29.09.2013 Views

Programmering Grundkurs Laboration 0 - KTH

Programmering Grundkurs Laboration 0 - KTH

Programmering Grundkurs Laboration 0 - KTH

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Programmering</strong> <strong>Grundkurs</strong><br />

<strong>Laboration</strong> 0<br />

Till kursen <strong>Programmering</strong> <strong>Grundkurs</strong> hör fyra obligatoriska laborationer. Detta är <strong>Laboration</strong> 0<br />

given i period 1, HT 2010 vid <strong>KTH</strong> STH.<br />

Mål: Träna på dessa uppgifter, åtminstone hälften bör du klara av under veckan. OBS! Denna<br />

laboration kräver ingen redovisning, vilket betyder att redovisningen fredagen 10 september är<br />

inställd.<br />

Uppgift 1 – Bestämma π<br />

Med hjälp av formeln<br />

π = 4 4 4 4 4 4 4<br />

− + − + − +<br />

1 3 5 7 9 11 13 ···<br />

kan ett närmevärde till π bestämmas. Du ser säkert hur denna serie fortsätter i all oändlighet. Skriv<br />

ett program som frågar efter antalet termer och som bestämmer summan av dessa. Resultatet ska<br />

skriva ut med 6 decimaler. Ett körningsexempel:<br />

Antal termer ? 20<br />

PI blir då 3.091624<br />

Uppgift 2 – Olika trianglar<br />

Skriv ett program som tar emot uppgifter om längden hos sidorna hos en triangel och avgör vilken<br />

av följande typ av triangel det handlar om<br />

Typ<br />

Liksidig triangel<br />

Likbent triangel<br />

Annan triangel<br />

Ingen triangfel<br />

Om en triangel passar in i flera av typerna ovan skall den översta av dessa väljas. En liksidig triangel<br />

är förstås också en likbent triangel och även en annan triangel, men ska klassas som liksidig. Tre<br />

körningsexempel:<br />

Sida 1 ? 34 Sida 1 ? 8 Sida 1 ? 14<br />

Sida 2 ? 10 Sida 2 ? 8 Sida 2 ? 14<br />

Sida 3 ? 34 Sida 3 ? 8 Sida 3 ? 30<br />

Triangeln är likbent Triangeln är liksidig Ingen triangel<br />

Ordningen i vilken sidornas längder matas in är inte definierad. Alla indata är heltal.<br />

Håkan Strömberg 1 <strong>KTH</strong> STH


Uppgift 3 – Vinlotteriet<br />

Varje fredag eftermiddag, när kompisarna strålar samman, har de med sig en flaska vin, som de<br />

sätter in i ’potten’. När alla är på plats sker dragningen i veckans vinlotteri enligt följande:<br />

• n kompisar deltar i dragningen<br />

• Varje deltagare får ett startnummer från 0 till n−1<br />

• Varje deltagare skriver i hemlighet ned ett tresiffrigt tal på en lapp<br />

• Lapparna samlas in<br />

• Talen på lapparna summeras<br />

• Summan divideras med n<br />

• Resten, ett tal mellan 0 och n−1, vid denna division bestäms.<br />

• Den deltagare, vars startnummer överensstämmer med denna rest är vinnare i veckans vinlotteri.<br />

Skriv ett program som inleder med att fråga efter antalet deltagare och som sedan tar emot lika<br />

många tal och till sist presenterar startnumret på vinnaren. Programmet ska testa att talet verkligen<br />

är tresiffrigt, 100...999, och i övrigt följa dialogen i körningsexemplet nedan:<br />

Antal deltagare ? 4<br />

Startnummer 0 ger talet ? 387<br />

Startnummer 1 ger talet ? 1024<br />

*** Talet ska vara tresiffrigt<br />

Startnummer 1 ger talet ? 206<br />

Startnummer 2 ger talet ? 989<br />

Startnummer 3 ger talet ? 772<br />

Vinnare blev startnummer 2<br />

Uppgift 4 – Ramen<br />

Skriv ett program som skriver ut en ram med given höjd (h,3 ≤ h ≤ 20), längd (l,3 ≤ l ≤ 40),<br />

och bredd (b,b ≤ 10) med hjälp av asterisker (*) och mellanslag. Bredden b ska alltid väljas så att<br />

konstruktionen ger minst ett mellanslag i mitten. Ett körningsexempel:<br />

Höjd ? 9<br />

Längd ? 14<br />

Bredd ? 3<br />

**************<br />

**************<br />

**************<br />

*** ***<br />

*** ***<br />

*** ***<br />

**************<br />

**************<br />

**************<br />

Observera att du inte får använda funktionen gotoxy.<br />

Håkan Strömberg 2 <strong>KTH</strong> STH


Uppgift 5 – Löneutveckling<br />

Ett företag tillämpar följande lönesättning.<br />

• Det första året (år 1) får man a kr i månadslön.<br />

• De följande åren (år 2,3,4,...) får man en löneökning på 4% av föregående års månadslön,<br />

samt ett påslag på b kr. Som en engångshändelse ges ett högre påslag på b + c kr efter att<br />

personen varit anställd i tio hela år (år 11).<br />

Skriv ett program som beräknar månadslönen under ett givet år. Utskrift skall ske med två decimaler.<br />

Nedan ges tre körexempel<br />

Ingångslön (a)? 15000.0<br />

Årligt påslag (b)? 400.0<br />

Extra påslag år 11 (c)? 1000.0<br />

Vilket år? 1<br />

Månadslönen är 15000.00 kr<br />

Ingångslön (a)? 15000.0<br />

Årligt påslag (b)? 400.0<br />

Extra påslag år 11 (c)? 1000.0<br />

Vilket år? 4<br />

Månadslönen är 18121.60 kr<br />

Ingångslön (a)? 15000.0<br />

Årligt påslag (b)? 400.0<br />

Extra påslag år 11 (c)? 1000.0<br />

Vilket år? 13<br />

Månadslönen är 31107.40 kr<br />

Uppgift 6 – Plattläggning<br />

Figur 1:<br />

Plattläggare Squareman lägger bara kvadratiska arrangemang. Får han ett antal kvadratiska plattor så<br />

skapar han alltid först den största möjliga kvadraten. Med de plattor som återstår bygger han ånyo<br />

den största möjliga kvadraten och så vidare. En enda platta är i sig också en kvadratisk skapelse.<br />

Skriv ett program som tar emot uppgift om antalet plattor n och som bestämmer och skriver ut de<br />

formationer Squareman kommer att bilda. Ett körningsexempel:<br />

Hur många plattor ? 32<br />

Resultat: 25 4 1 1 1<br />

Den största kvadraten, som kan skapas i exemplet är 5×5 = 25. Återstår 7 plattor, med vars hjälp<br />

man kan skapa en 2×2 kvadrat. Resterande 3 plattor kan bara användas för att skapa lika många<br />

1×1 kvadrater.<br />

Håkan Strömberg 3 <strong>KTH</strong> STH

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!