You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 27 Next »

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

 

I disse dager er personvern på dagsorden. Det skal lages en funksjon som skal kryptere en setning ved hjelp av Cæsarshiffer. 

a)

Lag funksjonen encrypt(word, step). Parameterene er word og step. Den skal forskyve hver bokstav (char) i word med step antall tegn i alfabetet. Til høyre om step er positiv og til venstre om den er negativ.
Anta at word kun består av små bokstaver fra a til z, ingen tegn, tall o.l. 
Tips: Lek med: mod(tall + shift, 26) 

Eksempel på kjøring:

    >> encrypt('etterlatt', 10)

    ans =

    oddobvkdd

b)

Lag funksjonen decrypt(word, step). Denne skal dekryptere en tekststreng ved gitt step. 

Eksempel på kjøring:

    >> decrypt('oddobvkdd', 10)

    ans =

    etterlatt

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.
  • No labels