Verschlüsselungsprogramm
-
Ich hab hier mal ein kleines Programm geschrieben das Text nach dem Caesar Prinzip verschlüssen soll d.h. Alphabetverschiebung .
Ich glaube mein Fehler ist beim Vergleichen der Buchstaben:
Kann man chars überhaupt mit 'a'=='b' vergleichen?
Wenn nicht, gibt es einen anderen Weg?#include<stdio.h> int main(){ char KT[26]; KT[0]='a'; KT[1]='b'; KT[2]='c'; KT[3]='d'; KT[4]='e'; KT[5]='f'; KT[6]='g'; KT[7]='h'; KT[8]='i'; KT[9]='j'; KT[10]='k'; KT[11]='l'; KT[12]='m'; KT[13]='n'; KT[14]='o'; KT[15]='p'; KT[16]='q'; KT[17]='r'; KT[18]='s'; KT[19]='t'; KT[20]='u'; KT[21]='v'; KT[22]='w'; KT[23]='x'; KT[24]='y'; KT[25]='z'; char ST[26]; ST[0]='t'; ST[1]='u'; ST[2]='v'; ST[3]='w'; ST[4]='x'; ST[5]='y'; ST[6]='z'; ST[7]='a'; ST[8]='b'; ST[9]='c'; ST[10]='d'; ST[11]='e'; ST[12]='f'; ST[13]='g'; ST[14]='h'; ST[15]='i'; ST[16]='j'; ST[17]='k'; ST[18]='l'; ST[19]='m'; ST[20]='n'; ST[21]='o'; ST[22]='p'; ST[23]='q'; ST[24]='r'; ST[25]='s'; char eingKL[20]; printf("Klartext ohne Leerzeichen max 20\n"); scanf("%c",eingKL); int i,j; for(i=0;i<20;i++) { for(j=0;j<26;j++) { if(eingKL[i]==KT[j]) { printf("%c",ST[j]); } } } return 0;}
-
blizzarac schrieb:
Kann man chars überhaupt mit 'a'=='b' vergleichen?
Ja kann man. Was ist ueberhaupt das Problem?
-
Das programm bricht nach der eingabe ab
-
scanf("%s",eingKL);
-
die art, wie du die arrays initialisierst, gefaellt mir nicht. reduziere die bitte auf maximal drei zeilen je array. benutze loops.
-
blizzarac schrieb:
Das programm bricht nach der eingabe ab
Vielleicht liegts ja auch daran:
//--- getchar(); return 0; }
Ein getchar() vor das return, damit es nicht beendet.
Die Verschlüsselung könnte man auch vereinfachen:
int main() { char eingKL[20]; printf("Klartext ohne Leerzeichen max 20\n"); scanf("%s",eingKL); for( int i = 0; i < 20; i++ ) { if( eingKL[i] >= 'a' && eingKl[i] <= 'z' ) { eingKL[i] += 7; if( eingKL[i] > 'z' ) eingKL[i] = ( eingKL[i] % 'z' ) + 'a'; } } return 0; getchar(); }
Edit by c.rackwitz: zusammenhaengende Posts sehen schoener aus
-
Kannst du mir bitte erklären wie dein Programm funktioniert
ich glaube so weit bin ich noch nicht.
und was ist daseingKL[i] += 7;
?
-
eingKL[i] += 7;
Addiert zur Variablen eingKL[i] den wert 7 und schreibt das ergebniss der rechnung in die selbige (also wieder in eingKL[i])