Brauche Hilfe bei Pferderennen



  • @DocShoe ist geändert.



  • @MadCookie Entschuldigung das sollte kein 🖕🏿 sein, sondern ein 👍



  • @DocShoe Kannst du helfen ein richtig funktionierendes Programm zu schreiben?



  • Hallo @HorstMaster ,
    bevor Du Dich an einem Spiel versuchst, schau doch mal nach, was eine Funktion ist und warum es diese gibt.
    Man könnte nur mal zum Anfang die Anzeige von CASINO in eine Funktion auslagern; würde Deinen Sourcecode schon mal um einen hohen Faktor verkürzen und damit lesbarer machen.
    Dementsprechend könnte jedes Spiel angegangen werden.
    Später, wenn Du noch Interesse an Programmieren mit C++ hast, könntest Du Dich ggf. mit der objektorientierten Programmierung beschäftigen. C++ ist dafür gemacht.



    1. y ist nicht initialisiert, d.h. die Überprüfung auf 0 in Zeile 24 ist alleine schon Glücksspiel
    2. du solltest den RNG nur ein Mal initialisieren, im Moment tust du das mehrmals in der while-Schleife in Zeile 62. Und Zeile 526. Und vielleicht noch öfter, hab nicht drauf geachtet
    3. die ganze Funktionalität in einer Funktion zu implementieren ist... schlecht. Unterteil´ das Programm in verschiedene Aufgaben und lasse jede Aufgabe in einer Funktion lösen. Als Faustregel sagt man, dass eine Funktion nur in Ausnahmefällen länger als eine Bildschirmseite sein sollte.

    Edit:
    Ja, wir können dir helfen. Dann solltest du allerdings auch Initiative zeigen und auf Ratschläge hören. Der Weg von diesem Spaghetticode zu einem sauberen C++ Programm ist lang.
    C++ ist eine Multiparadigmen-Sprache, wenn du dich gegen einen objektorientierten Ansatz entscheidest ist das auch ok.



  • @HorstMaster

    Dein Code ist kein guter Programmierstil, da

    • deine main() Funktion über 800 Zeilen groß ist.
    • du eine Schachteltiefe von 8 hast.
    • du Funktionalitäten nicht in Klassen und Funktionen unterteilt hast.
    • dadurch deine main() Funktion eine eierlegende Wollmilchsau ist.
    • jede Menge Kommentare fehlen

    Und die Hauptfrage hast du nicht beantwortet: Was ist denn die Wahrscheinlichkeit der einzelnen Pferde?

    Oder möchtest du ein Pferderennen simulieren? So ein Pferd hat doch eine Menge von Eigenschaften welche starken Einfluss auf seine Siegchancen hat. Dadurch entsteht doch die Klasse der Favoriten, welche ein Rennen eher gewinnt als ein Außenseiter. Die Chancen auf einen Sieg eines Pferdes sind also nicht gleichverteilt, sondern eher normalverteilt (hust "Wiki ist dein Freund")



  • @DocShoe: y ist eine globale Variable, also (ohne explizite Initialisierung) mit dem Standardwert 0 initialisiert.

    Der Code erinnert mich an meine ersten BASIC-Programme, wo ich auch noch keine Subroutinen und Arrays kannte.



  • @Th69 sagte in Brauche Hilfe bei Pferderennen:

    @DocShoe: y ist eine globale Variable, also (ohne explizite Initialisierung) mit dem Standardwert 0 initialisiert.

    Der Code erinnert mich an meine ersten BASIC-Programme, wo ich auch noch keine Subroutinen und Arrays kannte.

    Puh, man lernt bei C++ echt nicht aus. Warum überrascht mich die Sprache immer wieder? Ich hab den Eindruck, dass das Kommittee trollt und sich heimlich drüber kaputtlacht... für jeden Mist gibt´s Sonderregeln und Ausnahmen.



  • @MadCookie
    Wie ich sehe, hast Du in der Zwischenzeit einen Deutsch-Kurs gemacht.
    Herzlichen Glückwunsch!



  • @Quiche-Lorraine Kannst du mir das zeigen wie ich aus der main-Funktion, dann auf die Blackjack-Funktion zugreife? Mein Lehrer hat uns halt beigebracht das man am besten alles ins Main Programm reinschreiben soll.



  • Das ist auch schon in C so - und der technische Grund ist, daß die globalen Variablen im .data-Bereich der Anwendung abgelegt werden (und [sinnvollerweise] mit Nullen, bzw. genauer: einer Null-Bytefolge, initialisiert werden) und dieser wird dann beim Laden der Anwendung (d.h. beim Erzeugen des Prozesses) in den Hauptspeicher gemappt, s.a. PE-Format: Special Sections oder als Überblick Section Names.

    Für andere Executable/Object-Formate gilt ähnliches.

    Lokale Variablen dagegen werden ja (üblicherweise) auf dem Stack abgelegt und wenn nicht initialisiert, einfach der Stackpointer verändert (so daß dann ein "zufälliger"-Wert dort drin steht).

    Edit:
    @HorstMaster: s. z.B. C++-Programmierung/ Weitere Grundelemente/ Prozeduren und Funktionen (Stichwort: Aufruf).
    So schlecht kann kein Programmierer-Lehrer sein!?! Kann es sein, daß du das eher mißverstanden hast? Alle Funktionen müssen (zumindestens indirekt) über die main-Funktion aufgerufen werden, ansonsten werden sie niemals ausgeführt.


Anmelden zum Antworten