Permutation mit einlesbaren Variablen



  • Naja der Gyazo link ist die Aufgabe und im pastebin ist dass, was ich bis jetzt Programmiert habe. Da alles andere Falsch war hab ich es auf das wo ich weiß, dass es richtig ist minimiert.

    Gibts irgendwelche Screenshot Seiten denen man hier mehr Vertraut?



  • Naja. Evtl. haben ja noch mehr Komilitonen die Aufgabe - und die finden diesen Thread nie.
    Das ist also Deine Aufgabe (Fehler sind Tesseract geschuldet...)
    (C)Prof. Dr. Andreas Claßen:

    Offline—Aufgabe 05—1 (INF & MCD):
    Permutationen (Vertauschungen) von beliebigen Zahlen (geübtes C++ Konstrukt: Schleifen, Arrays)
    Schreiben Sie ein C++ Programm, welches vier beliebige ganze Zahlen
    einliest und alle Permutationen (Vertauschungen) dieser Zahlen ausgibt.
    Dies ist eine Erweiterung der Aufgabe 04-l: Diesmal mit beliebigen
    zahlen, nicht nur den Zahlen : -4. Dies vekompliziert die Lösung ggf.
    
    Hinweise:
    Die Ausgaben des Programms sollen so formatiert sein, das zwischen
    den Zahlen jeweils ein Komma gefolgt von einem Leerzeichen steht.
    Die Reihenfolge der ausgegebenen Lösungen muss (leider) mit der
    Reihenfolge der Ausgaben im Testiauf übereinstimmen.
    Es ist allerdings die Lösungsreihenfolge. die sich beim üblichen Lösungsansatz sowieso ergeben sollte.
    Sollte zwei oder mehr der eingegebenen Zahlen gleich sein,
    so werden bestimmte Zahlenkombinationenen mehrfach ausgegeben, da sie sich genauso durch Vertauschung dieser Zahlen ergeben.
    

    Und das ist Dein bisheriger Code:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    
            int my_array[4] = {};
    
            cout << "Bitte geben Sie die 1. Zahl ein: ? ";
            cin >> my_array[0];
            cout << "Bitte geben Sie die 2. Zahl ein: ? ";
            cin >> my_array[1];
            cout << "Bitte geben Sie die 3. Zahl ein: ? ";
            cin >> my_array[2];
            cout << "Bitte geben Sie die 4. Zahl ein: ? ";
            cin >> my_array[3];
    
            system("PAUSE");
            return 0;
    
    }
    

    Ich sehe da jetzt keinen richtigen Lösungsansatz.
    Alles vorkauen wil ich auch nicht. Vielleicht ist der Thread hier für dich interessant: https://www.c-plusplus.net/forum/335212. Insbesondere Werners Bemerkung.

    Im Gegensatz zu dem armen Tropf dort hast Du noch den Vorteil, dass Du C++ programmieren darfst...inklusive Standard Bibliothek.



  • Naja habe halt alles schon versucht, 4 for Schleifen indem ich die Arrays alle unterschiedlich verarbeite, mir fehlt nur der richtige Ansatz



  • Am einfachsten wäre es, Du würdest std::next_permutation nehmen.
    Damit wäre alles erledigt.

    Danach gibt es diverse Algorithmen, die Du implementieren könntest...

    Und zuguterletzt Die Möglichkeit einfach alle Kombinationen zu erzeugen und nur die Permutation auszugeben. Also z.B. von 12
    11 (nicht ausgeben! (weil erste und zweite Zahl gleich))
    12
    21
    22 (nicht ausgeben! (weil erste und zweite Zahl gleich))



  • Ja das hab ich auch schon überall gelesen, allerdings dürfen wir das noch nicht benutzen weil wir es noch nicht gesehen haben



  • InvictusBlue schrieb:

    Ja das hab ich auch schon überall gelesen, allerdings dürfen wir das noch nicht benutzen weil wir es noch nicht gesehen haben

    Versuch die dritte Methode.
    Verallgemeiner dazu den Ansatz, den ich für die Permutationen von 12 gegeben habe auf abcd .



  • Mir fehlt irgendwie immer der Anfang der Schleife, also mit was ich Anfange, ob das jetzt ne for Schleife wird oder eine While Schleife... Komme einfach nicht drauf.

    Außerdem soll man nicht die Permutation einer ganzen Zahl darstellen sondern die Permutation von 4 verschiedenen vom Benutzer eingegebenen Zahlen



  • InvictusBlue schrieb:

    Mir fehlt irgendwie immer der Anfang der Schleife, also mit was ich Anfange, ob das jetzt ne for Schleife wird oder eine While Schleife... Komme einfach nicht drauf.

    Das sollte das geringste Problem sein. Da man mit einer while Schleife auch eine for Schleife nachbilden kann ist das kein schlechter Anfang. Wenn man am Ende merkt, dass man im Grunde eine for Schleife nachgebaut hat kann man das immer noch ändern.



  • Hab die Aufgabe 1. jetzt hinbekommen, war eigentlich ganz einfach..

    Jetzt bin ich allerdings bei Übung 2 und habe das Problem das ich meiner Meinung nach keinen Fehler gemacht habe, aber er trotzdem nicht das richtige ausgibt, was es noch schwerer macht den Fehler zu finden...

    http://pastebin.com/EZ5rZTyK

    Es soll der eingegebene Text mit Buchstaben überprüft werden, die auch vom Benutzer eingegeben werden. Dann soll ausgegeben werden das z.B "e" 3 mal darin vor kam.
    Für mich siehts aber irgendwie logisch aus 😕



  • Schon wieder Pastebin-Link statt hier zu schreiben!
    Ändere das bitte.



  • Irgendwie hast du eine komische Reihenfolge in der du deine Zeichen zählst. Statt einfach zu zählen wie häufig jedes der eingetippten Zeichen vorkommt nimmst du jedes Zeichen aus dem Text und prüfst ob es in den gesuchten Zeichen vorkommt. Wenn du es so lässt wie jetzt brauchst du pro gesuchtem Zeichen einen Zähler. Oder du baust eine Funktion die zählt wie häufig ein gesuchtes Zeichen vorkommt. Das machst du dann für jedes gesuchte Zeichen und bist fertig.


Anmelden zum Antworten