PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] Übungsaufgabe



Cr4ckEye
02.01.2009, 08:51
Hier noch eine klassiker Aufgabe zum Knobeln und Zeitvertreib:

Schreibe ein Quiz im Wer Wird Millionär-Stil. D.h. es gibt eine Frage und 4 Antworten (A,B,C,D oder auch 1,2,3,4). Die Fragen kommen in zufälliger Reihenfolge. Es gibt einen Zähler der zählt wieviele richtige Antworten gegeben wurden, wieviele Fragen gestellt werden pro Runde ist freigestellt.
Je nach Wissensstand werden die Fragen & Antworten direkt in den Source eingegeben oder per Datei eingelesen.

Viel Spaß,

MfG

Easysurfer
02.01.2009, 08:53
Mit oder ohne GUI? ^^ Ohne wärs ja einfach :D

Cr4ckEye
02.01.2009, 09:00
Wie du dich in der Lage fühlst^^

Easysurfer
02.01.2009, 09:03
Gut, ich mach mich mal dran :D

Added after 50 minutes:

Fertig! Hier der Downloadlink. Anschaun müsst ihrs euch schon selbst ;-)

http://rapidshare.com/files/178958383/Release.rar
P.s. ihr müsst erst auf Start und dann die Fragen beantworten, ich war zu Faul die erst zu Hiden. Also erst unten links auf Start drücken^^

Kieg ich jetzt nen Keks?

-[RiDER]-
02.01.2009, 16:26
Hi :D

Mit oder ohne GUI?
Eine GUI hat überhaupt nichts mit der Aufgabe zu tun und verfehlt die essenzielle Schwierigkeit, die diese Übung stellen soll!
Wenn Du es zur Hauptaufgabe machst, Dir eine intuitive GUI auszudenken und zurechtzuklicken, hast Du die Aufgabe falsch verstanden, denn es geht darum, Programmierparadigmen zu entwickeln. Die GUI wäre ein sinnfreier Zusatz, im Rahmen dieser Übung aber völlig überflüssig.

Wenn Du in der Schule die Aufgabe bekommst, alle Aufgaben auf einem Blatt zu lösen und Du das tust, dann aus den Blättern aber noch wahnsinnig schwierige und komplexe Papierflieger baust, hast Du die Aufgaben zwar gelöst, Deiner Note werden die tollen Flieger aber nicht gerade zuträglich gewesen sein... ;)

GreetZ RiDER :D :D :D

Easysurfer
02.01.2009, 16:54
Logisch hätte ich das auch in der Console programmieren können... Wär aufs selbe hinaus gelaufen. Trotzdem danke für den Tipp^^ :D

Thunderstorm
02.01.2009, 22:52
So ich mache mich auch mal daran.
Hier schon mal der anfang Klick (http://ntg360.nt.ohost.de/C++/%dcbungen/)

P.s Achja wer meinen Ftp mit benutzen will so wie ich ihn nutze also zu source code usw anzugucken soll sich mal melden

-[RiDER]-
02.01.2009, 23:28
Hier schon mal der anfangKlick (http://ntg360.nt.ohost.de/C++/Übungen)
"Diese Seite ist leider nicht verfügbar."
(Tipp: Keine Umlaute in URLs)


P.s Achja wer meinen Ftp mit benutzen will so wie ich ihn nutze also zu source code usw anzugucken soll sich mal melden
Es gibt genügend Pastebins, denke ich.
Die bieten noch einiges mehr an, als nur bloßes Filelisting. Angefangen bei Syntaxhighlighting, über kollaborative Debuggung-Ergänzungen bis hin zu pasting per IRC und E-Mail, Passwortschutz oder diff-trees, also schon fast soviel, wie ein Versionsverwaltungstool für Kleinprojekte.
Aber vielen Dank für das Angebot.

GreetZ RiDER :D :D :D

Cr4ckEye
03.01.2009, 18:45
@Thunderstorm Schonmal ein Anfang, fehlen allerdings noch ein paar Elemente und ich würde dir raten gleich von Anfang an die Fragen "dynamischer" zu verwalten (string[][]).^^

@Easysurfer Den Keks bekommst du wenn du Merkel richtig schreibst und noch die Zähler & den zufall einbaust :-D ;-)

ich hab hier auch mal ne schnell-Lösung, Dateieinlesen fehlt allerdings noch^^
http://nopaste.free-hack.com/index.php?id=22933682cb

MfG

blackberry
05.01.2009, 18:58
Ok, dann poste ich mal meinen Versuch:

Überblick

Es werden Fragen von einer Datei eingelesen (Dateiformatspezifikation folgt) und anschließend über den mit srand(time(0)) initialisiert Pseudozufallszahlen-Generator rand() aus stdlib.h gemischt.

Anschließend werden bis zu 20 Fragen gestellt und das "Konto" bei jeder richtig beantworteten Frage um einen Schritt erhöht (Konto += 1,000,000 / Anzahl(Fragen)), sodass am Ende 1 Millionen auf den Konto sind.

Nach jeder Frage gibt es die Möglichkeit das Spiel zu beenden und mit dem Erspielten nach Hause zu gehen.
Beantwortet man eine Frage falsch, so wird das Konto auf 0 gesetzt und das Spiel beendet.

Weiterhin existiert ein kleines Kommandozeilenprogramm um neue Fragen hinzuzufügen.
Zudem habe ich auch noch ein kleines PHP-Skript geschrieben um das Programm mit Fragen aus einer "von Menschen lesbaren" Datei extrahiert - das ganze sieht wie folgt aus:

Frage 1 hier
@Option 1
Option 2
Option 3
Option 4
Frage 2 hier
Option 1
@Option 2
[...]
[...]
Das @-Zeichen vor einer Option bedeutet, dass diese Option die richtige Antwort ist.
Es können selbstverständlich auch mehr/weniger als 4 Optionen pro Frage gestellt werden, da dies aber nicht dem "Wer wird Millionär"-Stil entspricht habe ich solche Beispiele weggelassen...

Im Archiv befinden sich also folgende Dateien:
- die Sourcecodes (wwm.c, wwm.h, libwwm.c, libwwm.h, wwm_quizgen.c)
- eine Datei mit Fragen im "QUIZ"-Format (default.quiz)
- eine Datei mit Fragen im Text-Format (questions.txt)
- das PHP Skript für "wwm_quizgen" (parse_questions.php)
- die Komandozeilenausgabe vom Compilieren und Erstellen der "QUIZ"-Datei mit "wwm_quizgen" und "parse_questions.php" (output.txt)
- die Ubuntu Linux 8.04 binärdateien der Quellcodes (wwm, wwm_quizgen)

Das "QUIZ"-Dateiformat:

Wie man "libwwm.c" entnehmen kann ist das Dateiformat wie folgt ausgebaut:
Ein Datei-Header existiert nicht, in der Datei befinden sich lediglich die einzelnen Fragen mit Optionen.
Die Datei besteht also aus einer Aneinanderreihung von beliebig vielen Fragen.
Jede Frage is wie folgt abgespeichert:

(unsigned int) Antwort
(unsigned int) Länge der Frage
(char [Länge]) Frage
(unsigned int) Anzahl der Optionen
(unsigned int) Länge der Option 1
(char [Länge]) Option 1
(unsigned int) Länge der Option 2
(char [Länge]) Option 2
[...]
(unsigned int) Länge der Option N
(char [Länge]) Option N

Download:

http://rapidshare.com/files/180112127/quiz_by_blackberry.tar.bz2.html


mfG. BlackBerry

Siken
05.01.2009, 19:01
Schöne Lösung.
Mehr fällt mir nicht ein ;)