Perl :: Aufgabe #33

2 Lösungen Lösungen öffentlich

Mit Caesar Chiffre ent- und verschlüsseln

Anfänger - Perl von Dome - 03.01.2013 um 01:30 Uhr
Schreiben Sie ein Programm, indem Sie mit Hilfe der Caesar Chiffre einen beliebigen Text ent- und verschlüsseln können. Zuvor muss der Text und die Anzahl der Verschiebung angegeben werden. Groß- und Kleinschreibung muss nicht beachtet werden.

Konsolenausgabe:

Geben Sie den Text ein: Beispielwort
Um wie viele Stellen soll verschoben werden: 1
Ergebnis: Cfjtqjfmxpsu

Lösungen:

vote_ok
von RivalofSilen (620 Punkte) - 19.03.2014 um 09:33 Uhr
Hier mein Modell!

Quellcode ausblenden Perl-Code
print "Bitte Wort eingeben!\n";
chop($wert = <STDIN>);
print "\nVerschiebung um wie viele Zeichen?\n";
chop($verschiebung = <STDIN>);
$wert = lc($wert);
$laenge = length($wert);
@buchstaben = ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');

#Buchstaben um gewünschte Zahl verschieben
for($i=0;$i<=25;$i++){
	@verschoben[$i] = @buchstaben[$i+$verschiebung];
}

#Wort zeichenweise in Array schreiben
for($i=1;$i<=$laenge;$i++){
	@wort[$i-1]= substr($wert,$i-1,1);	
}

#gegebenes Wort in verschlüsseltes Wort umwandeln
for($i=0;$i<$laenge;$i++){
	for($k=0;$k<25;$k++){
		if(@wort[$i] eq @buchstaben[$k]){
			@wort[$i]=@verschoben[$k];
			$k=25;
		}
	}
}

print @wort;
vote_ok
von Kimaro (520 Punkte) - 24.10.2014 um 14:01 Uhr
Quellcode ausblenden Perl-Code

#!/usr/bin/perl
use strict;
use warnings;
use Switch;

my @arrx = ();
my $i = 0;
my $c = 0;
my $u = 0;


#Eingabe Text
print "\n \n";
print "Geben Sie den Text ein: ";
my $x = <STDIN>;
chomp $x;


#Eingabe Stellen
print "Um wie viele Stellen soll verschoben werden: ";
my $stelle = <STDIN>;
chomp $stelle;

#berechnung
@arrx = split(//,$x);
my $anzahl = @arrx;
while   ($i != $stelle) {
	$c = 0;
	$u = 0;
	while ($u != $anzahl) {
		switch ($arrx[$c]) {
			case "a" {$arrx[$c] = "b";}
			case "b" {$arrx[$c] = "c";}
			case "c" {$arrx[$c] = "d";}
			case "d" {$arrx[$c] = "e";}
			case "e" {$arrx[$c] = "f";}
			case "f" {$arrx[$c] = "g";}
			case "g" {$arrx[$c] = "h";}
			case "h" {$arrx[$c] = "i";}
			case "i" {$arrx[$c] = "j";}
			case "j" {$arrx[$c] = "k";}
			case "k" {$arrx[$c] = "l";}
			case "l" {$arrx[$c] = "m";}
			case "m" {$arrx[$c] = "n";}
			case "n" {$arrx[$c] = "o";}
			case "o" {$arrx[$c] = "p";}
			case "p" {$arrx[$c] = "q";}
			case "q" {$arrx[$c] = "r";}
			case "r" {$arrx[$c] = "s";}
			case "s" {$arrx[$c] = "t";}
			case "t" {$arrx[$c] = "u";}
			case "u" {$arrx[$c] = "v";}
			case "v" {$arrx[$c] = "w";}
			case "w" {$arrx[$c] = "x";}
			case "x" {$arrx[$c] = "y";}
			case "y" {$arrx[$c] = "z";}
			case "z" {$arrx[$c] = "a";}
		}
		$c++;
		$u++;
	}
	$i++;
}

#Ergebnis
print "Ergebnis: ";
print join ("",@arrx);
print "\n \n";

#Beenden des Programms
print "Zum Beenden des Programms bitte Enter druecken.\n";
<STDIN>