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 das

    eingKL[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])


Anmelden zum Antworten