Læringsmål:
- Strenger
- Char
- Betingelser
- For-løkker
Pensum:
- 3.3 Input and Output
- 3.7 User-Defined Functions That Return a Single Value
- 4.1 The if statement
- 4.2 The if-else statement
- 4.3 Nested if-else statements
- 5.1 The for loop
- 7.2 Operations on Strings
- 7.3 The "is" Functions for Strings
Klartekst: ABCDEFGHIJKLMNOPQRSTUVWXYZ Chiffertekst: DEFGHIJKLMNOPQRSTUVWXYZABC
a)
caesar(word, key)
, som tar inn en bokstav word
og forskyver hver bokstav (som er av typen char
) i word
med key
antall tegn i alfabetet.a-z
. Du kan anta at det kun tas inn små bokstaver.>> caesar('terningen', 3) ans = 'whuqlqjhq'
b)
Utvid nå funksjonen du lagde i deloppgave a) til å kunne håndtere setninger (hvis den ikke allerede gjør det).
Lag deretter en funksjon plaintext(word,
key) som tar inn et cæsarchiffer og dekrypterer dette. Dette er med andre ord en slags omvendt funksjon av caesar()
.
>> caesar('terningen er kastet.', 3) ans = 'whuqlqjhq hu ndvwhw.' >> plaintext('whuqlqjhq hu ndvwhw.', 3) ans = 'terningen er kastet.'
c)
Lag funksjonen safeTalk()
. Den skal gi brukeren valget mellom kryptering eller dekryptering. Deretter skal den be brukeren om en tekstreng og antall steg. Den skal returnere den krypterte eller dekrypterte strengen.
Eksempel på kjøring:
>> safeTalk
Vil du kryptere(k) eller dekryptere(d):
k
Hva vil du kryptere:
tusenfryd
Hvor mange steg skal ordet skiftes?:
1
ans =
uvtfogsze
Merk: funksjonen må også ta hensyn til at brukeren vil kryptere/dekryptere setninger. Hva gjør man da med mellomrom, komma, punktum osv.?
d)
Dekrypter setningen under.
Hint: Dette kan løses ved å finne den hyppigste bokstaven i strengen. Avstanden fra e til denne bokstaven er da forskyvningen.
zmumujmz, zmumujmz, bpm nqnbp wn vwdmujmz, bpm ocvxwelmz bzmiawv ivl xtwb. q svwe wn vw zmiawv epg bpm ocvxwelmz bzmiawv apwctl mdmz jm nwzowb.