Seite 1 von 1

Caesar-Verschlüsselung

Verfasst: So Sep 03, 2017 12:18 pm
von Patrick Haucke
Hi,

ich bin gerade dabei für eine Hausarbeit die Funktion für eine Caesar-Verschlüsselung zu schreiben. Die Caesar-Verschlüsselung funktioniert fogendermaßen: Man hat eine Tabelle mit dem Alphabet (in diesem Fall Groß-und Kleinschreibung und Sonderzeichen). Nun wird ein Text genommen und jeder Buchstabe dieses Textes wird um einen festgelegten Betrag nach rechts verschoben. (Z.B. aus "Test" mit einr Verschiebung von 3 wird : "Whvw")
D.h. ich soll eine Funktion der Form

encrypt <- function(text, verschiebung) {
...
}

erstellen (wobei text der Eingegebene Text ist und verschiebung die Zahl, um die verschoben werden soll), die den Text verschlüsselt und ausgibt.
soweit bin ich im Moment:

encrypt <- function(text, verschiebung) {
vtext <- text
for (i in 1:length(vtext))
{
substr(vtext,i,i) <- vtabelle[i %% 57 + verschiebung]
}
return(vtext)
}

Wenn ich nun encrypt(c("Test"), 3) eingebe, erhalte ich als Ausgabe allerdings: "Dest".
Weiß jemand was mein Fehler ist, bzw. wie ich es korrigieren kann?

Vielen Dank,
Patrick

Re: Caesar-Verschlüsselung

Verfasst: So Sep 03, 2017 5:49 pm
von bigben
Such mal nach den Funktionen length und nchar -- dann wird der Fehler recht schnell sichtbar.

LG,
Bernhard

Re: Caesar-Verschlüsselung

Verfasst: Mo Sep 04, 2017 7:56 am
von Patrick Haucke
Vielen Dank für deine Antwort, das hat sehr geholfen.
Ich musste allerdings noch mehr verändern, dass es funktioniert, deshalb schreibe ich die Vollständige Funktion für den nächsten Fragenden nochmal hier rein:

Code: Alles auswählen

encrypt <- function(text, verschiebung) {
  vtext <- text
  for (i in 1:nchar(vtext))
  {
    buchstabe <- grep(substr(vtext, i, i), vtabelle)
    substr(vtext, i, i) <- vtabelle[buchstabe %% 57 + verschiebung]
  }
  return(vtext)
}
VG,
Patrick

Re: Caesar-Verschlüsselung

Verfasst: Mo Sep 04, 2017 8:58 am
von jogo
Hallo Patrick,

bitte lies: viewtopic.php?f=20&t=29
(wie man Codestücke formatiert)
Wie hübsch das anschließend aussieht, habe ich Dir schon mal vorgeführt, indem ich Deine Nachricht editiert habe.

Gruß, Jörg

Re: Caesar-Verschlüsselung

Verfasst: Mo Sep 04, 2017 9:10 am
von Patrick Haucke
Danke für den Hinweis.

Jetzt ist noch ein Fehler bei meinem Code aufgekommen.
Wenn in meinem Text Sonderzeichen vorkommen funktioniert es nicht.
Ich habe es danach Schritt-für-Schritt versucht, um den Fehler zu finden und offenbar muss es ein Fehler bei der for-Schleife sein.
Wenn ich nämlich jeden Schritt der Schleife selber mache, funktioniert es.
Also

Code: Alles auswählen

t <- c("Textverschluesselung fuer Teilaufgabe b!")
for (i in 1:nchar(t){
substr(t, i, i) <- vtabelle[grep(substr(t, i, i), vtabelle) %% 57 +3]
}
t
liefert als Ergebnis NA.
Wenn ich aber die einzelnen Schritte mache, kommt z.B. bei

Code: Alles auswählen

substr(t, 21, 21) <- vtabelle[grep(substr(t, 21, 21), vtabelle) %% 57 +3]
das: "Textverschluesselung!fuer Teilaufgabe b!" als Ergebnis raus.

VG,
Patrick