Advertisement
Guest User

Untitled

a guest
Jan 28th, 2015
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.50 KB | None | 0 0
  1. 'fragenbeispiel:
  2. 'Do you even lift?;Ja;Nein;Vielleicht;Maybe;0
  3. 'Was ist die wichtigste Zahl?;0815;4711;42;7;2
  4.  
  5.  
  6.  
  7. DIM wahl AS INTEGER, A AS Integer, B AS INTEGER, SUMME AS INTEGER, QUESTIONS AS STRING
  8. Declare Function StringSplit( _
  9. Liste As String, _ 'Liste enthält den String mit den Trennern
  10. Trenner As String, _ ' Trenner ist ein String mit den Trennzeichen
  11. SplitArray() As String, _ 'in diesem Array werden die Teilstrings zurückgegeben
  12. LeerZeilen As Byte=1 _ 'Leerzeilenfilter True=behalten, False=nicht übernehmen
  13. ) As Integer 'Rückgabewert ist die Anzahl der Zeilen-1
  14.  
  15. cls
  16.  
  17. SchleifenAusgang:
  18.  
  19. 'Input "Was möchten Sie tun?"'
  20.  
  21. wahl = 1
  22. WHILE ( wahl <> 0 )
  23. Print
  24. Print
  25. Print "Fragemodus"
  26. Color 6
  27. Print "1) Beantworten"
  28. print "2) Erstellen"
  29. print "0) Ende"
  30.  
  31. print
  32. print
  33. INPUT "Deine Entscheidung (1, 2, 0): ", wahl 'Entscheidung abfragen
  34. if wahl = 1 then 'erste Möglichkeit'
  35. PRINT "Answer"
  36. 'ARRAY anlegen
  37. REDIM QUESTIONS(1) AS STRING
  38. 'Datei auslesen & verarbeiten
  39. DIM fileHandle AS INTEGER
  40. DIM lineBuffer AS STRING
  41. DIM lineCount AS INTEGER
  42. fileHandle = FREEFILE
  43. OPEN "C:\fragen.txt" FOR INPUT AS #fileHandle
  44. lineCount = -1
  45. DO
  46. DIM SingleQuestion(6) AS STRING
  47.  
  48. lineCount = lineCount +1
  49.  
  50. REDIM PRESERVE QUESTIONS(lineCount)
  51. ' LESE AKTUELLE ZEILE -> Speicher in lineBuffer
  52. LINE INPUT #fileHandle, lineBuffer
  53.  
  54.  
  55. QUESTIONS(lineCount) = lineBuffer
  56.  
  57. LOOP UNTIL EOF(fileHandle)
  58. CLOSE #fileHandle
  59. 'Question-Array:
  60. '0 = Frage
  61. '1,2,3,4 = AntwortmöglichkeitenCount) = SingleQuestion
  62. '5 = Antwortindex (richtig)
  63. DIM upperlimit AS INTEGER
  64. upperlimit = 5
  65. IF ( upperlimit > UBOUND(QUESTIONS) ) THEN
  66. upperlimit = UBOUND(QUESTIONS)
  67. END IF
  68.  
  69.  
  70.  
  71. FOR index AS INTEGER = 0 TO upperlimit'Anzahl der Fragen
  72. DIM SplitLine() AS STRING
  73. DIM antwort AS String
  74. DIM randomIndex AS INTEGER
  75. DIM randomQuestion AS STRING
  76.  
  77. randomIndex = INT( RND * (UBOUND(QUESTIONS)+1))
  78. randomQuestion = Questions(randomIndex)
  79.  
  80.  
  81. StringSplit(randomQuestion, ";", SplitLine(), 0)
  82.  
  83. Print (SplitLine(0))
  84.  
  85. Print ("Antwort (0): " + SplitLine(1))
  86. Print ("Antwort (1): " + SplitLine(2))
  87. Print ("Antwort (2): " + SplitLine(3))
  88. Print ("Antwort (3): " + SplitLine(4))
  89.  
  90. INPUT "Deine Antwort(0, 1, 2, 3): ", antwort 'Entscheidung abfragen
  91.  
  92. IF ( antwort = SplitLine(5)) THEN
  93. Print ( "Antwort richtig!")
  94. ELSE
  95. Print ( "Antwort falsch!")
  96. END IF
  97. NEXT
  98. ELSE
  99. IF wahl = 2 THEN
  100. DIM newQuestion AS STRING
  101. DIM answerA AS STRING
  102. DIM answerB AS STRING
  103. DIM answerC AS STRING
  104. DIM answerD AS STRING
  105. DIM answerIndex AS STRING
  106. PRINT "CREATE"
  107.  
  108. Input "Neue Frage eingeben:", newQuestion
  109. Input "Antwortmöglichkeit A:", answerA
  110. Input "Antwortmöglichkeit B:", answerB
  111. Input "Antwortmöglichkeit C:", answerC
  112. Input "Antwortmöglichkeit D:", answerD
  113.  
  114. Input "Welches ist die richtige Antwort? (0-3)", answerIndex
  115.  
  116. REDIM QUESTIONS(1) AS STRING
  117. 'Datei auslesen & verarbeiten
  118. DIM fileHandle AS INTEGER
  119. DIM lineBuffer AS STRING
  120. DIM lineCount AS INTEGER
  121. fileHandle = FREEFILE
  122. OPEN "C:\fragen.txt" FOR INPUT AS #fileHandle
  123. lineCount = -1
  124. DO
  125. DIM SingleQuestion(6) AS STRING
  126.  
  127. lineCount = lineCount +1
  128.  
  129. REDIM PRESERVE QUESTIONS(lineCount)
  130. ' LESE AKTUELLE ZEILE -> Speicher in lineBuffer
  131. LINE INPUT #fileHandle, lineBuffer
  132.  
  133.  
  134. QUESTIONS(lineCount) = lineBuffer
  135.  
  136. LOOP UNTIL EOF(fileHandle)
  137. CLOSE #fileHandle
  138.  
  139.  
  140. REDIM PRESERVE QUESTIONS(lineCount+1)
  141. Questions(lineCount+1) = (newQuestion + ";" + answerA + ";" + answerB + ";" + answerC + ";" + answerD + ";" + answerIndex)
  142. OPEN "C:\fragen.txt" FOR OUTPUT AS #fileHandle
  143. FOR i AS INTEGER = 0 TO (lineCount+1)
  144. PRINT #fileHandle,Questions(i)
  145. NEXT
  146. CLOSE #fileHandle
  147. END IF
  148. END IF
  149.  
  150. WEND
  151.  
  152.  
  153.  
  154. 'ENTNOMMEN AUS http://www.freebasic-portal.de/code-beispiele/string-funktionen/stringsplit-83.html
  155.  
  156. Function StringSplit( _
  157. Liste As String, _
  158. Trenner As String, _
  159. SplitArray() As String, _
  160. LeerZeilen As Byte=1 _
  161. ) As Integer
  162. Var Vorige=1, Gefunden=0, LenTren=Len(Trenner), Index=0, s="" ' der Var-Befehl funktioniert^^
  163. If Len(Liste)+LenTren=0 Then Return -1 'beide Längen=0? nix zu tun, fertig..
  164. Erase SplitArray 'alte Ergebnisse löschen
  165. Do While Instr(Vorige, Liste, Trenner) 'hier prüfen, kann ja sein, daß es Trenner nicht gibt
  166. Gefunden=Instr(Vorige, Liste, Trenner)
  167. ReDim Preserve SplitArray(Index) 'Preserve funktioniert mit 1-dimensionalen Arrays
  168. s=Mid(Liste, Vorige, Gefunden-Vorige) 'Teilstring von Vorige bis Gefunden..
  169. If s<>"" Then 'Keine Leerzeile?
  170. SplitArray(Index)=s 'Alles klar, übernehmen..
  171. Index+=1
  172. Else 'Ooops, Leerstring, weiterprüfen..
  173. If LeerZeilen Then 'Wenn False, werden leere Zeilen ausgefiltert
  174. SplitArray(Index)=s 'Also gut, Leerzeile übernehmen..
  175. Index+=1
  176. End If
  177. End If
  178. Vorige=Gefunden+LenTren 'Vorige auf nächste Position
  179. Loop
  180. ReDim Preserve SplitArray(Index) 'Wenigstens Platz für EIN Element machen
  181. If Index Then 'Stringrest in SplitArray speichern..
  182. SplitArray(Index)=Mid(Liste, Vorige, Gefunden-Vorige)
  183. Else 'nein, Trenner ist nicht in Liste..
  184. SplitArray(Index)=Liste ' Liste in SplitArray speichern(Vorsicht:Speicherplatz!!)
  185. EndIf
  186. Return Index 'UBound wäre hier ein unnötiger Funktionsaufruf..
  187. End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement