C# :: Aufgabe #67 :: Lösung #3
3 Lösungen

#67
Quiz mittels LINQ in einer Xml-Datei
Fortgeschrittener - C#
von Miako
- 17.09.2014 um 21:13 Uhr
Schreibe ein Quiz-Programm, welches seine Fragen und Antworten durch LINQ (XmlReader-Klasse ist tabu) aus einer Xml-Datei bezieht.
Die Xml-Datei soll frei erweiterbar sein, sofern ein vorgegebenes Schema eingehalten wird.
Das Programm soll die Xml-Datei auslesen und dem Benutzer die Fragen in eine zufällige Reinfolge ausgeben. Bereits verwendete Fragen sollen kein zweites mal an die Reihe kommen. Die Anzahl der möglichen Antworten bleibt euch überlassen. Natürlich soll geprüft werden, ob die Antwort des Benutzers korrekt ist. Zu guter Schluss soll die korrekte Antwort in der Xml-Datei angegeben werden können.
Viel Spaß beim Planen und schreiben. Ich freue mich auf eure Fragen und Lösungen!
Die Xml-Datei soll frei erweiterbar sein, sofern ein vorgegebenes Schema eingehalten wird.
Das Programm soll die Xml-Datei auslesen und dem Benutzer die Fragen in eine zufällige Reinfolge ausgeben. Bereits verwendete Fragen sollen kein zweites mal an die Reihe kommen. Die Anzahl der möglichen Antworten bleibt euch überlassen. Natürlich soll geprüft werden, ob die Antwort des Benutzers korrekt ist. Zu guter Schluss soll die korrekte Antwort in der Xml-Datei angegeben werden können.
Zitat:
Tipps und Hinweise
Am besten benutzt ihr für das Einlesen der Fragen und Antworten, sowie das Entfernen beantworteter Fragen ein Array, oder eine Liste.
Zum bestimmen der korrekten Antwort eignet sich ein Attribut für die jeweiligen Antwort in der Xml-Datei.
Viel Spaß beim Planen und schreiben. Ich freue mich auf eure Fragen und Lösungen!
#3

von stcalvin (970 Punkte)
- 18.05.2018 um 10:30 Uhr
XML:
XML-Code
Code:
C#-Code

<?xml version="1.0" encoding="utf-8" ?> <Quiz> <Fragen> <Frage> <Fragestellung>Wie schwer werden Elefanten? (in KG)</Fragestellung> <Antworten> <Antwort>6000</Antwort> <Antwort>schwer</Antwort> </Antworten> </Frage> <Frage> <Fragestellung>Welche Farbe hat eine Käse?</Fragestellung> <Antworten> <Antwort>Gelb</Antwort> <Antwort>manchmal auch braun</Antwort> </Antworten> </Frage> <Frage> <Fragestellung>Wie groß werden Bäume?</Fragestellung> <Antworten> <Antwort>groß</Antwort> <Antwort>ein paar Meter</Antwort> </Antworten> </Frage> <Frage> <Fragestellung>Wieviele Fliegen fliegen wenn Fliegen fliegen?</Fragestellung> <Antworten> <Antwort>10</Antwort> <Antwort>10000</Antwort> <Antowrt>237537853582</Antowrt> </Antworten> </Frage> <Frage> <Fragestellung>Was machen Sachen?</Fragestellung> <Antworten> <Antwort>Sachen</Antwort> </Antworten> </Frage> <Frage> <Fragestellung>Wie geht es dir?</Fragestellung> <Antworten> <Antwort>Gut</Antwort> </Antworten> </Frage> <Frage> <Fragestellung>Wieviele Würste braucht man um glücklich zu sein?</Fragestellung> <Antworten> <Antwort>17</Antwort> </Antworten> </Frage> <Frage> <Fragestellung>Wasabi</Fragestellung> <Antworten> <Antwort>Ja</Antwort> </Antworten> </Frage> </Fragen> </Quiz>
Code:

static void XML_Auslesen_LINQ() { string path = @"C:\Users\cklein\source\repos\TrainYourProgrammer\TrainYourProgrammer\XMLFile1.xml", answer; Random rnd = new Random(); int random; List<string> listQuestions = new List<string>(), listAnswers = new List<string>(); XDocument xDoc = XDocument.Load(path); var queryQuestions = from qst in xDoc.Descendants("Fragestellung") select qst.Value; listQuestions = queryQuestions.ToList(); while (listQuestions.Count > 0) { random = rnd.Next(0, listQuestions.Count); Console.Write(listQuestions[random] + " "); answer = Console.ReadLine(); var queryAnswers = from answ in xDoc.Descendants("Antworten").Descendants() where answ.Parent.Parent.Element("Fragestellung").Value == listQuestions[random] select answ.Value; listAnswers = queryAnswers.ToList(); if (listAnswers.Contains(answer, StringComparer.OrdinalIgnoreCase)) { Console.WriteLine("Die Antwort ist korrekt."); } else { Console.WriteLine("Die Antwort war.. falsch!"); } Console.WriteLine("Korrekte Antwortmöglichkeiten: " + String.Join(", ", listAnswers.ToArray())); Console.WriteLine(); listQuestions.Remove(listQuestions[random]); } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1