Ein Lottoprogramm für das Studium

Moinsen,

ich studiere Medizintechnik und hab in meinem Programmierenlabor die Aufgabe ein „Lottoprogramm zu schreiben“. Fragt bloß nicht warum!
Da gibt es aber leider ein Problem ich hab absolut keine Ahnung von Programmieren und leider auch keine Zeit dafür. Deshalb wollte ich fragen ob es unter euch einen Begeisterten Programmiere gibt der Bock hätte das für mich zu machen.
Ich weiss, dass es ziemlich naiv klingt, aber fragen kostet ja nichts.
Die Aufgabenstellung ist ziemlich komplex und ich würde sie dem/der jenigem/n dann auch zukommen lassen.

Danke schon einmal im Vorraus

MFG
Martin

Moin, was genau soll das Lottoprogramm denn können? In welcher Sprache soll es programmiert sein, oder ist es egal?

mfg

auch in Perl? Re:Ein Lottoprogramm für das Studium
Hallo,

wenn es auch in Perl geht, dann findest Du bei http://www.baseportal.de eine Programmierung. Einfach kostenlos anmelden und in die Bibliothek gehen…

hier ist schon die Beispielseite
http://baseportal.de/cgi-bin/baseportal.pl?htx=/iqws…

Na ja, so einfach mal was vorzeigen, wovon man keine Ahnung hat???

Olaf

Hallo Martin,

ich studiere Medizintechnik und hab in meinem
Programmierenlabor die Aufgabe ein „Lottoprogramm zu
schreiben“. Fragt bloß nicht warum!
Da gibt es aber leider ein Problem ich hab absolut keine
Ahnung von Programmieren und leider auch keine Zeit dafür.
Deshalb wollte ich fragen ob es unter euch einen Begeisterten
Programmiere gibt der Bock hätte das für mich zu machen.
Ich weiss, dass es ziemlich naiv klingt, aber fragen kostet ja
nichts.

Wenn du Pech hast fragt dich dann der Prof nach den Details und warum du das so und so gelöst hast. Spätestens zu diesem Zeitpunkt fliegst du dann auf.

Die Aufgabenstellung ist ziemlich komplex und ich würde sie
dem/der jenigem/n dann auch zukommen lassen.

Bekommt derjenige dann deinen Abschluss ???

Hallo Martin

ich studiere Medizintechnik und hab in meinem
Programmierenlabor die Aufgabe ein „Lottoprogramm zu
schreiben“. Fragt bloß nicht warum!
Da gibt es aber leider ein Problem ich hab absolut keine
Ahnung von Programmieren und leider auch keine Zeit dafür.
Deshalb wollte ich fragen ob es unter euch einen Begeisterten
Programmiere gibt der Bock hätte das für mich zu machen.
Ich weiss, dass es ziemlich naiv klingt, aber fragen kostet ja
nichts.
Die Aufgabenstellung ist ziemlich komplex und ich würde sie
dem/der jenigem/n dann auch zukommen lassen.

Ich denke, das bringt rein gar nichts. Da würde ich
eher dem Prof gestehen, dass ich es nicht kann.

Ich schreib Dir unten mal ein Lotto-Programm (in Perl),
aber was nützt es Dir, wenn Du nicht eine Zeile
erklären kannst.

Du wirst Dich wohl hinsetzen müssen :wink:

Grüße

CMБ
(6aus49.pl):

#!/usr/bin/perl
 use List::Util qw(shuffle);
 use List::MoreUtils qw(uniq);
 sub Input { print @\_, "\n\> "; $text = ; $text }
 
 my (@zieh, @tipp, $text, %richtig, $treffer);
 
 $| = 1; print "Das ist 6 aus 49!\n";
 $text = Input 'Bitte 6 Lottozahlen hintereinander eingeben';

 @tipp = sort {$a$b} $text =~ /(\d+)/g if defined $text;
 uniq(@tipp) == 6 or die "Oha! 6 Zahlen brauchen wir (@tipp)!\n";
 
 @zieh = sort {$a$b} ((shuffle 1..49)[0..5]); 

 for (@zieh, @tipp) { $richtig{$\_}++ };
 $treffer = scalar grep{ $richtig{$\_} \> 1} keys %richtig;
 
 print "\nZiehung:\t @zieh \nIhr Tipp:\t @tipp \n";
 print "\nSie haben $treffer Richtige!\n";

Hallo Olaf

wenn es auch in Perl geht,

Perl-Golf am Lotto-Programm!
Hier im Forum.
Das wär doch was :wink:)

(Wir müssten nur die genauen Anforderungen kennen.)

Grüße

CMБ

Moin, was genau soll das Lottoprogramm denn können? In welcher
Sprache soll es programmiert sein, oder ist es egal?

mfg

Also das Programm soll in „C“ geschrieben sein und es geht nicht darum 6 Zahlen aus einem Pool von 49 zu ziehen, dass hab ich nämlich schon hinbekommen. Die Aufgabenstellung is wie gesagt komplex. Der zweite teil, um den es geht, ist eher ein Statistikteil und zur zur Fehlererkennung einer Lottoschein Datei*.

Hier mal die Aufagebstellung

ABGEGEBENE LOTTOSCHEINE AUSWERTEN

Erstelllen sie ein Programm zur Auswertung abgegebener Lottoscheine.
Folgende Fiúnktionen sollen erfüllt werden:

  1. bei fehlerhaftem Aufruf des Programms automatisch ein Bedienungshinweis ausgeben
  2. sieben Zahlen vom Anwender abfragen (sechs+Superzahl)
  3. Nummer aller Scheine mit je drei, vier, fünf, sechs und fünf Treffern mit Superzahl aufsteigend geordnet in Datei oder auf Konsole (entsprechend Option) ausgeben
  4. optional alle 49 zahlen mit der jeweiligen Angabe der Anzahl ihres Auftretens ausgeben (=Statistk)
  5. Nummer aller ungültigen Scheine aufsteigend geordnet in Datei bzw. auf der Konsole (je nach Option) ausgeben
  6. während der Ausführung soll das Programm nach jedem Datensatz mit [ESC] abgebrochen werden können
  7. Taste [F1] nach jedem Datensatz: Bedienungshinweis und Tase [F12] nach jeden datensatz: Version und Enwickler
  8. wenn mehr als 500 dreier bzw. 100 vierer oder 500 fünfer bzw. 100 fünfer mit Zusatzzahl oder 30 sechser oder mehr als 200 ungültige Scheine auftrten -> entsprechende Meldung ausgeben und restliche Aufgaben nicht mehr durchführen

* die datei mit den Lottoscheinen liegt mir vor

Also ich weiss das, dass ziemlich viel ist aber ich bin für jede Art von Tipps oder kurze Programmstrukturen dankbar.

MFG Martin

Hallo Martin,

Also das Programm soll in „C“ geschrieben sein und es geht
nicht darum 6 Zahlen aus einem Pool von 49 zu ziehen, dass hab
ich nämlich schon hinbekommen. Die Aufgabenstellung is wie
gesagt komplex. Der zweite teil, um den es geht, ist eher ein
Statistikteil und zur zur Fehlererkennung einer Lottoschein
Datei*.

Also, es soll „6 aus 49“ plus Zusatzzahl sein, o.k.

Nach Deiner etwas konfusen (imho) Be-
schreibung sind es aber im wesentlichen
zwei Programme, von denen die Rede
ist oder sein könnte.

Das eine (A) ist „interaktiv“, fragt einen
Anwender ab und gibt entsprechende Meldungen
aus.

Das andere (B) ist ein „Filter“, den man
mit einem „Datenstrom“ (Lotto-Datei)
aufruft, welche verarbeitet wird - wonach
dann ein (konfigurierbares) Resultat
ausgegeben wird - völlig automatisch
und ohne weitere Interaktion.

Diese beiden Aspekte sollte man
vielleicht getrennt angehen, die
„Interaktion“ A ist jedoch ein
„Spezialfall“ von B mit nur einem
(oder wenigen) Datensatz(-en).

Daher würde ich mit dem Filter B
anfangen. In Deiner Liste wäre das:

\* Datei mit den Lottoscheinen einlesen,
3. Nummer aller Scheine mit je drei, vier, fünf, sechs und 
 fünf Treffern mit Superzahl aufsteigend geordnet in Datei 
 oder auf Konsole (entsprechend Option) ausgeben
4. optional alle 49 zahlen mit der jeweiligen Angabe der 
 Anzahl ihres Auftretens ausgeben (=Statistk)
5. Nummer aller ungültigen Scheine aufsteigend geordnet in 
 Datei bzw. auf der Konsole (je nach Option) ausgeben
8. wenn mehr als 500 dreier bzw. 100 vierer oder 500 fünfer 
 bzw. 100 fünfer mit Zusatzzahl oder 30 sechser oder mehr 
 als 200 ungültige Scheine auftrten -\> entsprechende Meldung 
 ausgeben und restliche Aufgaben nicht mehr durchführen

Kannst Du etwas zum Format der Lottodatei sagen? Vielleicht mal
10 Zeilen einfügen?

Sicher ist das in C kein allzugrosses Problem,
aber ich halte C für unzweckmässig bezüglich
solcher Aufgabenstellungen.

Geht es um „Lernen von C anhand des Problems“
oder wie ist die ganze Sache zu verstehen?

Ich schätze mal grob - ~300 Zeilen in C,
wogegen man in z.B. Perl (o.ä.) wahrschein-
lich mit 30 oder 40 Zeilen davonkäme (für
die Kombination von A und B in einem
Programm).

An sich ist das schon nicht uninteressant …

Noch eine Frage: in welchem Umfeld soll das
Programm laufen, Windows/Konsole, Unix …?

Welche Werkzeuge bzw. Compiler sollen verwendet werden?

Grüße

CM

Moin, was genau soll das Lottoprogramm denn können? In welcher
Sprache soll es programmiert sein, oder ist es egal?

mfg

Also das Programm soll in „C“ geschrieben sein und es geht
nicht darum 6 Zahlen aus einem Pool von 49 zu ziehen, dass hab
ich nämlich schon hinbekommen. Die Aufgabenstellung is wie
gesagt komplex. Der zweite teil, um den es geht, ist eher ein
Statistikteil und zur zur Fehlererkennung einer Lottoschein
Datei*.

Hier mal die Aufagebstellung

ABGEGEBENE LOTTOSCHEINE AUSWERTEN

Erstelllen sie ein Programm zur Auswertung abgegebener
Lottoscheine.
Folgende Fiúnktionen sollen erfüllt werden:

  1. bei fehlerhaftem Aufruf des Programms automatisch ein
    Bedienungshinweis ausgeben

wäre interessant zu wissen ob das in Linux oder Windows geschehen soll

  1. sieben Zahlen vom Anwender abfragen (sechs+Superzahl)

einfach einen Parser schreiben, der nur einen bestimmten Syntax nimmt und die Abfrage ist keine Problem
also bspw.
cin > eingegebenerText
jetzt parsen wir nach der ersten Zahl, die erste Zahl geht soweit bis bspw ein Leerzeichen oder ein Beistrich gefunden wird, dass muss von dir oder der Aufgabenstellung definiert werden
Am besten du überprüfst auch gleich ob das was du da gerade ausliest wirklich eine Zahl ist, weil wenn der erste Wert schon falsch ist, kannst gleich mit dem Parsen aufhören und die Eingabe als falsch identifizieren
Wenn die erste Zahl richtige ist, das ganze mit der 2ten, 3ten usw. Zahl

  1. Nummer aller Scheine mit je drei, vier, fünf, sechs und
    fünf Treffern mit Superzahl aufsteigend geordnet in Datei oder
    auf Konsole (entsprechend Option) ausgeben

beim Programmaufruf oder später also einfach einen Parameter fordern der die Ausgabe definiert auch kein großer Aufwand

  1. optional alle 49 zahlen mit der jeweiligen Angabe der
    Anzahl ihres Auftretens ausgeben (=Statistk)

um den Arbeitsspeicher hier nicht allzu sehr zu belasten bzw. um alle Daten immer zu speichern und nicht nur solange das Programm läuft würde ich mir das in ein File schreiben, weil wenn du’s nur irgendwo im Programm speicherst sind die Daten beim nächsten Start ja weg, wenn du’s nicht irgendwo „fest“ hinschreibst und dann aus dem File auslesen, bzw. einen Array/Vector was auch immer definieren und einfach +1 bei jedem vorkommen hinzurechnen
in der Art int lottozahlen[48];
initalisieren nicht vergessen!
for(int i=0; i entsprechende Meldung

ausgeben und restliche Aufgaben nicht mehr durchführen

Counter für alle 3er (c3)
Counter für alle 4er (c4)
Counter für alle 5er (c5)
Counter für alle 5er mit Zusatzzahl (c5zz) (ich weiß ist jetzt nicht schön gelöst mit dem zusätzlichen Counter, aber es is auch schon spät :wink:
Counter für alle 6er (c6)
Counter für Ungültige Scheine
While(c3=500)
Fehlermeldung für 3er
if(c4>=100)
Fehlermeldung für 4er
usw.

ProgrammNichtFertig brauchst als Abbruchsbedingung weil sonst hast im schlimmsten Fall eine Endlosschleife und der schlimmste Fall tritt immer ein! Da sollte drinnen stehen wie oft das ganze maximal ausgeführt werden soll.

* die datei mit den Lottoscheinen liegt mir vor

also einfach einlesen und schlauerweise gleich mal sortieren

Also ich weiss das, dass ziemlich viel ist aber ich bin für
jede Art von Tipps oder kurze Programmstrukturen dankbar.

MFG Martin