C :: Aufgabe #23

2 Lösungen Lösungen öffentlich

Mit Caesar Chiffre ent- und verschlüsseln

Anfänger - C 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 devnull (8870 Punkte) - 14.07.2013 um 13:50 Uhr
Quellcode ausblenden C-Code
/********************************************
 * caesar.c   Caesar-Chiffre
 *
 * OS     :   GNU/Linux
 * compile:   gcc -Wall -o caesar caesar.c
 *
 * devnull    14-07-2013                
 ********************************************/
#include <stdio.h>

#define BUFLEN 1000

int caesar( int c, int rot )
{
	if      (c>='A' && c<='Z') c=(c-'A'+rot)%26+'A';
	else if (c>='a' && c<='z') c=(c-'a'+rot)%26+'a';
	else if (c>='0' && c<='9') c=(c-'0'+rot)%10+'0';
	return c;
}

int main()
{
    char text[BUFLEN+1];
    char *p=text;
    int rot;

	printf("Texteingabe: ");
	if (fgets(text,BUFLEN,stdin)) {
		text[BUFLEN]='\0';
		printf("Verschiebung: ");
		scanf( "%d",&rot ); 
		while(*p) { *p=caesar(*p,rot); p++;	}
		printf("Chiffretext: %s\n",text);
	}
	return 0;
}
vote_ok
von kathleenw (3600 Punkte) - 15.07.2020 um 10:23 Uhr
Quellcode ausblenden C-Code
#include <stdio.h>
#include <stdlib.h>
#define  MAX 30

int main(void)
{
    char eingabe[MAX], verschluesselt[MAX];
    int i, verschiebung, groesse;
    
    printf("Bitte gebe den Satz ein, welcher verschlüsselt werden soll: \n");
    fgets(eingabe,MAX,stdin);
    printf("Bitte gebe die Verschiebung ein: \n");
    if (scanf("%d", &verschiebung)!=1) {
        printf("Falsche Eingabe.\n");
        return EXIT_FAILURE;
    }
    
    //verschlüsseln
    for(i=0;i<MAX;i++) {
        verschluesselt[i] = (char)(((int)eingabe[i])+verschiebung);
    }
    
    //Ausgabe
    printf("Satz nach der Verschlüsselung: \n");
    for(i=0;i<MAX;i++) {
        printf("%c",verschluesselt[i]);
    }
    printf("\n");
    
    return EXIT_SUCCESS;
    
}