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


Anmelden zum Antworten