Iteration uden arrays (1-13)
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 1 |
Lav et program der beregner summen af tallene i intervallet [-10:10]. Opgaven kan løses med enten en while- eller en for-løkke, og ved enten at tælle op eller ned. Løs opgaven på alle fire måder. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ~2 |
Lav et program der udskriver alle de ulige tal i intervallet [10:21]. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ~3 |
Lav et program der udskriver otte-tabellen. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 4 |
n-fakultet (man skriver det n!) er defineret som produktet: 1*2*...*n. Lav et program der beregner n! af en variabel. Test: Du kan f.eks. bruge 5! = 120 til test af dit program | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5 |
Lav et program der:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 6 | Lav et program der udskriver summen af de ulige tal i intervallet [1:20]. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 7 |
Lav et program der:
Du skal lave en reel optælling i programmet. Test dit program med andre intervaller. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 8 |
Lav et program der:
Løsningen skal laves med iteration og en reel beregning af gennemsnit med summering. F.eks.: for [9:15] er gennemsnittet 12, da (10+12+14)/3 = 12. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| *9 |
Fibonacci-tallene er en særlig tal-følge:
Man ser her, at det første fibonacci-tal er 1, det andet er også 1, mens det tredie er 2. Idéen er, at man altid finder et bestemt fibonacci-tal ved at lægge de to foregående fibonacci-tal sammen. F.eks. er det 8'ende fibonacci-tal 21, fordi det 6'te og 7'ende er 8 og 13 ( 8 + 13 = 21 ) Lav et program der beregner det x'te fibonacci-tal, hvor x er en variabel i dit program hint: Brug flere variable | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| *10 |
Man kan regne fibonacci-tallene baglæns som det er gjort i følgende tabel:
Man bruger det første og det andet fibonacci-tal (1 og 1) som basis for en beregning af det foregående fibonacci-tal 0. Lav et program der kan beregne det negative fibonacci-tal for en given negativ position. Dit program skal virke for værdier fra position 0 og nedefter hint: Du kan evt. løse opgaven på en lidt anden måde end der er lagt op til i beskrivelsen ovenfor. Sammenlign tabellen med tabellen fra den foregående opgave med fibonacci-tal, og observer en sammenhæng. Du kan udnytte denne observation til at iterere dig frem til løsningen, idet du bruger modulus og din løsning fra den foregående fibonacci-opgave, med lidt modifikationer. Løs opgaven, hvor du udnytter observationen i hintet, henholdsvis ikke gør det! | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| *11 |
Lav et program der:
Et primtal er et tal, hvor om det gælder, at kun 1 og tallet selv går op i det. hint: brug modulus til at checke om der er andre tal end 1 og tallet selv der går op i kandidat. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ~12 |
Lav et program der udskriver to-potenserne fra 2 til 1024. Dvs. dit program skal udskrive:
De hedder to-potenser fordi de fremkommer som: 21, 22, 2 3, ... , 29, 2 10. hint: Opgaven kan løses meget enkelt. Tænk dig derfor godt om først! | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 13 |
Lav et program der udskriver den lille tabel (tallene fra 1 til 10 ganget med hinanden) på formen:
hint: Løs opgaven ved hjælp af to for-løkker, den ene inden i den anden. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Iteration med en-dimensionelle arrays (14-39) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ~14 |
Lav et program der udskriver det første element fra ulige | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ~15 |
Lav et program der udskriver længden af posNeg | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 16 |
Lav et program der udskriver de fem første elementer af tabel | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 17 |
Lav et program der udskriver alle elementerne fra t1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 18 |
Lav et program der udskriver det midterste og det sidste element i t2 Du må ikke direkte bruge det index som det pågældende element har, men skal bruge længden af arrayet og regne dig frem til index'et. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 19 |
Lav et program der udskriver summen af elementerne fra posNeg | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 20 |
Lav et program der udskriver alle de negative tal fra posNeg | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 21 |
Lav et program der udskriver alle elementerne fra t3 i omvendt rækkefølge, uden at ændre på array'et. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| *22 |
Lav et program der ændrer i t4, således at t4's første tre elementer bliver de samme som de tre sidste i t5. De tre elementer skal stå i samme rækkefølge i t4, som de gør i t5. Skal laves iterativt og ikke med tre assignments. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 23 |
Lav et program der ændrer fortegn på alle elementerne i posNeg. Udskriv de fire første og de fire sidste værdier som kontrol. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 24 |
Lav et program der udskriver tallene fra 0 til 9. Du må kun udskrive værdier fra lige og ulige, og tallene skal udskrives i stigende orden. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| *25 |
Lav et program der vender rækkefølgen af elementerne i t3, og bagefter udskriver elementerne, som kontrol. (Udskriften skal være den samme som i opgave 21) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 26 |
Lav et program der tæller antal forekomster af tallet 7 i tabel | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 27 |
Lav et program der beregner summen af alle de ulige positive tal i posNeg | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 28 |
Lav et program der finder den største værdi i t1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| *29 |
Lav et program der laver en statistik over hvor mange forekomster der findes i tabel af de forskellige tal i intervallet [0:9], og udskriver denne statistikken på formen:
hint: Lav et array med ti elementer og brug det til at tælle i. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 30 |
I posNeg befinder der sig nogle negative tal. Lav et program der finder og udskriver det første af disse. Lav programmet i tre flere forskellige versioner, idet du anvender én af følgende:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| *31 |
Lav et program der finder de to mindste værdier i t5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 32 |
Lav et program der gennemløber t1, og udskriver alle element-par. Udskriften skal være på formen:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 33 |
Lav ændringer i dit program fra opgave 32, således at det gør følgende for hvert element-par:
Hvis man efterfølgende udskriver elementerne fra array'et, vil resultatet blive:
Bemærk, at et gennemløb udemærket kan tælle en indgang i arrayet op, for dernæst at tælle den ned igen; hvis den indgår i to element-par. Dette sker f.eks. for 71. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 34 |
Lav ændringer i dit program fra opgave 33, således at gennemløbet kan gentages flere gange. Det skal betyde at du f.eks. kan bestemme at array'et skal gennemløbes 3 gange; hvor der ved hvert gennemløb gøres som i opgave 33 Hvad sker der ved mange gennemløb af array'et? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 35 |
Lav ændringer i dit program fra opgave 34, således at det i stedet gør følgende for hvert element-par
Hvad sker der ved mange gennemløb i forhold til i opgave 34? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 36 |
Lav ændringer i dit program fra opgave 35, således at det i stedet gør følgende ved hvert element-par
Hvad sker der ved mange gennemløb? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 37 |
Lav ændringer i dit program fra opgave 36, således at det automatisk stopper når array'et er sorteret Lav ændringer i dit program så det tæller hvor mange gange det har sammenlignet to elementer Effektiviser dit program så antallet af sammenligninger bliver mindst muligt | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
*38
|
Eratosthenes (græker, 273-194 fvt., den første der beregnede Jordens omkreds, fra år 240 leder af det berømte Alexandrinske bibliotek) fandt på en meget hurtig, men pladskrævende måde, at finde alle primtal op til en vis øvre grænse, f.eks. alle primtal i intervallet [0:100] Idéen er at starte med et array hvor alle elementer er sat til en bestemt værdi, f.eks. 0 (elementerne med index 0 og 1 sættes dog til 1). Dernæst betyder 0 at vi endnu ikke har konstateret at det pågældende index ikke skulle være et primtal, og tallet 1 at vi endegyldigt har konstateret at det pågældende index ikke er et primtal (Fra start har vi netop konstateret at 0 og 1 ikke er primtal, mens det stadig er et åbent spørgsmål for resten!) Dernæst starter man en iterativ proces hvor man hele tiden finder det næste index, der har element 0, sætter alle multiplum af det pågældende index til 1 og dernæst går videre med det næste index der stadig har et element med værdien 0 Hvis vi anvender et lille array med 12 indgange, vil forløbet for de første iterationer se ud som følger: Det initielle array:
Vi konstaterer at 2 er det første index med et element 0, og vi sætter alle multiplum af 2 til 1:
Vi konstaterer at 3 er det næste index med et element 0, og vi sætter alle multiplum af 3 til 1:
Vi konstaterer at 5 er det næste index med et element 0, og vi sætter alle multiplum af 5 til 1:
Og således fortsætter man. Lav et program der finder primtallene i intervallet [0:100] og udskriver dem. hint: I forbindelse med test kan du evt. anvende, at der er 25 primtal i intervallet [0:100]. Når du har løst opgaven, så lav ændringer i dit program så du arbejder med et array af booleans. Ekperimenter endvidere med hvor store arrays, der kan bearbejdes inden for rimelig tid. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
*39 |
I denne opgave skal vi lave verdens simpleste og hurtigste form for sortering: Bucket sort. På trods af de fine titler er det faktisk også en af de simpleste sorterings-algoritmer at implementere. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Hvis vi f.eks. skulle sortere elementerne i følgende array: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Så kunne vi lave en statistik i et andet array, over hvor mange forekomster, der er af hvert tal i intervallet [0:9]: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Det kan man "hælde" tilbage i det oprindelige array, ved at starte med én 0'er, én 1'er, tre 2'ere, to 3'ere osv. Derved ville de oprindelige værdier blive overskrevet og arrayet vil i stedet blive: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Lav en implementation af bucket sort, der sorterer følgede array: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Iteration med fler-dimensionelle arrays (40-) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 40 | Lav et program der indsætter den lille tabel i et to-dimensionelt array og dernæst udskriver den fra tabellen. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 41 |
I et spil kryds og bolle kan situationen være følgende:
Brættet kan repræsenteres som et to-dimensionelt array med følgende udssende:
Hvor 0 er et tomt felt, 1 er et kryds og 2 er en bolle: Lav et program der erklærer det to-dimensionelle array ovenfor og udskriver det på formen:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 42 |
Betragt følgende kvadratiske to-dimensionelle array:
De markerede felter kaldes diagonalen. Hvis alle felter der ikke ligger på diagonalen er 0, kalder man det en diagonal-matrice. Man observer at ovenstående er en diagonal-matrice. Lav et program der undersøger om et vilkårligt kvadratisk to-dimensionelt array af integers er en diagonal-matrice. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| *43 |
Betragt følgende figur:
Nogle af felterne er markerede. Ud over det har vi sat et kryds i et af de markerede felter (udelukkende for at vi kan referere til det her). Feltet er nemlig specielt - det er et såkaldt krydsfelt. Et krydsfelt er et felt der er markeret og som har markerede felter til alle sider (dvs. de fire felter til højre/venstre og ovenover/nedenunder). Man bemærker at ingen felter på "randen" kan være krydsfelter, da de alle mangler en eller flere nabofelter. Man kan repræsentere felterne som elementer i et to-dimensionelt array af booleans, hvor true betyder at et felt er markeret. Lav et program der erklærer ovenstående array og udskriver index for samtlige krydsfelter. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| *44 |
I et tipsprogram har man behov for at kunne udskrive en tipskupon. En tipskupon er givet ved et to-dimensionelt array, hvor første dimension er tipsrækken og anden dimension er kampen. Lav et program der udskriver en tipdskupon. F.eks. følgende array med 3 tipsrækker og 13 kampe:
Hvor 1 og 2 svarer til tegnene "1" og "2", og 0 svarer til "X". Programmet skal lave en udskrift med følgende udseende:
Bemærk, at der udskrives ???, som indikation af, at tallet ikke kan fortolkes som et tipstegn. Du skal erklære et array svarende til det i eksemplet ovenfor, med en initialiseringsliste så dimensionerne passer med den fortolkning, der er beskrevet. Dernæst skal programmet foretage udskriften. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||