Skytale in C


  • Mod

    Probier's doch mal aus.



  • Also ich habs mal so reingeschrieben!

    Ein Fehler meldet mein Compiler nicht, allerdings kommt nur das heraus was auch in der Main-Methode steht. Am Ende hängt sich dann mein cmd-Fenster auf 😮


  • Mod

    Dann war es wohl doch nicht so ganz richtig.



  • Und wie wäre es dann richtig 😉 ?


  • Mod

    Um das mal klar zu stellen: Im Moment nimmt niemand diesen Thread ernst. Du postest eine Hausaufgabe und erwartest, dass sie dir jemand löst, ohne dass du die geringste Eigeninitative zeigst. Dann schreibst du, dass du irgendwie, irgendwas gemacht hättest, aber es würde nicht funktionieren. Wir wissen weder, was du gemacht hast, noch was da dran nicht funktioniert. Nach allem, was wir wissen, hast du womöglich einfach gar nichts gemacht. Erwartest du wirklich ernsthaft Hilfe bei solch einer Vorgabe?

    Vielleicht hilft:
    Warum dir keiner helfen will
    oder
    Du brauchst Hilfe?
    oder
    Wie man Fragen richtig stellt

    Wir helfen gerne, aber du machst es einem zu schwer, dir zu helfen.



  • Im Moment werden wohl auch nicht mehr so viele wach sein 😉

    Das habe ich gemacht:

    #include <stdio.h>
    #include <string.h>
    void skytale(char * in, int n, char * out);
    void skytale(char * in, int n, char * out)
    {
        in = "abcd";
        skytale (in, 2, out);
        out = "acbd";
    }
    
    int main()
    
    {
    	char s1[1000] = "DIESERKLARTEXTISTJETZTZUVERSCHLUESSELN12",s2[1000],s3[1000];
        int n = 20, l = strlen(s1);
    	printf("%s\n", s1);
        printf("Laenge: %d\n", l);
    	skytale(s1, n, s2); // Chiffriere s1 zu s2 mit 8 Buchstaben pro Umdrehung
    	printf("%s\n", s2);
        if (l % n == 0) {
            skytale(s2, l / n , s3); // Chiffriere zurueck
            printf("%s\n", s3);
            if (!strcmp(s1, s3))
                printf("In diesem Fall OK\n");
            else
                printf("Problem!\n");
        }
    	system ("PAUSE");
        return 0;
    
    }
    


  • Beginner15 schrieb:

    void skytale(char * in, int n, char * out)
    {
        in = "abcd";
        skytale (in, 2, out);
        out = "acbd";
    }
    

    Eventuell haben wir uns mißverstanden?! Das ist unterirdisch...

    Da gahört natürlich ein Algorithmus hin, der das was Du jetzt im Kopf gemacht hast, um von "abcd" nach "acbd" zu kommen, durchführt. Und zwar für beliebige Zeichenketten in und beliebige n .

    Ich leg mich wieder hin...


  • Mod

    Furble Wurble schrieb:

    Beginner15 schrieb:

    void skytale(char * in, int n, char * out)
    {
        in = "abcd";
        skytale (in, 2, out);
        out = "acbd";
    }
    

    Eventuell haben wir uns mißverstanden?! Das ist unterirdisch...

    Sag nicht, dass du das nicht erwartet hättest.

    PS: Fragt sich eigentlich noch jemand anderes, ob in der Aufgabenstellung wirklich 6 Ausrufzeichen in Folge stehen? 🙂



  • SeppJ schrieb:

    Sag nicht, dass du das nicht erwartet hättest.

    Doch. Und wahrscheinlich schlief ich deswegen auch so miserabel... 😞


  • Mod

    Um mal produktiv zu sein: An den Threadersteller: Das war wohl nichts. Absolut unterirdisch, wie Furble Wurble richtig feststellte. Auf einem Niveau, wo man dir weder Hilfe noch eine Lösung geben könnte, du würdest nichts davon verstehen. Beziehungsweise du hast ja bereits die gegebene Hilfestellung nicht verstanden, denn

    in = "abcd"
    skytale(in, 2, out)
    out => "acbd
    

    sieht aus wie ein Beispiel, das ihr vorgegeben bekommen habt. Du warst nicht einmal in der Lage, zu erkennen, was dieses Beispiel bedeutet oder dass es nur ein Beispiel ist.

    Ich sehe derzeit drei Möglichkeiten, was für eine Art von Person du bist:

    a) Du verarscht uns bloß, indem du dich doof stellst. Kommt immerhin häufig genug vor, dass es ein eigenes Wort dafür gibt und auch in diesem Forum soll das schon vorgekommen sein. Daher nicht auszuschließen.

    b) Du hast dich das ganze Semester irgendwie durchgemogelt. Niemals irgendwie aufgepasst, alle Lösungen irgendwo abgeschrieben. Und nun bekommst du die verdiente Rechnung, weil du nirgendwo eine Lösung gefunden hast und dir ganz sicher niemand eine (ernstgemeinte) Komplettlösung geben wird.

    c) So wie b, aber mit dem Unterschied, dass du dich nun hinsetzt, die 4-6 Wochen verpassten Stoffs nachholt und dann in 3-4 Tagen entweder diese Aufgabe ganz leicht selber löst (denn sie ist mit der Vorgabe sehr, sehr einfach) oder aber zumindest in der Lage bist, brauchbare Fragen zu stellen oder Hilfestellungen insoweit verstehen kann, dass man das Gefühl hat, dass das Gegenüber schon einmal einen Computer gesehen und vielleicht sogar ein wenig programmiert hat.

    Zeig uns, was du bist.


Anmelden zum Antworten