Funktionsweise Pseudocode



  • Hallo liebe Community,
    habe ein relativ dringliches Problem. Brüte schon viel zu lange über einen Pseudocode dessen Funktionsweise mir einfach nicht klar werden will.. Habe das Programm sogar schon in C++ geschrieben und und dort kann ich keine sinnvolle Funktion erkennen. Wir sollen das Programm anschließend optimieren doch weiß ich nicht wie ich das bewerkstelligen soll wenn ich nichtmal was es tut. Ev. kann mir hier jemand auf die richtige Spur bringen 🙂

    https://picload.org/image/wildgra/pseudocode.jpg

    EDIT: eigener Code entfernt da er von der Frage abzulenken scheint



  • Die Bedienung deiner ersten for Schleife ist eine Zuweisung.
    Starten Arrays im Pseudocode bei 0?
    Ist der Algorithmus korrekt? Ich sehe den angesprochenen Rückgabewert nicht.

    Ansonsten: deine Hausaufgaben musst du schon selber lösen und mit C++ hat deine eigentliche Frage nichts zu tun.



  • Wie auch geschrieben der Code ist mein Versuch herauszufinden was der Pseudocode macht.. ich habe es händisch versucht und nun auch als Programm ich erkenne in diesem Pseudocode keinen Sinn er gibt für mich nichts gescheites aus egal mit welchem Array man ihn füttert.. dieser Code ist ein winziger Teil einer Seminararbeit die ich soweit fertig habe nur dieser Code fehlt mir noch.. (deine Hausaufgaben musst du alleine machen) hilft mir hier nicht weiter. Ich möchte keine Ausarbeitung der Aufgabe sondern einen Tip (zb "dieser Pseudocode sortiert eine Zahlenfolge aufsteigend")

    "mit C++ hat deine eigentliche Frage nichts zu tun" ich habe kein Unterforum für Pseudocodes gefunden

    aber danke für die Antwort



  • Mit der while Schleife ist auch was nicht ganz koscher.
    Und von welchem Rückgabewert faselt die Aufgabenstellung?

    Ich finde übrigens, Du hättest Dir ruhig die zwei Minuten Zeit nehmen können, die Aufgabe hier in Textform zu präsentieren. Oder ist das Deiner Meinung nach zu viel verlangt?

    1. Aufgabe - Pseudocode schrieb:

    Gegeben sei der folgende Algorithmus in Pseudocode. Welche Funktionalität verbirgt sich dahinter und welche Bedeutung hat der zurückgelieferte Wert? Gibt es möglicherweise einen effizienteren Lösungsansatz zur Realisierung der Funktionalität? Wenn ja schreiben deinen Lösungsweg ebenfalls in geeignetem Pseudocode.

    function UNKNOWN(double* f, int n)
      for i=2 to n-1 do
        tmp=f[i]
        j=i
        while ((j>0) && (f[j-1]>tmp)) do
          f[j]=f[j-1]
          j=j+1
        end while
        f[j]=tmp
      end for
    end function
    


  • Stimmt Verzeihung. Habe als Rückgabe nun f angenommen und das einzige was ich dann erkennen kann ist dass der Algorithmus den größten Wert ab dem zweiten Eintrag heraussucht und den kompletten Array mit diesem Wert beschreibt. Das kann doch aber nicht des Rätzels Lösung sein.

    EDIT: zudem musste ich in der whileschleife noch eine Abbruchbedingung (j<=n) einfügen sonst verlässt er diese bei absteigenden Zahlenfolgen gar nicht.



  • Offensichtlich hältst du es nicht für nötig, über die Ratschläge auch nur nachzudenken. Dann noch viel Spaß ...



  • Wieso wird hier so patzig geantwortet. manni66 ich gehe mal davon aus du hast heute nen schlechten Tag. Das kann ja fast nicht wahr sein wie unfreundlich du bist.

    Ich muss mir hier echt nicht den Tag versauen lassen.. Suche mir woanders Hilfe



  • Mit relativ hoher Wahrscheinlichkeit sollte der Code wohl so aussehen:

    void unknown(double* f, int n) {
      for(int i=1; i<n; ++i) {
        int tmp=f[i];
        int j=i;
        while(j>0 && f[j-1]>tmp) {
          f[j]=f[j-1];
          --j;
        }
        f[j]=tmp;
      }
    }
    

    Ich denke daran kannst Du immer noch knabbern, was der Code macht. Und vorallem: wie er es macht.


Anmelden zum Antworten