Zeichenkette rotieren lassen
-
Hi Leute,
Ich brache eure Hilfe. Ich habe die aufgabe eine Zeichenkette einzulesen und diese rotieren zu lassen und zwar um 13 stellen.
Ich schreib mal die aufgabe:
Lesen Sie eine Zeichenkette ein. Jeder Buchstabe der Zeichenkette soll nun dadurch
kodiert werden, dass Sie ihn um 13 Stellen verschieben (rotieren). Groß- und
Kleinschreibung sollen dabei nicht geändert werden.Mir fehlt eben der Ansatz, ich weiß also garnicht wie ich anfangen soll. Hat mir jemand eine hilfe?
-
http://de.wikipedia.org/wiki/ROT13
mit while loop ueber den string laufen, dabei alle grossbuchstaben minus 'A', dann +13, dann %26, dann plus 'A'. genauso fuer kleinbuchstaben mit 'a'.
-
Hi danke aber die Definition habe ich bereits in der Aufgabe verstanden. Mir geht es mehr darum zu wissen wie ich den Code schreiben, bzw. anfangen soll. Ich lerne erst seit 3 Wochen C in der Uni und steig noch nicht so ganz durch,
-
unten auf der wiki seite steht doch der entscheidende link zur implementierung in verschiedenen programmiersprachen...
-
Ok, Dabke das bringt mich weiter!
-
hi,
trotz der Hilfe stecke ich jetzt an einem Punkt der mich zur Weißglut bringt.
hier mal der Code:
#include <stdio.h> int main() { char eingabe, ausgabe; printf("Geben sie den Satz ein, den sie verschluesseln wollen: \n"); while((eingabe=getchar()) != EOF) { if (eingabe >= 'a' && eingabe <= 'z') { putchar(eingabe + 13 ) ; } else { putchar (eingabe); } } return 0; }
das problem ist ja das er nicht nur die zeichen von a -z nimmt sondern einfach 13 dazuaddiert und somit weitergeht als das Alphabet. Wie kann ich ihm den sagen das nach z wieder a kommt?
-
if(islower(z)) putchar((z-'a'+13)%26+'a');
(wenn du nicht verstehst, was das bedeutet -> c.rackwitz hat's schonmal ausführlich geschrieben)
-
"islower" ist bei mir nicht deklariert, welche Bibliothek brauch ich da?
-
Hi sry,
hat sich erledigt, selber denken macht schlau
so gehts:
#include <stdio.h> int main() { char eingabe, ausgabe; printf("Geben sie den Satz ein, den sie verschluesseln wollen: \n"); while((eingabe=getchar()) != EOF) { if (eingabe >= 'a' && eingabe <= 'z') { putchar((eingabe - 'a' + 13) % 26 + 'a'); } else if(eingabe >= 'A' && eingabe <= 'Z') { putchar((eingabe - 'A' + 13) % 26 + 'A'); } else { putchar (eingabe); } } return 0; }
aber trotzdem danke