Differences
This shows you the differences between two versions of the page.
extrauppgifter_4 [2017-09-01 14:54] |
extrauppgifter_4 [2022-07-18 13:20] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Extrauppgifter i Programmering A kap 4 ====== | ||
+ | **OBS! \\ | ||
+ | Spara uppgifterna som e1.cpp, e2.cpp, ... i en mapp som du döper till e4. | ||
+ | ** | ||
+ | |||
+ | 1. | ||
+ | Skriv en funktion | ||
+ | **bool isprime(int tal)** | ||
+ | som tar emot ett tal och undersöker om det är ett primtal. Om det är ett | ||
+ | primtal skall funktionen returnera true annars false. | ||
+ | Utgå från att det endast kommer godkända värden till funktionen. | ||
+ | Du skall använda funktionen i följande program. | ||
+ | |||
+ | <code cpp> | ||
+ | int main(int argc, char *argv[]) | ||
+ | { | ||
+ | int antal = 100; | ||
+ | cout << "Detta är alla primtal mellan 2 och " << antal << endl; | ||
+ | for(int i = 2 ; i < antal ; i++) | ||
+ | { | ||
+ | if(isprime(i)) | ||
+ | cout << i << endl; | ||
+ | } | ||
+ | system(" | ||
+ | return EXIT_SUCCESS; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | 2. | ||
+ | I ett samboförhållnade hade det i många år varit prat om att man skulle gifta sig. | ||
+ | När ämnet än en gång togs upp (2002-12-03) sade mannen i huset att han hade som | ||
+ | enda villkor att han skulle gifta sig ett datum och klockslag där alla tal var primtal. | ||
+ | a. Skriv ett program som listar alla rimliga datum som är primtal. | ||
+ | Utgå från att mannen var 36 år. Obs! år, månad och dag skall vara primtal. | ||
+ | b. Skriv ett tillägg som listar alla klockslag som är primtal. | ||
+ | |||
+ | Du skall använda dig av din funktion isprime() | ||
+ | |||
+ | I exemplet ovan så skrev mannen ett program som listade alla godkända datum och den blivande frun fick välja. | ||
+ | De gifte sig i Arnäs kyrka 2003-07-05 kl 13.59 och är idag mycket lyckligt gifta. Inte undra på... | ||
+ | |||
+ | 3. | ||
+ | Skriv en funktion | ||
+ | **double my_sqrt(double tal)** | ||
+ | som beräknar ett närmevärde till roten ur ett tal, du skall använda följande enkla algoritm: | ||
+ | |||
+ | IN A | ||
+ | X = A/2 | ||
+ | upprepa 10 ggr | ||
+ | X = (A/X + X)/2 | ||
+ | UT X | ||
+ | |||
+ | Funktionen skall användas av ett program. | ||
+ | |||
+ | 4. | ||
+ | Du skall göra om funktionen så att man skickar med hur många gånger man skall upprepa | ||
+ | **double my_sqrt(double tal, int n)** | ||
+ | Pröva med lite oilka tal för att se hur många gånger som är lämpligt för att få att värde som kan anses som ok. | ||
+ | |||
+ | 5. | ||
+ | Skriv ett program som läser in ett tal och faktorisera det i primtal. | ||
+ | |||
+ | 6. | ||
+ | Skriv ett program som hittar alla perfekta tal under 10 000 (4 st).\\ | ||
+ | Ett perfekt tal är ett heltal som är större än 1 och som är summan av sina delare. \\ | ||
+ | Som delare räknas talet 1 in, men naturligtvis inte talet självt (då hade de perfekta talen definierats bort).\\ Exempel: 6 är ett perfekt tal eftersom det är delbart med 1, 2 och 3 och summan av dessa är just 6. | ||
+ | |||
+ | |||
+ | Det finns flera olösta gåtor angående de perfekta talen:\\ | ||
+ | - Man vet inte om det finns ändligt eller oändligt många perfekta tal. \\ | ||
+ | - Hittills har alla perfekta tal man hittat slutat på 6 eller 28. Men ingen har lyckats visa om alla perfekta tal gör det. \\ | ||
+ | - Hittills har man inte lyckats hitta något udda perfekt tal. Men det är inte bevisat att det inte finns några sådana.\\ | ||
+ | - 2005 känner man till 42 perfekta tal. | ||
+ | |||
+ | 7. | ||
+ | Vad kommer följade program att skriva ut? | ||
+ | <code cpp> | ||
+ | int printname(string name, int n) { | ||
+ | if(n<1) { | ||
+ | return 0; | ||
+ | } | ||
+ | printname(name, | ||
+ | cout << name << " n = " << n << endl; | ||
+ | } | ||
+ | |||
+ | int main(int argc, char *argv[]) | ||
+ | { | ||
+ | printname(" | ||
+ | system(" | ||
+ | return EXIT_SUCCESS; | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | 8. | ||
+ | Ett program ska " | ||
+ | Programkörnings exempel: | ||
+ | Diamantens storlek: 5 | ||
+ | ¤ | ||
+ | ¤ ¤ | ||
+ | ¤ ¤ ¤ | ||
+ | ¤ ¤ ¤ ¤ | ||
+ | ¤ ¤ ¤ ¤ ¤ | ||
+ | ¤ ¤ ¤ ¤ | ||
+ | ¤ ¤ ¤ | ||
+ | ¤ ¤ | ||
+ | ¤ | ||
+ | |||
+ | 9. | ||
+ | Gör ett program som läser in ett tal (max 5000) och skriver ut talet med romerska siffror. Kan ju vara klokt att googla lite om hur det egentligen funkar... | ||
+ | Skriv in ett tal: 9 | ||
+ | Blir med romerska siffror: IX | ||
+ | Skriv in ett tal: 49 | ||
+ | Blir med romerska siffror: XLIX (Ej IL) | ||
+ | Skriv in ett tal: 1999 | ||
+ | Blir med romerska siffror: MCMXCIX (Ej MIM) | ||
+ | Skriv in ett tal: 445 | ||
+ | Blir med romerska siffror: CDXLV (Ej CDVL) | ||
+ | |||
+ | 10. | ||
+ | UPPGIFT 1 – KANINER (uppgift nr1 ur kval till PO 2003)\\ | ||
+ | Kaniner är bra på att föröka sig. I den här uppgiften tänker vi oss att det finns obegränsat med hannar | ||
+ | och att inga kaniner dör. Vi ska försöka simulera hur många kaninhonor det finns efter varje månad om | ||
+ | det vid tiden 0 finns en enda nyfödd kaninhona. Vi antar att det tar x månader innan varje kaninhona är | ||
+ | könsmogen och att hon från och med denna ålder (x månader) varje månad föder en kull innehållande | ||
+ | y kaninungar av honkön. \\ | ||
+ | Indata: Programmet ska fråga efter honornas könsmognadsålder x; <m>1 <= x <= 5</ | ||
+ | kull y; <m>1 <= y <= 5</ | ||
+ | Utdata: Programmet ska skriva en rad för varje månad under totalt 10 månader \\ | ||
+ | Exempel: | ||
+ | Könsmognadsålder ? 2 | ||
+ | Honor per kull ? 1 | ||
+ | Efter 1 m: 1 | ||
+ | Efter 2 m: 2 | ||
+ | Efter 3 m: 3 | ||
+ | Efter 4 m: 5 | ||
+ | Efter 5 m: 8 | ||
+ | Efter 6 m: 13 | ||
+ | Efter 7 m: 21 | ||
+ | Efter 8 m: 34 | ||
+ | Efter 9 m: 55 | ||
+ | Efter 10 m: 89 | ||
+ | Förklaring: | ||
+ | ensam. Efter 2 månader har Lisa fått en kull. Efter 3 månader finns 3 honor eftersom Lisa fått ytterligare | ||
+ | en kull. Efter 4 månader finns 5 honor eftersom både Lisa och hennes första unge har fått varsin kull | ||
+ | med en hona i varje. | ||
+ | |||