2008-06-04.kl.08-13 Uppgift 1 (”Betyg 3 uppgift”) Du skall skriva ett program som ritar ut en almanacka för en given månad. Indata till programmet (matas in från tangentbordet) är hur många dagar det är i månaden och vilken dag första dagen i månaden är. Dagen matas in som ett heltal (1 = mån, 2 = tis, ..., 7 = sön). Krav: Almanackan skall alltid vara utskriven med måndag som första dag. Exempel 1 på programkörning: Mata in antal dagar i månaden : 31 Mata in första dagen i månaden: 3 Mån Tis Ons Tor Fre Lör Sön --------------------------------1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Exempel 2 på programkörning: Mata in antal dagar i månaden : 28 Mata in första dagen i månaden: 1 Mån Tis Ons Tor Fre Lör Sön --------------------------------1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Exempel 3 på programkörning: Mata in antal dagar i månaden : 30 Mata in första dagen i månaden: 7 Mån Tis Ons Tor Fre Lör Sön --------------------------------1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 2008-06-04.kl.08-13 Uppgift 2 Till denna uppgift finns det tre givna filer. Den första innehåller ett antal substantiv och heter SUBSTANTIV.TXT. Den andra heter VERB.TXT och innehåller verb. Den tredje filen heter MENINGAR.TXT och innehåller ett antal rader med försök till enkla meningar. Din uppgift är att skriva ett program som läser igenom filen med meningarna och plockar ut de rader som innehåller meningar uppbyggda enligt formen ”substantiv verb”. Filerna innehåller endast ord skrivna som gemener och de ord som inte finns med i de två filerna som innehåller verb och substantiv räknas som felaktiga. Det kan finnas meningar som alltså är korrekta ur uppbyggnaden ”substantiv verb”, men ändå inte räknas som korrekta då orden i dessa meningar inte kan hittas i de två andra filerna. I de två hjälpfilerna (VERB.TXT och SUBSTANTIV.TXT) är orden maximalt 20 tecken långa och det finns inga blanktecken någonstans. I meningsfilen är orden alltid separerade med exakt ett blanktecken. Det är alltid två ord per rad i denna fil. När ditt program körts skall alla de rader (själva innehållet i raderna) som uppfyllde kraven ovan vara utskrivna på skärmen. Exempel på hur utskriften skulle kunna vara givet någon variant av filinnehåll (OBS! I de filer du har tillgängliga finns det säkert helt andra meningar/ord att tillgå. Kolla därför i dessa filer): huset brinner bilen tutar motorbåten far far far mor ror 2008-06-04.kl.08-13 Uppgift 3 I matematiken vill man ofta kunna beräkna determinanten av en matris (alltid kvadratiska matriser). Det finns i denna uppgift givet ett huvudprogram som läser in en matris från tangentbordet och lagrar detta i en datastruktur som representerar matrisen (i detta fall en vektor av ”godtycklig” längd). Din uppgift är att lägga till två funktioner. 1) En funktion som beräknar determinanten av matrisen. 2) En hjälpfunktion till den förra som plockar ut en delmatris ur en matris. Antag att man har en matris av dimension 3 (d.v.s. en 3x3-matris) enligt följande: M 3 4 2 5 1 6 7 9 8 Lagras i programmet som 3 4 2 5 1 6 7 9 8 När man skall beräkna determinanten behöver man plocka ut ett antal delmatriser ur den matris man har. Detta görs genom att plocka bort första raden och en av kolumnerna (alla varianter av detta skall plockas ut). I en 3x3-matris blir det alltså tre delmatriser som skall plockas ut. Dessa blir med ovanstående matris följande: V1 V2 3 4 2 5 1 6 M1 1 9 7 9 8 V3 3 4 2 5 1 6 M2 5 6 8 7 7 9 8 3 4 2 5 1 6 6 8 7 9 M3 5 1 7 9 8 Att plocka ut en delmatris kommer alltså att behövas flera gånger och därför skulle du alltså skapa funktionen beskriven i ”2)” ovan. Till funktionen skickar du matrisen och vilken kolumn som skall plockas bort. Tillbaka från funktionen får du den nya (mindre) matrisen. OBS! representationen av matrisen är en vektor i programmet. Tag ut rätt delar ur vektorn! Originalmatrisens dimension kallar vi för N (i vårt fall = 3 då M är en 3x3-matris) Vi kan kalla originalmatrisen gör M och delmatriserna för M1, M2, M3. Det värde som står i första raden i den kolumn som tagits bort för att få fram delmatriserna kallar vi för V1 (=3), V2 (=4), V3 (=2). Själva formeln för att beräkna determinanten kan beskrivas enligt följande: N det ( M ) = ∑ ( –1 ) (i – 1) ⋅ V i ⋅ det ( M i ) i=1 Man beräknar alltså determinanten genom att summera en formel som i sig har determinaten för en delmatris. När en delmatris endast består av en 1x1-matris är determinanten densamma som värdet (talet) i matrisen. Tips: Det finns ett färdigt program som skapar olika matriser och ger determinantvärdet så att du kan kontrollera ditt svar. Kör detta och använd dessa data som indata till ditt program. 2008-06-04.kl.08-13 Uppgift 4 Alla vet vi ju hur de vanliga operatorerna + och - fungerar. Din uppgift är att fullborda ett påbörjat paket som skall ge lite extra hjälp till dem som vill använda de vanliga operatorerna + och -. Paketet heter Math och dess ”ads”-fil finns given. Det finns dessutom ett testprogram som använder detta paket. I paketspecifikationen står en del krav på hur de funktioner som skall implementeras skall fungera. Funktionerna som skall skapas heter Plus och Minus.