Programmering Grundkurs Laboration 0 - KTH
Programmering Grundkurs Laboration 0 - KTH
Programmering Grundkurs Laboration 0 - KTH
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