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 )!