Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

C++

Workshop – Lottozahlengenerator

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
In diesem Workshop sehen Sie die Umsetzung des Lottozahlengenerators als Kommandozeilen-Programm. Lernen Sie den Umgang mit der Zufallszahlentabelle und der Funktion "qsort".

Transkript

In unserem kleine Workshop sollen Sie jetzt mal einen Lottozahlengenerator programmieren. Jetzt soll 6 aus 49 das System spielen, also 6 Lottozahlen aus dem gegeben Bereich 1 und 49. Klingt dann recht harmlos, klingt so, als ob man da am besten eine Render-Funktion verwendet. Das ist in der Tat schon mal ein Schritt in die richtige Richtung. Also wären wir hier mal den Render-Generator initialisieren, unsign, das mache ich hier mit einem kleinen Trick, sonst liefert dann nämlich immer die gleichen Lottozahlen, und sollen Sie die Zahlen ein wirklich Mal verwenden, denn tun es viele andere in unserem Programm hier auch mit Schreiben auch, machen wir das natürlich nicht. Soweit, so gut. Jetzt könnte ich in einer kleinen Schleife, ich mache einfach mal drauf los, und Sie können natürlich jederzeit hier unterbrechen und versuchen, selber weiter zu machen, die 6 Zahlen auszugeben. Das ist ja eigentlich soweit kein Drama, aber die Tücke kommt natürlich also von 0 bis 5, das sind dann 6 Zahlen, i++ unser Zähler, wir brauchen hier 6 Zahlen. Und jetzt könnte ich natürlich hier render in Zahlen ausgeben, aber so ganz leicht geht es natürlich nicht, denn der Render im Generator weißt gar nicht, welche Zahlen er vorher ausgegeben hat, und auf die Art und Weise könnten auch Duplikate herauskommen. Genau das wollen wir vermeiden. Wir möchten natürlich, dass jede Zahl nur einmal vorkommt. Und da muss ich jetzt schon ein bisschen mehr machen. Da brauche ich ein Array. Das machen wir hier gleich mal ein Array, indem ich mir die Zahlen, die ich bereits berechnet habe, merke. Und dieses Array initialisieren wir mit dem Wert -1, dann merken wir uns nämlich, dass die Zahl noch nicht vorgekommen ist. Und ich brauche hier gleich mal eine kleine Hilfsvariable, flg genannt, mit der ich da bisschen weiter vorwärtskomme. So, jetzt haben wir eine neue Zahl als Integer, und ich brauche jetzt eine while Schleife. Ich möchte jetzt eine neue Zahl berechnen, und zwar ich mache das mal hier sogenannte Top-Down-Entwicklung while (flg) ist, das flg sollen wir dann, flg habe ich das geschrieben, sagen, wenn ich neue Zahl habe, die noch nicht vorkommt, wenn das der Fall ist, dann gebe ich die lottozahlen von i nicht aus, aber ich setze den Wert erst mal hier auf neuezahl, ausgeben kann man das später. So, das ist schon mal ganz gut. Jetzt muss ich eigentlich noch diese do Schleife raus basteln und draus arbeiten. neuezahl ist erst mal sozusagen ein Versuch. rand, dann kann ich die Render-Funktion aufrufen. Modul 49 liefert mir einen Wert zwischen 0 und 49, und ich addiere einfach auch hier die Zahl 1 auf und bekommen dann einen Wert zwischen 1 und inklusiv 49. So, und jetzt mache ich einen großen Trick. flg ist false. Jetzt suche ich in unserem Lottozahlen-Feld, das muss man natürlich hier oben genauso schreiben wie unten lottozahlen, suche ich jetzt als Nächstes, ob die Zahl, die ich jetzt gerade berechnet habe, schon vorkommt. Und wenn nein, das ist prima, dann setze ich die flg auf true. Dann bin ich nämlich fertig mit der Suche. Also suche ich erst mal unser ganzes Feld ab, das mache ich jetzt mit der Variable j, j++, bis ich hier komplett durch bin. So ist es schon ganz gut. Und jetzt muss ich eigentlich hier drin nur noch prüfen if (lottozahlen[j] = neuezahl ) , dann habe ich verloren. Machen wir jetzt mal so rum, dann die flg = false, die Zahl kommt schon vor, ich brauche eine neue Zahl, mit break verlasse ich hier die Schleife. Das macht dann hier. Dann ist flg nämlich false, und die läuft oben wieder rein. Hier muss man noch aufpassen, da haben wir jetzt hier noch einen kleinen Fehler, das läuft nicht, das ist ok, werde nämlich nie auf "true" gesetzt, das müssen wir natürlich so rumbauen. Jetzt stimmt es! Also, flg wird auf false gesetzt am Anfang der Schleife, und wenn die Zahl schon vorkommt, setze ich flg auf true, und diese Schleife läuft, solange das flg true ist. Erst wenn die Zahlen nicht in Lottozahlen vorkommen. Das -1 ist ein kleiner Trick, damit ich das erreiche, dass es am Anfang auch funktioniert. Dann laufe ich hier raus, wenn es erfüllt ist, und setze neuzahl. Dann mache ich das Ganze so lange, bis ich alle 6 Zahlen erzeugt habe. Super! Jetzt können wir was endlich ausgeben, Am Schluss machen wir hier eine Vorschleife - i=0, und dann nehme ich eine kleine Optimierung praktisch durführen. Das zeige ich Ihnen, was das jetzt bewirkt. So jetzt machen wir erst mal cout, geben wir hier lottozahlen von i aus mit einem blank. Das will ich alles in einer Zeile haben, und cout endl. So, prima! Jetzt müsste es eigentlich übersetzungsfähig sein. Schauen wir mal. Man soll irgendwas eingebaut haben. Es geht doch ganz prima. Da habe ich schon meine Lottozahlen. Was fällt mir jetzt auf, sie sind ein bisschen durcheinander. Das ist natürlich unschön, wenn man hier ein Lottoschein ausfüllen will, sonst würde das funktionieren. Da brauche ich hier noch was Besonderes. Es gibt einen Befehl, den man im Stadard C schon hatte. Der heißt qsort, und den können wir jetzt mal hier verwenden. Das geht so. Da gebe ich das Array an Lottozahlen, dann gebe ich an, wie viel Elemente das Array hat, was ich gerne sortieren möchte. Dann muss ich die Größe des Elements im Array angeben. Und jetzt kommt was Fieses. Jetzt muss ich eine Funktion angeben, die Vergleichsfunktion, die muss ich aber erst noch definieren. Das Programm ist eigentlich recht generisch, dieses qsort arbeitet recht generisch. Damit kann man ich alles machen. Das kommt jetzt richtig tricky jetzt hier. Wir machen nämlich das mit einem Parameter. So, es ist in qsort definiert, void arg1 mit * ein Pointer auf einen konstanten void sozusagen auf einen generischen Datentyp, der eigentlich alles kann. Der liefert am Schluss gleich, kleiner oder größer. Das muss ich hier jetzt entsprechend einbauen. Wir brauchen einen ganz normalen nummerischen Vergleich, das reicht uns. Und jetzt müssen wir ein bisschen spicken beim Abschreiben. Das ist nämlich super tricky, wie man das macht. Das Argument ist bei uns ja ein Integer. Das wissen wir. Ich muss es also erst mal auf einen Integer-Pointer-Kasten und den Integer-Pointer, den ich dann gekastet habe, den derefereziere ich hier mit diesem Sternchen hier vorne, so dass ich an den Wert heran komme. Und das Ganze machen wir hier nochmal mit *arg2 jetzt muss ich mal noch die Klammern richtig zu machen. Dann müsste eigentlich alles funktionieren. Also, das ist die genereische Compare-Funktion, qsort, wie gesagt verlangt das so. Dann kann man vergleichen auch Strings und so weiter, kann man sich auf die Art und Weise schnell basteln. Und jetzt übersetze ich das mal, und Sie sehen das funktioniert. Wenn ich jetzt mal neu das Ganze wieder starte, dann kommen hier andere Werte raus und sind auch brav sortiert. Damit ist der erste einfache Lottozahlen-Generator hier als Textvariante komplettiert und fertig.

C++

Machen Sie sich mit den einfachen Grundlagen zu C++ vertraut und lernen Sie anhand zahlreicher Übungs- und Codebeispiele die Klassenkonzepte, Prozeduren und Funktionen kennen.

9 Std. 3 min (143 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Video-Training auf DVD mit Bonusmagazin

+ Tutorial to go: Mit Videos für iPod, iPhone & Co.

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!