Palindromtall i pseudokode
Lov på eksamen
- Datamaskin med programmeringsverktøy
- Lærebok, dokumentasjon og egne notater og programmer
Ikke åpent internett (bare noen utvalgte nettressurser), kommunikasjon med andre eller kunstig intelligens.
Kan den løses uten PC?
1 av 2 deloppgaver kan løses uten PC.
Fra 2027 er det bare kalkulator og skriftlige hjelpemidler på del 2. Vurderingen er gjort med KI og kan inneholde feil.
I pseudokoden nedenfor er h et positivt heltall. Merk: Operatoren // betyr heltallsdivisjon.
READ h
SET t TO h
SET s TO 0
SET r TO 0
WHILE h NOT EQUAL TO 0
SET r TO h % 10
SET s TO s * 10 + r
SET h TO h // 10
ENDWHILE
IF t EQUAL TO s
DISPLAY True
ELSE
DISPLAY False
ENDIF
Forklar med egne ord algoritmen som er beskrevet av pseudokoden ovenfor.
Ta utgangspunkt i algoritmen fra punkt a). Utvid og implementer algoritmen til et program som teller opp og viser hvor mange tresifrede tall som oppfyller IF-betingelsen fra algoritmen.
Fasit
Algoritmen snur sifrene i tallet h og sjekker om det snudde tallet er lik det opprinnelige. Den viser True hvis tallet er et palindrom (leses likt forfra og bakfra), ellers False.
LøsningsforslagKI-generert
Algoritmen sjekker om et tall er et palindromtall, altså et tall som er likt lest forfra og bakfra, som 121 eller 4554.
- Klargjøring. Programmet leser inn tallet
hog tar vare på en kopi it, fordihblir endret i løkken. Variabelensskal bli det snudde tallet og starter på 0. Variabelenrskal holde ett og ett siffer. - Løkken. Så lenge det er sifre igjen i
h(her ikke 0), gjør programmet tre ting:h % 10er resten ved divisjon med 10, altså det siste sifferet ih. Det lagres ir.s * 10 + rflytter sifrene isén plass til venstre og legger det nye sifferet til bakerst.h // 10fjerner det siste sifferet frah.
- Sammenligning. Når løkken er ferdig, inneholder
ssifrene ihi motsatt rekkefølge. Erslik det opprinnelige tallett, er tallet et palindrom, og programmet viserTrue. Ellers viser detFalse.
Sporing for h = 121:
| Runde | r = h % 10 | s = s * 10 + r | h = h // 10 |
|---|---|---|---|
| Start | 0 | 121 | |
| 1 | 1 | 1 | 12 |
| 2 | 2 | 12 | 1 |
| 3 | 1 | 121 | 0 |
Nå er h lik 0, og løkken stopper. Siden t = 121 og s = 121, viser programmet True. For h = 123 blir s = 321, og programmet viser False.