Uppgift 1a (Aktiekurser utan poster)



Relevanta dokument
kl Tentaupplägg

kl Tentaupplägg

Uppgift 1 (Sorterade heltal som är OK)

kl Tentaupplägg

Uppgift 1 (vadå sortering?)

Uppgift 1 (grundläggande konstruktioner)

kl Tentaupplägg

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

Uppgift 1 ( Betyg 3 uppgift )

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

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift )

kl Tentaupplägg

DUGGA Tentaupplägg

DUGGA Tentaupplägg

Uppgift 1 (Oläsliga krypterade meddelanden)

kl Tentaupplägg

Uppgift 1 ( Betyg 3 uppgift )

kl Tentaupplägg

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

kl Examination - Ada

kl Tentaupplägg

kl Tentaupplägg

Uppgift 1 ( Betyg 3 uppgift )

kl Tentaupplägg

Tentaupplägg denna gång

Tentaupplägg denna gång

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

Föreläsning 4: Poster

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

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

Uppgift 1 ( Betyg 3 uppgift )

kl Tentaupplägg

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

Tentaupplägg denna gång

Uppgift 1 ( Betyg 3 uppgift )

Robotarm och algebra

5 Grundläggande in- och utmatning

Tentaupplägg denna gång

kl Tentaupplägg

Uttryck, satser och strömhantering

kl Tentaupplägg

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

TDIU Regler

Tentaupplägg denna gång

Tentaupplägg denna gång

Programmeringsolympiaden 2012 Kvalificering

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

kl Tentaupplägg

DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion

TUTORIAL: KLASSER & OBJEKT

Uppgift 1 ( Betyg 3 uppgift )

Statistik över heltal

kl Tentaupplägg

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

Föreläsning 6: Introduktion av listor

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

kl Tentaupplägg

kl Tentaupplägg

Import av utlandsresultat

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

När man vill definiera en matris i MATLAB kan man skriva på flera olika sätt.

Objektorienterad programmering D2

TDIU Regler

HI1024 Programmering, grundkurs TEN

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

Mathematica. Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från. , x

Funktioner, Procedurer och Parametrar. Funktioner, Procedurer och Parametrar... Funktioner, Procedurer och Parametrar procedurspecifikation

TDDI TDDI22 Tentaregler

UPPGIFT 1 TVETYDIGA DATUM

Handhavande manual problemhantering

kl Tentaupplägg

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

Övningsuppgift 2 Datalogi I 2I1027/2I1035/2I1046

kl Tentaupplägg

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 1 V75 FIGUR 1.

Uppgift 1 ( Betyg 3 uppgift )

TDIU01 - Programmering i C++, grundkurs

Värmedistribution i plåt

Uppgift 1 ( Betyg 3 uppgift )

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Kursmaterial för laborationer i

HI1024 Programmering, grundkurs TEN

kl Tentaupplägg

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

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Lab 0: Mycket grundläggande in- och utmatning

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Excel-guide. Introduktion

TDP Regler

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

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

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Inledning till OpenOffice Calculator Datorlära 2 FK2005

Transkript:

Uppgift 1a (Aktiekurser utan poster) Vi har lite olika upplägg i de kurser vi håller och i vissa kurser finns det med något som vi kallar "poster" (eng. "record"). I andra har vi inte med detta. Vi har därför gjort två alternativ på första uppgiften där ni får välja den som ni känner att ni vill lösa. I denna uppgift behövs INTE "poster" ("record")! OBS! Denna uppgift kan inte kombineras med Uppgift 1b. Skriv ett program som läser in information om två aktier och lagrar dessa i lämpliga variabler. Programmet skall därefter skriva ut informationen för den aktie som är billigast i det format som ses i exemplet nedan. Körexempel: Mata in första aktiepostens data: Aktiens namn : ERICa Nuvarande kurs: 78.00 Maxkurs idag : 79.10 Minkurs idag : 78.00 Mata in andra aktiepostens data: Aktiens namn : ABB Nuvarande kurs: 128.55 Maxkurs idag : 132.00 Minkurs idag : 128.40 Den billigaste aktien är ERICa och den kostar just nu 78.00 KRAV 1: Inläsningen av EN akties data skall ske i en procedur som heter Get som endast har de parametrar som motsvarar EN akties inmatade data. KRAV 2: Utskriften av EN aktie skall ske i en procedur som heter Put och som endast har de parametrar som motsvarar data för EN aktie. KRAV 3: Jämförelsen av TVÅ aktier skall ske i en funktion som tar emot två uppsättningar av aktiedata och returnerar ett sanningsvärde enligt normal praxis (Boolean). KRAV 4: Skriv ett huvudprogram som utför det som står i uppgiften som anropar de underprogram som är skapade för att lösa delproblemen som finns.

Uppgift 1b (Aktiekurser med poster) Vi har lite olika upplägg i de kurser vi håller och i vissa kurser finns det med något som vi kallar "poster" (eng. "record"). I andra har vi inte med detta. Vi har därför gjort två alternativ på första uppgiften där ni får välja den som ni känner att ni vill lösa. I denna uppgift krävs "poster" ("record")! OBS! Denna uppgift kan inte kombineras med Uppgift 1a. Skriv ett program som läser in information om två aktier och lagrar dessa i varsin post. Programmet skall därefter skriva ut informationen för den aktie som är billigast i det format som ses i exemplet nedan. Körexempel: Mata in första aktiepostens data: Aktiens namn : ERICa Nuvarande kurs: 78.00 Maxkurs idag : 79.10 Minkurs idag : 78.00 Mata in andra aktiepostens data: Aktiens namn : ABB Nuvarande kurs: 128.55 Maxkurs idag : 132.00 Minkurs idag : 128.40 Den billigaste aktien är ERICa och den kostar just nu 78.00 KRAV 1: Inläsningen av EN akties data skall ske i en funktion som heter Read som inte har någon parameter. Den skall dock returnera hela posten som aktieinformationen är lagrad i. KRAV 2: Utskriften av EN aktie skall ske i en procedur som heter Write och som endast har EN parameter (posten med aktiedatat). KRAV 3: Jämförelsen av TVÅ aktier skall ske i en operator "<" som tar emot två aktieposter och returnerar ett sanningsvärde enligt normal praxis (Boolean). KRAV 4: Skriv ett huvudprogram som utför det som står i uppgiften som anropar de underprogram som är skapade för att lösa delproblemen som finns.

Uppgift 2 (Split på aktiekursdata) Ibland råkar man ut för att data inte riktigt blir separerade som de skall. Detta ställer till det för den som skall plocka fram datat förstås. Ett exempel på detta finns på kurssidorna för aktier på SVT:s text-tv. Om man tittar på visa aktier så ser man att informationen om aktuell kurs samt dagens max- respektive minkurs inte alltid är separerade med blanktecken. Det kan t.ex. stå "123.45 123.55124.35" (de två sista talen sitter ihop så att man inte "vet" var gränsen går). Vi detekterar detta ändå i vår hjärna, men hur skulle man göra för att lösa problemet i ett program? I mappen given_files finns ett huvudprogram som är färdigt med inmatnings- och utskriftsdel, men det saknar ett underprogram som skall dela upp innehållet i en sträng i tre flyttal. Din uppgift är att kopiera det huvudprogrammet och sen skapa underprogrammet så att hela programmet går att kompilera och fungera som det skall. De strängar som kommer att matas in till programmet kommer ALLTID att vara korrekta och innehålla endast siffror och punkter. Det är också givet att dessa siffror och punkter bildar exakt 3 flyttal som i strängen har exakt 1 eller 2 decimaler (det kan t.ex. vara en decimal på det första flyttalet och 2 på de två andra, men det kan lika gärna vara två decimaler på alla tre talen). Det är givetvis så att det alltid är MINST en siffra i heltalsdelen av talen. Det är också givet att det första talet motsvarar den aktuella kursen en viss aktie har. Det andra talet motsvarar maxkursen och det tredje talet minkursen för dagen. Det är givetvis så att den aktuella kursen måste ligga i intervallet [min, max] annars vore indatat felaktigt och det garanterar vi att det inte är. Det sista som ställs som krav är att differensen mellan max och min skall vara så litet som möjligt. Om det råkar finnas två möjliga lika små intervall är det ok att välja vilket du vill av dessa. Här följer två exempel på indata och hur man kan tänka sig att dela upp detta i de tre flyttalen samt det rätta alternativet markerat. Exempel 1 (OBS! detta är inte ett körexempel): Strängen "123.5123.52123.44" kan uppdelas i följande tal: 123.5 123.5 2123.44 123.5 123.52 123.44 <-- Minst intervall => detta är rätt. 123.51 23.5 2123.44 123.51 23.52 123.44 Exempel 2 (OBS! detta är inte ett körexempel): Strängen "123.52123.51123.44" kan uppdelas i följande tal: 123.5 2123.5 1123.44 <-- FEL! För högt min 123.5 2123.51 123.44 Övriga felaktiga => Detta är rätt. 123.52 123.5 1123.44 <-- FEL! För lågt max 123.52 123.51 123.44 <-- FEL! För lågt max TIPS: Observera den inbördes ordningen på "max" och "min" i strängen. KRAV: Du får INTE ändra huvudprogrammet. Bara lägga till underprogrammet.

Uppgift 3 (Spara bara kursdata för när det händer något) Det finns de som sitter och tittar på aktiekurser dagarna i ända. Ett sätt att göra detta är att se på SVT:s text-tv-sidor. Dessa uppdateras var femte minut under hela den tid börsen är öppen. Någon har gjort ett program som "tankat" ner innehållet från dessa sidor och plockat fram den information som finns för aktien med kortnamnet "ERICa". Dessa data återfinner du i filen given_files/erica.txt (OBS! litet a ). Tyvärr är det så att man får en fruktansvärd massa rader med data i filen (du kan titta på filen i Emacs för att se format på rader och vad som finns där). Dessa rader innehåller aktiens kortnamn och diverse tidstämplar (två olika som antagligen betyder något) samt information om kursen vid en aktuell tidpunkt på dagen. Vi är dock i detta fall bara intresserade av kursinformationen. När man detaljstuderar kursinformationen ser man att den varierar lite mellan raderna, men vissa direkt på varandra följande rader kan ibland ha exakt samma kursinformationsdel. Detta gör att vi alltså lagrar onödigt mycket data i filen. Din uppgift är att skriva ett program som skriver ut de rader (på skärmen) som har INTE har samma kursinformation som den föregående raden. Antag att innehållet (som kan vara väldigt många rader) i filen ERICa.TXT ser ut på följande sätt (inte rätt format, men förhoppningsvis förstår du principen):... "+0.6 74.7 75.2 " " 75 9781" "" " 75 75.5 74.6"... "+0.5 75.4 75.8 " " 75.5 230" "" " 75.5 75.5 75.3"... "+0.8 75.4 75.7 " " 75.8 2830" "" " 75.8 75.8 75.3" Resultatet på skärmen skall då bli följande:... "+0.6 74.7 75.2 " " 75 9781" "" " 75 75.5 74.6"... "+0.8 75.4 75.7 " " 75.8 2830" "" " 75.8 75.8 75.3" OBS! Hela raderna (som finns på filen) skall givetvis skrivas ut skärmen (punkterna innehåller det som finns i början av raden på filen), men de rader med samma kursinformation som raden innan skall alltså vara borttagna. OBS! Det är inte givet att raderna är lika långa i filen, men informationen innan kursinformationen är alltid lika lång. Det kan du utgå ifrån.

Uppgift 4 (Går kursen upp, ner eller rakt fram ) Nu har vi varit på börsen ett bra tag (i tre uppgifter) och kanske har dina aktier seglat upp, kanske inte. Oavsett vilken kurs dina aktier har just nu skall vi göra en kursändring eller rättare sagt många kursändringar och ge oss ut på havet. I denna uppgift skall du räkna ut till vilka koordinater man kan komma om man är ute och seglar. Man får välja mellan tre kurser i varje steg man tar i sin seglats och dessa är nordost (snett uppåt i figuren nedan), ost (rakt åt höger) och sydost (snett nedåt). Vi antar att man börjar på koordinat (0, 0) och första steget är att man skall förflytta sig 1 enhet åt höger i figuren. Nästa steg är att man förflyttar sig 2 enheter, tredje steget 3 enheter, o.s.v. I varje steg gäller att det skall vara EN kurs på båten genom hela det steget. Användaren skall ange hur många steg man skall genomföra i sin segling. Antag att användaren matat in att det skall vara 4 steg. Detta ger att man kan komma till ett antal olika koordinater i slutänden beroende på val av kurs i respektive steg. Tre exempel på val i samma figur ser vi här (punkterna är till för att markera gränserna mellan stegen, inget annat). Alternativ 1: (0, 0)._.. _.. (10, 0).. _.. (10, 1) Alternativ 2: (0, 0)./.. (10, 2). / Alternativ 3: (0, 0)./ \ / \./ Körexempel 1: Mata in antal steg i seglatsen så får du koordinatlistan: 1 (1, 1) (1, 0) (1, -1) Körexempel 2: Mata in antal steg i seglatsen så får du koordinatlistan: 2 (3, 3) (3, 1) (3, -1) (3, 2) (3, 0) (3, -2) (3, 1) (3, -1) (3, -3) För att lösa detta skall du göra ett rekursivt underprogram som tar emot den koordinat man för tillfället befinner sig på, vilken kurs du vill segla därifrån och hur långt i den kursen (vilket steg som skall utföras) samt antal steg som totalt sett skall utföras. När man utfört rätt antal steg skriver underprogrammet direkt ut den koordinat man kommit till på en egen rad på skärmen (enligt formatet ovan). Från huvudprogrammet skickar man förstås koordinaten (0, 0) den riktning man vill ta sig i första steget samt en 1:a och det antal steg som användaren matade in. OBS! Det spelar inte någon roll i vilken ordning utskrifterna sker (kan bli lite olika beroende på hur man löser problemet), men ALLA koordinater måste finnas med. Även dubletterna.