2004-10-18.kl.14-19
Uppgift 1 (”Betyg 3 uppgift”)
Det finns vissa familjer som har underliga förhållanden mellan fäder och söner. I en familj firar
t.ex. fadern och sonen födelsedag samma dag och i år visade det sig att både fadern och sonen
”fyllde primtal”. Att ”fylla primtal” betyder att antalet år man fyller är ett primtal. I just detta
fall visade det sig att fadern var exakt dubbelt så gammal som sonen förra gången de fyllde år.
Din uppgift är att skriva ett program som skriver ut alla möjliga åldrar som fadern och sonen
kan tänkas ha i år. Utskriften skall ske i tabellform så att man ser tydligt vilka åldrar som hör
ihop på far och son. Ett par antaganden som är rimliga är att man inte kan få barn innan man är
15 år och att man inte blir äldre än 100 år gammal.
Om det är så att någon undrar hur man tar reda på om ett tal är ett primtal så är det följande
som gäller. Ett primtal kan endast delas med sig själv och 1. Det minsta primtalet är 2. Primtal
är alltid heltal.
Tips: Det kan vara lämpligt att göra en funktion som kontrollerar om ett tal är ett primtal.
2004-10-18.kl.14-19
Uppgift 2
På en fil finns ett antal personer som är släkt med Gustav Wasa. Filen heter NAMNEN.TXT
och formatet på filen ser ut enligt följande. Det är givet att raderna i filen är maximalt 42 tecken
långa.
Kalle:Andersson:
Bengt Göran Sven:Karlsson:
Sven-Torbjörn Rudolf:Bengtsson:
Li:Ek:
Elisabeth Annmargret:Johannesdotter:
Din uppgift är att skriva ett program som låter användaren mata in ett namn eller en del av ett
namn och sen skriver ut alla rader i filen som innehåller det som användaren matar in.
Körexempel 1:
Mata in (en del av) ett namn: Ka
Följande träffar har hittats:
----------------------------Kalle:Andersson:
Bengt Göran Sven:Karlsson:
Körexempel 2:
Mata in (en del av) ett namn: n
Följande träffar har hittats:
----------------------------Kalle:Andersson:
Bengt Göran Sven:Karlsson:
Sven-Torbjörn Rudolf:Bengtsson:
Elisabeth Annmargret:Johannesdotter:
Körexempel 3:
Mata in (en del av) ett namn: Elin
Följande träffar har hittats:
-----------------------------
2004-10-18.kl.14-19
Uppgift 3
Vissa gifta par har fått för sig att det är fint att ha namn som är s.k. systernamn. Om namn är
systernamn eller ej beror på om de innehåller samma bokstäver. Det spelar ingen roll om
bokstäverna kommer i olika ordning utan det enda som är intressant är om det förekommer lika
många bokstäver av varje sort. Ett par exempel är systernamnen ”Rut Eriksson” och ”Erik
Rutsson” eller systernamnen ”Bary Fridell” och ”Frida Byrell”.
Din uppgift är att skriva ett program som läser in två namn (vardera maximalt 20 tecken långa)
och kontrollerar om de är syskonnamn. Det enda krav som finns är att ditt program skall ha en
jämförelseoperator som tar emot de två ursprungsnamnen och som returnerar ett resultat av
typen ”Boolean”.
Körexempel 1:
Mata in det första namnet: Bary Fridell
Mata in det andra namnet : Frida Byrell
”Bary Fridell” och ”Frida Byrell” är systernamn.
Körexempel 2:
Mata in det första ordet: Linda Bryson
Mata in det andra ordet : Dan Brylison
”Linda Bryson” och ”Dan Brylison” är inte systernamn.
Körexempel 3:
Mata in det första ordet: Anna Karin Jansson
Mata in det andra ordet : Anna-Karin Jansson
”Anna Karin Jansson” och ”Anna-Karin Jansson” är systernamn.
Körexempel 4:
Mata in det första ordet: Anders Andersson
Mata in det andra ordet : Anders Anderson
”Anders Andersson” och ”Anders Anderson” är inte systernamn.
OBS! Man skiljer på versaler och gemener, men man räknar bara bokstäver (inte blanktecken,
bindestreck m.m.).
2004-10-18.kl.14-19
Uppgift 4
I ett paket som heter ”Binomialtalsstruktur” finns en datatyp (som är av släktet träd) som
innehåller ett antal binomialtal. Datastrukturen som finns representerad i paketet ser ut på
följande sätt.
1
1
1
1
1
1
1
2
3
4
5
6
1
3
6
10
15
1
4
10
20
1
5
15
1
6
1
1
I paketet finns det givet en ”Create”-procedur som skapar själva datastrukturen och fyller den
med data. Denna är byggd på ett utomordentligt tokigt sätt. OBS! Du får absolut inte göra
motsvarande i din ”Put”.
Det finns också givet ett huvudprogram som heter ”Main” vilket anropar ”Create”. Du måste
alltså lägga till ett anrop till din ”Put” i detta huvudprogram.
Din uppgift är att lägga till en ”Put”-procedur i paketet så att man kan skriva ut de data som
finns i densamma. Du måste anta att datastrukturen kan vara godtyckligt stor även om det råkar
vara så att den inte är det i just detta exempel. Din ”Put” skall alltså bara veta att strukturen ser
ut så som den gör ovan. Det är givet att strukturen alltid blir ”triangulär” som i figuren ovan,
d.v.s. det är givet att det är lika många ettor vågrätt som lodrätt och att varje ”gren” nedåt är ett
element kortare än den till vänster.
Din ”Put” skall skriva ut följande på skärmen om man har strukturen ovan.
1
1
1
1
1
1
1
1 1 1 1
2 3 4 5
3 6 10 15
4 10 20
5 15
6
1
6
1
Binomialtalen får man fram genom att räkna med hjälp av formeln
N!
 N = -------------------------------.
 K
K! ⋅ ( N – K )!