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.