CäsarChiffrierung
-
Schreibe dir eine Funktion, die die Aufgabe 'Test auf Grossbuchstabe' kapselt.
Diese Funktion rufst du dann in deinem Programm an passender Stelle auf, dein Programm wird damit übersichtlicher und ist leichter zu debuggen, also z.B.int istGrossbuchstabe(char c) { return isalpha( c ) && c>='A' && c<='Z'; }
dürfte für die allermeisten Anwendungsfälle funktionieren.
Gewöhne dir an, auch für andere Aufgaben Funktionen zu implementieren, wenn man Funktionalitäten sinnvoll kapseln kann.
-
Den Test auf isalpha würde ich sogar weglassen und auf einen "normalen" Zeichensatz vertrauen.
-
Leider verstehe ich nicht ganz, wie ich diese "Prüfung auf Großbuchstaben" sinnvoll in das Programm eingliedern kann.
-
Wenn du nicht weißt, wie man in C Funktionen aufrufst, dann bist du noch ganz am Anfang.
Ich erkläre dir hier jedenfalls diese Grundlagen nicht auch noch.
-
Lenndon schrieb:
Leider verstehe ich nicht ganz, wie ich diese "Prüfung auf Großbuchstaben" sinnvoll in das Programm eingliedern kann.
for(x=0; normal[x] != '\0'; x++) { if(normal[x] >= 'A' && normal[x] <= 'Z')//Ist Großbuchstabe { geheim[x] = normal[x] + 3; } …
-
Ok habs geschafft, danke vielmals
-
Jaja, mein … sollte meinen, da muss auch noch hin, was bei kleinbuchstaben passiert (das selbe) und was bei anderen zeichen passiert (einfach kopieren).
-
Lenndon schrieb:
Ok habs geschafft, danke vielmals
zeig trotzdem nochmal die endlösung. vielleicht ist was ungeschickt daran, kann ja sein.
-
Endlösung:
(Es wurde noch eingefügt, dass er aus XYZ --> ABC macht)#include <stdio.h> int main() { int auswahl, x = 0; char normal[100], geheim[100]; for(x = 0; x <= 99; x++) { normal[x] = ' '; geheim[x] = ' '; } printf ("Caesar Verschiebung\n\n\n"); printf ("Bitte zu verschluesselnde Nachricht eingeben:\n"); gets (normal); for(x=0; normal[x] != '\0'; x++) { if(normal[x] >= 'A' && normal[x] <= 'Z') / { geheim[x] = normal[x] + 3; } else { geheim[x] = normal[x] ; } if(normal[x] == 'Z') { geheim[x] = 'C'; } if(normal[x] == 'Y') { geheim[x] = 'B'; } if(normal[x] == 'X') { geheim[x] = 'A'; } } printf("\nDie verschluesselte Nachricht lautet:\n%s", geheim); }
-
Ein bisschen nachgedacht, dann brauchst du die Extrabehandlung der ersten Buchstaben nicht mehr, und du kannst die 3 durch jeden positiven Wert ersetzen
geheim[x] = (normal[x] - 'A' + 3 ) % ('Z' - 'A' + 1) + 'A' ; // Buchstaben ab 0 + Offset modulo 26 + 65