Uppgift 1 ( Betyg 3 uppgift )

Relevanta dokument
kl Tentaupplägg

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 (vadå sortering?)

Uppgift 1 (Sorterade heltal som är OK)

Uppgift 1a (Aktiekurser utan poster)

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift )

kl Tentaupplägg

Uppgift 1 ( Betyg 3 uppgift )

TENTA: TDDD11 & TDDC68. Tillåtna hjälpmedel. Starta Emacs, terminal och tentakommunikationsfönster. Skicka in frågor och uppgifter

kl Tentaupplägg

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 (grundläggande konstruktioner)

kl Tentaupplägg

Uppgift 1 (Oläsliga krypterade meddelanden)

DUGGA Tentaupplägg

Tentaupplägg denna gång

Uppgift 1 ( Betyg 3 uppgift )

Uppgifter till praktiska tentan, del A. (7 / 27)

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

kl Tentaupplägg

kl Examination - Ada

Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson Plot och rekursion

Tentaupplägg. Betygsgränser: 1 uppg 19:00 Betyg 3 2 uppg 18:00 Betyg 4 2 uppg 16:30 Betyg 5 3 uppg 18:00 Betyg 5

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

DUGGA Tentaupplägg

Tentaupplägg denna gång

Uppgift 1 ( Betyg 3 uppgift )

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

Uppgift 1 ( Betyg 3 uppgift )

Tentaupplägg denna gång

kl Tentaupplägg

Tentaupplägg denna gång

TDIU Regler

Tentaupplägg denna gång

Uppgift 1 ( Betyg 3 uppgift )

TDIU Regler

TDIU Regler

UPPGIFT 1 EURO. Utdata: Två rader, som för indata ovan, ser ut som följer: Före resan: bank 1 Efter resan: bank 3

TDIU Regler

UPPGIFT 1 TVÅPOTENSER. UPPGIFT 2 HISSEN I LUSTIGA HUSET.

kl Tentaupplägg

ENKEL Programmering 3

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Att hämta organisationers publikationsposter ur DiVA

Tentaupplägg denna gång

Uttryck, satser och strömhantering

kl Tentaupplägg

HI1024 Programmering, grundkurs TEN

729G04 Programmering och diskret matematik TEN kl 8-12

729G04 Programmering och diskret matematik Tenta kl 14:00-18:00

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Tentaupplägg denna gång

kl Tentaupplägg. TIPS 4: Du kan kompilera din kod med följande kommandon g++11, w++11 (för mer varningar)

Uppgift 1 ( Betyg 3 uppgift )

TDDI TDDI22 Tentaregler

Uppgift 1 ( Betyg 3 uppgift )

UPPGIFT 1 TVETYDIGA DATUM

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH

TDP Regler

5 Grundläggande in- och utmatning

729G04 Programmering och diskret matematik

Gör så här för att rapportera:

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

Föreläsning 4: Poster

Programmeringsuppgifter 1

Planering Programmering grundkurs HI1024 HT TIDAA

Chapter 3: Using Classes and Objects

TDP Regler

Tentamen, EDAA10 Programmering i Java

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

729G04 Programmering och diskret matematik

TDP Regler

C++ Lektion Tecken och teckenfält

Guide till IceTest. Före tävling. Före, under och efter tävling

TDP Regler

Övningsuppgifter kapitel 8

Objektorienterad programmering D2

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

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

Kryptokorsordslösare Programmeringsmetodik DV (period 2) Inlämningsuppgift 1

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

Objektorienterad programmering i Java I

kl Tentaupplägg

kl Tentaupplägg

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Enkla datatyper minne

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

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

Uppgift 1 ( Betyg 3 uppgift )

Importera och använda en textdatabas i Excel

Transkript:

2009-03-12.kl.08-13 Uppgift 1 ( Betyg 3 uppgift ) Johannes Kepler är som alla vet känd för sina astrofysiska lagar. Lite mindre känt är kanske att han även gillade slumptal. Han skrev därför en slumptalsalgoritm. Oturligt nog var han den ende som förstod hur den fungerade. Han fick därför öknamnet Kneppler av sina (o)vänner. I filen knepp_rand.adb finns källkoden för hans ofattbara slumptalsgenerator. Denna är inte copyrightad så det är ok för oss att använda den i denna tentauppgift. Enligt den tyske astrofysikern Tycho Brahe så ger Knepplers slumptalsalgoritm resultatet 1 då man tar fram det första slumptalet, 2 om man tar det andra, 3 för det tredje o.s.v. Man skall skicka in vilket slumptal man är ute efter för att få fram ett av Knepplers slumptal. Du skall skriva ett program som summerar de första N Kneppleriska slumptalen. Användaren av ditt program skall mata in vilket N-värde som eftersöks. Krav: Du måste använda dig av slumptalsfunktionen när du beräknar summan. Körexempel 1: Mata in dimension: 1 Summan av de första 1 slumptalen blir då: 1 Körexempel 2: Mata in dimension: 17 Summan av de första 17 slumptalen blir då: 153 Tips: Om du inte förstår hur slumptalsfunktionen utför sitt jobb är det ok.

2009-03-12.kl.08-13 Uppgift 2 Du skall skriva ett program där användaren först matar in en textrad (maximalt 80 tecken lång) och sen skall denna skrivas ut med ett ord per rad enligt exemplet nedan. En rad består alltså av ett ord och varje bokstav är inringad enligt exemplet. Det är givet att användaren matar in ord med exakt ett blanktecken mellan varje ord och att första ordet börjar utan inledande blanktecken. Det är också givet att det inte finns blanktecken i slutet av textraden. De blanktecken som matas in skall försvinna i utskriften. Körexempel: Mata in en textrad: DET ÄR KUL ATT PLUGGA ADA +---+ +---+ +---+ / \ / \ / \ D E T \ / \ / \ / +---+ +---+ +---+ +---+ +---+ / \ / \ Ä R \ / \ / +---+ +---+ +---+ +---+ +---+ / \ / \ / \ K U L \ / \ / \ / +---+ +---+ +---+ +---+ +---+ +---+ / \ / \ / \ A T T \ / \ / \ / +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ / \ / \ / \ / \ / \ / \ P L U G G A \ / \ / \ / \ / \ / \ / +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ / \ / \ / \ A D A \ / \ / \ / +---+ +---+ +---+

2009-03-12.kl.08-13 Uppgift 3 Du skall skriva ett program som läser in en text (flera rader med maximalt 20 tecken per rad) och sen skriver ut den sorterad (radvis). Sorteringen skall göras efter antal tecken som matades in på raden. Den rad med flest tecken skall skrivas ut överst och den med färst tecken längst ned. Om två rader har lika många tecken skall de skrivas ut i bokstavordning. Vi bryr oss dock inte om att de svenska tecknen Å, Ä och Ö ligger fel. Vi kan anta att vi inte matar in dessa tecken. Vi kan dessutom anta att användaren alltid matar in små bokstäver (gemener) för att du inte skall få strul med detta när det gäller bokstavsordningen. Vi kan för enkelhets skull anta att raderna är maximalt 20 tecken långa och att det är maximalt 10 rader. Krav: Ditt program skall jämföra två rader i en egendefinierad < -operator. Körexempel: Mata in en text (avsluta med en tom rad): ett litet tips kan vara att man kan skapa en datatyp som inte ar en strang som motsvarar en rad. Detta underlattar jamforelsen senare. Efter sortering blir detta som följer: skapa en datatyp som ett litet tips kan inte ar en strang vara att man kan en rad. Detta som motsvarar jamforelsen underlattar senare.

2009-03-12.kl.08-13 Uppgift 4 I fysiken känner vi till i princip alla Keplers lagar. En av de mindre kända är den som kallas för Kepslers lås (hans kompisars gav honom smeknamnet Kepsler eftersom att han alltid bar keps). Kortnamnet på denna lag är KEPS LOCK. Hur fungerar egentligen KEPS LOCK kanske ni undrar? Jo, om man har en textfil som innehåller en text av något slag och man vill ha den omformaterad till att vissa delar (rader) av texten skall vara skriven i VERSALER och resten i gemener så lägger man in texten KEPS LOCK på en egen rad mellan de olika delarna. När man sen kör konverteringsprogrammet keps_lock skapas den text man vill utifrån en annan oformaterad text (d.v.s. en som har alla möjliga blandningar av gemener och versaler). Antag att filen KEPSLER.TXT existerar och ser ut på följande sätt: Johannes Kepler var kom till jorden den 27:e december 1571. Hans matematiska, astronomiska och mystiska bedrifter lever vidare genom dagens vetenskapliga kretsar. KEPS LOCK Kepler var en central figur i 1700-talets vetenskapliga revolution. Han konstruerade flera lagar. KEPS LOCK Kepler undervisade i matematik vid en skola i Graz och var dessutom assistent till astronomen Tycho Brahe. Resultatet efter programkörning skall hamna på filen RESULTAT.TXT och se ut enligt följande (givet ovanstående indata): johannes kepler var kom till jorden den 27:e december 1571. hans matematiska, astronomiska och mystiska bedrifter lever vidare genom dagens vetenskapliga kretsar. KEPLER VAR EN CENTRAL FIGUR I 1700-TALETS VETENSKAPLIGA REVOLUTION. HAN KONSTRUERADE FLERA LAGAR. kepler undervisade i matematik vid en skola i graz och var dessutom assistent till astronomen tycho brahe. Din uppgift är alltså att skriva programmet keps_lock som går igenom filen KEPSLER.TXT och ersätter alla bokstäver (A-Z) med gemener (små bokstäver) om KEPS LOCK är av och ersätter alla bokstäver (a-z) med VERSALER (stora bokstäver) om KEPS LOCK är på. Det är givet att KEPS LOCK är av från början och det kan finnas fler KEPS LOCK -rader. Det är givet att raderna är maximalt 80 tecken lång i filen. TIPS: För att omvandla versaler till gemener och vice versa krävs att man går via ordningsnumret som tecknet har. Detta kan man göra med attributen Character Pos (ger tecknets ordningsnummer) respektive Character Val (ger tecknet från ordningsnumret). Det är givet att teckensekvensen a.. z respektive A.. Z ligger i ordning.

2009-03-12.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Kepler var en tysk som kom att verka i Prag där han var assistent till Tycho Brahe. Han försökte förklara planeternas rörelser, genom hypotesen att en kraft från solen driver den runt i banor. Han kom fram till att planeternas rörelser varken är cirkelformiga eller likformiga. Kepler sysslade inte bara med astronomi utan han ägnade sig även åt optik, musikteori, geometri, kronologi och astrologi. Han ska ha försörjt sig på horoskop och sysslade mycket med mystisism, vilket man idag gärna tonar ned till fördel för de mer vetenskapliga delarna. Han blandade gärna vetenskaplighet med metafysiska visioner och talmystik. Han har gjort en kikare som är en typ av teleskop där både objektivet och okularet utgörs av positiva linser. I denna kikare såg han vid ett tillfälle något komma farande ner på jorden och han insåg att detta måste ha varit en meteorit. Din uppgift kommer därför att vara att skriva ett program som beräknar sannolikheten för att en meteorit slår ner. Programmet skall fråga användaren efter meteoritens ursprungsdiameter, d, (angivet i m) och dess hastighet, v, innan den kommer in i jordens atmosfär (givet i m/s). Enligt en matematiker (dock inte Kepler) gäller följande formel: sannolikheten = Min(1, g * Max(v 2 / d, d / v 2 )) där g = 9.82 (jordens gravitationskonstant) Körexempel: Mata in diameter : 80 Mata in hastighet: 450 Sannolikheten blev 100% P.S. Att det är Min av 1 och det andra beror på att det i vissa fall annars kan råka bli mer än 100% och det är ju orimligt. D.S.

2009-03-12.kl.14-19 Uppgift 2 Johannes Kepler var en vandrare av stora mått. Dock hade han lite ont i benen på slutet och det innebar att han behövde käpp. Hans vänner kallade honom därför Kaeppler (uttalas käppler ). Han gjorde diverse ritningar på hur hans käppar skulle se ut. Vi har funnit dessa ritningar och överfört dem till textfilformat. På filen KAEPP.TXT finns en av dessa ritningar och er uppgift är att ta reda på hur lång käppen är i cm. Varje rad i filen motsvarar en cm i verkligheten. Längden definieras som allt utom själva knoppen på käppen. De rader som räknas kommer att inledas med blanktecken och ett lodrätt streck samt avslutas med ett lodrätt streck. Ett exempel på hur en ritning skulle kunna se ut är: /\/ \/\ \/---\/ / / \ \ ( ( 0 ) ) \ \ / / /\---/\ / \ +-----+ +-----+ +-----+ +-----+ I detta exempel skall längden bli 7 cm. Den första raden som räknas är den som ser ut enligt: / \ Krav: Programmet skall anropa en funktion som heter Length som räknar ut längden. Det är ok att anta att längden på raderna i filen inte överstiger 20 tecken.

2009-03-12.kl.14-19 Uppgift 3 Alla barn vill ha namn på sina lådor när de är på skolan. Detta har fröknarna tagit fasta på och ber dig därför om ett program som visar hur en låda med elevens namn skulle kunna se ut. Som indata till programmet skall man ge barnets förnamn respektive efternamn. Programmet skall rita ut lådan och centrera både förnamn och efternamn så bra som möjligt. Se i exemplen nedan hur centreringen skall se ut. Det är givet att höjd och djup på lådorna är lika, men bredden beror på namnets namn. Namnen får maximalt vara 30 tecken långa. Krav: Båda namnen skall lagras i en gemensam post. Körexempel 1: Mata in elevens förnamn : Karl-Bertil Mata in elevens efternamn: Jonsson +-------------+ / / +-------------+ Karl-Bertil + Jonsson / +-------------+ Körexempel 2: Mata in elevens förnamn : H K Mata in elevens efternamn: Bergdahl +----------+ / / +----------+ H K + Bergdahl / +----------+ Körexempel 3: Mata in elevens förnamn : Calle Magnus Erik Jan Gusten Mata in elevens efternamn: Lejonhuvud +------------------------------+ / / +------------------------------+ Calle Magnus Erik Jan Gusten + Lejonhuvud / +------------------------------+

2009-03-12.kl.14-19 Uppgift 4 Du skall skriva ett program som läser in en text (flera rader med maximalt 20 tecken per rad) och sen skriver ut den i omvänd ordning (radvis). Utskriften skall dessutom vara inramad enligt exemplen nedan. Den längsta raden skall avgöra hur bred figuren blir. Det är ok att göra en förenkling och sätta en begränsning på 20 rader som maximalt antal rader i texten. Inläsningen skall avslutas när man matar in en tom rad (endast ett ENTER på raden alltså). Inläsningen skall ske i ett rekursivt underprogram (det är tillåtet att göra utskriften i samma underprogram om man vill det). Körexempel 1: Mata in en text (avsluta med tom rad): november 1852 1815 och dog den 27 den 10:e december of Lovelace, föddes Ada Byron, Countess +-----------------+ / \ Ada Byron, Countess of Lovelace, föddes den 10:e december 1815 och dog den 27 november 1852 \ / +-----------------+ Körexempel 2: Mata in en text (avsluta med tom rad): vetenskapskvinna matematiker och denne begåvade Ada döptes efter Programspråket +--------------+ / \ Programspråket Ada döptes efter denne begåvade matematiker och vetenskapskvinna \ / +--------------+

2009-03-13.kl.08-13 Uppgift 1 ( Betyg 3 uppgift ) Som alla vet gillade Johannes Kepler att bära keps. Han kallades därför av sina vänner Kepsler. Din uppgift är att rita ut en av hans otaliga kepsar. För att tillfredställa alla personers huvudstorlekar skall du skriva ett program som låter användaren mata in vilken storlek han/hon vill ha. Storleken anges som ni alla vet i cm (omkretsen på huvudet). Programmet skall inte vara begränsat till storlekar mellan 53 och 62 cm utan det skall klara alla storlekar från 11 cm. Körexempel 1: Mata in din huvudstorlek: 11 +-------+ / / / / / / / / + +-------+ / / ( K ) / / +-------+ / / / / / / +-------+ Körexempel 2: Mata in din huvudstorlek: 53 +-------------------------------------------------+ / / / / / / / / + +-------------------------------------------------+ / / ( K ) / / +-------------------------------------------------+ / / / / / / +-------------------------------------------------+ P.S. Kepsler var före sin tid vad det gäller kubism (ca 300 år). Detta gör att Picasso knyckte idén från Kepsler. Eller hur? D.S.

2009-03-13.kl.08-13 Uppgift 2 Johannes Kepler var en vandrare av stora mått. Dock hade han lite ont i benen på slutet och det innebar att han behövde käpp. Hans vänner kallade honom därför Kaeppler (uttalas käppler ). Han gjorde diverse ritningar på hur hans käppar skulle se ut. Vi har funnit dessa ritningar och överfört dem till textfilformat. På filen KAEPP.TXT finns en av dessa ritningar och er uppgift är att ta reda på hur lång käppen är i cm samt hur många segment den består av. Varje rad i filen motsvarar en cm i verkligheten. Längden definieras som allt utom själva knoppen på käppen samt markeringarna för segmentsslut. De rader som räknas till längden av käppen kommer att inledas med blanktecken och ett lodrätt streck samt avslutas med ett lodrätt streck. De rader som markerar segmentsslut kommer att inledas med blanktecken och ett plustecken samt avslutas med ett plustecken. Ett exempel på hur en ritning skulle kunna se ut är: /\/ \/\ \/---\/ / / \ \ ( ( 0 ) ) \ \ / / /\---/\ / \ +-----+ +-----+ +-----+ +-----+ I detta exempel skall längden bli 7 cm. Den första raden som räknas är den som ser ut enligt: / \ Antalet segment är 4 som ni ser. Krav: Programmet skall anropa en procedur som heter Length_And_Segments som räknar ut längden och antalet segment. Denna procedur skall dessutom vara rekursiv. Det är ok att anta att längden på raderna i filen inte överstiger 20 tecken.

2009-03-13.kl.08-13 Uppgift 3 Det finns en given fil som heter generate_person_numbers.adb. Denna fil innehåller början av ett program som genererar legala personnummer givet att man matar in ett datum. Din uppgift är att se till att slutföra uppdraget att skapa detta program. Användaren skall mata in ett datum på formatet ÅÅMMDD, där ÅÅ = år, MM = månad och DD = dag. Därefter skall programmet skriva ut alla legala personnummer som finns för just detta datum. Programmet skall se till att alla personnummer är sorterade så att kontrollsiffrorna blir i nummerordning. Ett körexempel: Mata in år, månad, dag på formatet ÅÅMMDD: 121212 Följande personnummer är giltiga för det datumet: 121212-0008 121212-0016 121212-0024 121212-0032 121212-0040 121212-0057 121212-0065 121212-0073 121212-0081 121212-0099... 121212-9900 121212-9918 121212-9926 121212-9934 121212-9942 121212-9959 121212-9967 121212-9975 121212-9983 121212-9991 Givetvis skall alla legala personnummer skrivas ut (vi har bara skrivit ut början och slutet av listan i detta exempel). Det finns 1000 legala personnummer per datum.

2009-03-13.kl.08-13 Uppgift 4 I dessa kärva tider är det bra att finna rätt person att dela lyckan med. Din uppgift är att skriva ett program som kontrollerar vilken sannolikhet två personer har att lyckas finna kärleken. Körexempel: Mata in ditt namn : Pelle Svanslös Mata in din "kärastes" namn: Maja Gräddnos Pelle Svanslös & Maja Gräddnos har 97% chans att det går bra. För att få fram procentsatsen skall du följa denna algoritm: 1. Omvandla varje tecken i strängen till dess ASCII-kod (ordningsnumret för tecknet). Detta kan göras med Character Pos. Strängen @A ger då 64 och 65. 2. Gör om alla ASCII-värden till motsvarande sträng (tag bort det inledande blanktecknet). Detta ger med ovanstående 64 resp. 65. 3. Sätt ihop alla dessa strängar igen till en lång sträng. Ovanstående ger då 6465. Ovanstående görs för namnen var för sig vilket ger att du har två nya strängar att arbeta med. 4. Slå ihop de nya strängarna (det finns två kombinationer av detta) och skicka den ihopslagna strängen till en funktion som beräknar sannolikheten (det blir alltså två olika anrop eftersom det finns två kombinationer). Om man har 93 och 98 ger det 9398 resp. 9893. Funktionen som beräknar sannolikheten skall gå igenom strängen och addera intilliggande siffror (additionen skall dock ge endast ensiffrigt svar enligt nedan, man tar siffersumman om det är tvåsiffrigt tal) tills det endast återstår maximalt två siffror enligt följande exempel: 9398 9+3=12=>1+2= 3, 3+9=12=>1+2= 3, 9+8=17=>1+7= 8 338 3+3= 6, 3+8=11=>1+1= 2 62 Slutsatsen är att detta ger 62% sannolikhet. Observera att vi förutsätter att funktionen returnerar en sträng. Den slutgiltiga sannolikheten skall dock vara det största värdet av de två kombinationernas sannolikheter. Givetvis är det så att man kan mata in vilka namn som helst (det är ju bara två strängar som är maximalt 100 tecken långa). Detta gör att man kan testa andra saker som kanske passar bra ihop eller inte. Här är en lista på några av testen vi gjort. Adam, Eva 99% Fantomen, Diana 93% Jul, Tomte 98% Jul, Snö 19% Ada, Studenter 91% Lisp, Studenter 49%

2009-03-16.kl.08-13 Uppgift 1 ( Betyg 3 uppgift ) På företaget Försäljning AB har de en policy som säger att alla som köper något och betalar med deras kort får lite rabatt. När man stoppar in pengar på kortet måste detta göras med 500 kronor. När man handlar på kortet dras det så mycket som varan kostar (förstås). Antag att man har laddat kortet med 500 kronor och därefter varje dag köper en vara för 53 kronor. Hur många dagar tar det då innan man kommer till det exakta saldot noll kronor på kundkortet. Givetvis måste man ladda in nya pengar om det inte går att dra minst 53 kronor vid ett köp. Det är inte givet att det skall vara 53 kronor vid varje inköp utan det kan istället vara t.ex. 49 kronor. Dock är det givet att man alltid köper varor för samma belopp varje dag. Körexempel 1: Mata in vilket belopp som det handlas för per dag: 53 Det tar 500 dagar innan det blir exakt noll kronor i saldo Körexempel 2: Mata in vilket belopp som det handlas för per dag: 135 Det tar 100 dagar innan det blir exakt noll kronor i saldo Körexempel 3: Mata in vilket belopp som det handlas för per dag: 18 Det tar 250 dagar innan det blir exakt noll kronor i saldo

2009-03-16.kl.08-13 Uppgift 2 Skriv ett program som läser in 3 stycken heltalstripplar (ger alltså 3 x 3 heltal totalt) från tangentbordet och lagrar dessa i ett fält. Skriv ut talen så som de är inlästa efter det att hela fältet är fyllt. Sortera fältet så att den minsta trippeln ligger överst. Skriv till sist ut fältet igen. Du skall för att jämföra två trippler skapa en operator < som returnerar True eller False. Som du redan vet så finns det inbyggda operatorer <, >, m.fl. som jämför vektorer, men dessa stämmer ej överens med vår definition av vad som tolkas som mindre. Jämförelsen skall göras på så sätt att man jämför de tal som man får om man slår ihop trippeln till ett tal enligt följande: 1, 2, 3 => 123 12, 34, 56 => 123456 1, 234, 567 => 1234567 Om det ihopslagna talet av den första trippeln är mindre än det ihopslagna talet av den andra trippeln skall < returnera True, annras False. Krav: Du får inte lagra det ihopslagna talet av en trippel i ditt fält. Detta skall operatorn mindre än klara av själv att fixa. Det är dock givet att talen som matas in aldrig är större än 999. Körexempel 1: Mata in en trippel: 9 8 9 Mata in en trippel: 5 4 1 Mata in en trippel: 1 2 1 Ursprungsfältet: 9 8 9 5 4 1 1 2 1 Efter sortering: 1 2 1 5 4 1 9 8 9 Körexempel 2: Mata in en trippel: 123 4 57 Mata in en trippel: 12 345 6 Mata in en trippel: 123 45 67 Ursprungsfältet: 123 4 57 12 345 6 123 45 67 Efter sortering: 12 345 6 123 4 57 123 45 67

2009-03-16.kl.08-13 Uppgift 3 En av assistenterna har kommit på ett lagringsformat (i ren text) som skall vara trevligt för att lagra bilder. Han kallar detta format för Ansi Picture Adaptation (som förkortas apa ). Då formatet är ganska utrymmeskrävande har examinatorn kommit på ett sätt att nästan halvera storleken på filer (i många fall) genom att kryptera innehållet. Detta nya format lagras också på en helt normal textfil. Det är givet att det nya formatet, vi kallar det just nu för kryptformatet, innehåller rader med text som alltid innehåller läsbara tecken. För dekryptering av kryptformatet bör man veta: 1) En rad består av ett antal teckenkombinationer. 2) En teckenkombination är en av följande två varianter: a) ett G följt av ett heltal (som motsvarar ett antal som vi kan kalla N) följt av ett H. b) två tecken. 3) Varje rad i kryptformatet motsvarar en rad i apa-formatet. 4) Varje teckenkombination av typen 2)a) skall ersättas med N stycken bindestreck, -. Alla andra teckenkombinationer skall bara kopieras som de är. Din uppgift är att dekryptera innehållet i filen ADA.CRYPT så att det hamnar i filen ada.apa. Antag att filen ADA.CRYPT ser ut på följande sätt: ABCDEFG10H1234 1234G2HABCD Efter dekryptering skall filen ada.apa se ut på följande sätt: ABCDEF----------1234 1234--ABCD Tips: Till din hjälp finns ett program som heter show_apa_file i mappen given_files. Detta program ritar ut bilden ada.apa i ett annat terminalfönster. Du kan köra detta program genom att skriva: given_files/show_apa_file För att avsluta visningen av bilden skall man endast trycka på ENTER i bildvisningsfönstret!

2009-03-16.kl.08-13 Uppgift 4 Du skall skriva ett program åt Posten så att de kan få till automatiska brevutskrifter (ditt program gör en simulering av detta). Du skall i ditt program ha en procedur som heter Get där inläsning av namn m.m. skall göras (i denna procedur får du i detta fall ha utskrifter som talar om vilket data som skall matas in. Dessutom skall du ha en procedur som heter Put som skriver ut själva brevet enligt exemplet nedan. Ytterligare krav på programmet är att data som namn m.m. skall lagras i en post. Endast denna post får skickas som parameter mellan huvudprogrammet och Get/Put. Det är givet att brevet alltid är lika stort, men det får inte ritas ut enbart med Put_Line. Du skall på något sätt göra det mer programtekniskt (t.ex. loopar, underprogram). Körexempel: Mata in namn : Anders Andersson Mata in adress: Andersgatan 34 A Mata in stad : Anderstorp Mata in land : Sverige Vy bakifrån / underifrån / framifrån: +---------------------------------------------+ \ / \ / \ / \ / /\ /\ / +---------------------------------+ \ / \ / \ +---------------------------------------------+ +----------------------------------------====-+ +---------------------------------------------+ #### #### #### Anders Andersson Andersgatan 34 A Anderstorp Sverige +---------------------------------------------+

2009-03-24.kl.17.30-18.30 Uppgift 1 (Lätt uppgift => betyg + 1) Du skall skriva ett program som läser in ett heltal, N, och sen aropar en funktion som beräknar följande: N FN ( ) = ( I I 2+ I 2) I = 0 Det som returneras av funktionen skall skrivas ut på skärmen. Körexempel 1: Mata in N: 0 Resultat : 0 Körexempel 2: Mata in N: 1 Resultat : 4 Körexempel 3: Mata in N: 2 Resultat : 16 Körexempel 4: Mata in N: 3 Resultat : 40 Körexempel 5: Mata in N: 5 Resultat : 140

2009-03-24.kl.17.30-18.30 Uppgift 2 (Lite svårare uppgift => betyg + 2) Din uppgift är att skriva ett program som skapar ett annat program i filen halv_enkel.adb. Ditt program skall heta extra och ligga i filen extra.adb. Ditt program skall inte läsa data från någon annan fil utan allt som skapas skall skapas inuti programmet extra. För att du skall se om det skapade programmet halv_enkel fungerar måste du givetvis kompilera detta när det skapats och efter det provköra detta. ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- Ovanstående är det program du skall skriva. Nedan finns bara beskrivningen av vad det skapade programmet skall göra. Du skall alltså endast skicka in lösning på det ovanstående. ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- Programmet som skapas skall heta halv_enkel och det skall läsa in ett heltal, N, och sen anropar en funktion som beräknar följande: N FN ( ) = ( I I 2+ I 2) I = 0 Det som returneras av funktionen skall skrivas ut på skärmen. Ett krav är att funktionen f(n) skall vara rekursiv. Körexempel 1: Mata in N: 0 Resultat : 0 Körexempel 2: Mata in N: 1 Resultat : 4 Körexempel 3: Mata in N: 2 Resultat : 16 Körexempel 4: Mata in N: 3 Resultat : 40 Körexempel 5: Mata in N: 5 Resultat : 140