 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Yawner
Anmeldungsdatum: 08.12.2006 Beiträge: 15
|
Verfasst am: 10.12.2006, 00:09 Titel: Vokabeltrainer |
|
|
hi erstmal
.. ganz neu .. aber net ganz neu in basic .. hab aber trotzdem gleich zu anfang, wie eigentlich jeder, ne frage.
ich hab mir einfach so als "einfaches" projekt vorgenommen, einen Vokabeltrainer zu schreiben.
Soll so aussehen, dass man zuerst gefragt wird ob man üben will oder neue vokabeln hinzufügen will.
zuerst zum hinzufügen:
man wird gefragt wieviele vokabeln man hinzufügen will.
damit wird ein 2 dimensionales array definiert, welches abgearbeitet wird in 2 for schleifen
daraufhin werden alle vokabeln und ihre deutschne übersetzungen in eine *.txt datei geschrieben. Die deutschen stehen dabei hinter den englischen
zum lernen:
basic öffnet die *.txt datei und soll von oben anfangen, das englische wort zu zeigen und man muss das richtige deutsche hinschreiben. Basic soll dann die nächste englische vokabel nehmen wenn die vorherige deutsche richtige war. sonst wird wiederholt (jaja simpel aber ich wills einfach).
PROBLEM: woran erkennt basic welche die 1. vokabel (indemfall die englische) ist und welche die 2. (deutsche). bzw. wie kann ich das machen?
ich hab natürlich das jtetz net so gemacht dass ich will dass ihr jett irgendnen quelcode gebt den ich kopier oder so und dann nachher das ganze programm hab, ich will nur wissen obs überhaupt geht und wenn ja wies gehen sollte.
apropos: kopieren? kann ich meinen basic text kopieren (jaja strg-einfg) und dann nachher hier einfügen? wär mir ne kleine (oder mittlere) arbeit erspart.
danke für hoffentlich kommende ratschläge
mft
Yawner |
|
Nach oben |
|
 |
Manuel

Anmeldungsdatum: 23.10.2004 Beiträge: 1271 Wohnort: Bayern
|
Verfasst am: 10.12.2006, 01:54 Titel: |
|
|
Wenn ich das richtig verstanden habe, soll QBasic quasi "verstehen", welches Wort das englische und welches das deutsche ist, welches im Wörterbuch hinzugefügt werden soll... Vom Denkanstoß her müsste es eigentlich ausreichen, wenn VOR der Eingabe (z. B. durch ein 'PRINT "Bitte das deutsche Wort eingeben, welches hinzugefuegt werden soll"') geklärt wird, welcher Begriff im Vokabeltrainier hinzugefügt werden soll.
Ansonsten könnte man doch einfach mit einer "Zwischenvariable" kurzzeitig festhalten, ob gerade ein deutsches oder ein englisches Wort abgefragt wird, und auf die Variable dementsprechend reagieren.
Sorry, falls ich das Problem nicht ganz verstanden habe  _________________ DL Walk (Denkspiel) | DL Malek (Denkspiel) | DL Warrior (ASCII-Adventure) | DL Sokodos (Sokoban-Klon)
---
www.astorek.de.vu |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 10.12.2006, 11:17 Titel: Re: Vokabeltrainer |
|
|
Yawner hat Folgendes geschrieben: | ..zuerst zum hinzufügen:
man wird gefragt wieviele vokabeln man hinzufügen will.. | Warum?
Wenn der Benutzer die Enter-Taste drückt(also einen Leer-String eingibt) ist doch klar, daß keine Eingaben mehr folgen..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Yawner
Anmeldungsdatum: 08.12.2006 Beiträge: 15
|
Verfasst am: 10.12.2006, 15:44 Titel: |
|
|
@ytwinky
naja aber wenn ich die zahl weiß, kann ich nen array definieren ,womit das meiner meinung einfacher ist.
@Manuel
hmm so will ich es machen .. vollkommen richtig erkannt.
das problem ist halt dass ich nicht weiß ich das machen soll
ob ich dann nachher das in meinre textdatei so haben will :
1"Hallo"2"Hello"
1"du"2"you"
...
...
oder eben so
1"Hallo"
2"Hello"
1"du"
2"you"
bzw. wie ich dass dann nacheinander ausles .. wie geht das?
ich würde ja meinen code reinkopieren aber das jetzt alles abzurschreiben ....
mfg
Yawner
danke für die antworten _________________ meine shift-taste ist nicht kaputt |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 10.12.2006, 17:06 Titel: |
|
|
also:
dein problem:
mit
Code: | Print #1, deutscheBedeutung$;",";englischeBedeutung$ |
kannst dus dann einfach mit Code: | input #1, deutsch$,englisch$ |
einlesen
statt print geht auch write... (write setzt alles noch in ""gänsefüßchen)
mit dem abschreiben:
in qb:
datei --> speichern --> als text speichern
in windoof: start-->ausführen--> "notepad" eingeben
im notepad: datei --> öffnen --> unter dateiname "*.bas" eigeben--> enter drücken--> dein prog öffnen-->STRG+A-->STRG+C
im forum: STRG+V
fertig... (gaanz ausführlich)
oder kurz:
als text speichern, in den editor laden, alles markieren,kopieren und ins forum einfügen
achja: code tags nicht vergessen  _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
Elvis

Anmeldungsdatum: 01.06.2006 Beiträge: 818 Wohnort: Deutschland, BW
|
Verfasst am: 10.12.2006, 17:44 Titel: |
|
|
Also ich hab' auch mal so ein Programm geschrieben...
Da hab ich einfach die Vokabeln in eine Datei geschrieben,
und zwischen Deutsch und Englisch eine Leerzeile.
Also so:
Vokabeldatei hat Folgendes geschrieben: |
Deutsch
Englisch (Bedeutung1)
Englisch (Bedeutung2)
Deutsch
...
|
Grüße, Elvis _________________ Geforce 7300GT (256MB GDDR3, Gainward) -- 2x 512MB (DDR2 800, MDT) -- AMD Athlon64 X2 EE 3800+ -- Asrock ALiveNF5-eSATA2+ |
|
Nach oben |
|
 |
Yawner
Anmeldungsdatum: 08.12.2006 Beiträge: 15
|
Verfasst am: 10.12.2006, 19:18 Titel: |
|
|
Code: | anfang:
zahler = 0
CLS
LOCATE 2, 25
PRINT "--*--*--*--*--*--*--*--*--*-"
LOCATE 3, 25
PRINT "Willkommen im Vokabeltrainer"
LOCATE 4, 25
PRINT "__-__-__-__-__-__-__-__-__-_"
PRINT
PRINT
PRINT "Dr?cken Sie 'a' um sich zu testen!"
PRINT "Dr?cken Sie 'b' um einen neuen Vokabelblock hinzuzuf?gen!"
DO
grumpf$ = INKEY$
LOOP UNTIL grumfp$ = "a" OR grumpf$ = "b" OR grumpf$ = CHR$(27)
SELECT CASE grumpf$
CASE IS = "a"
CASE IS = "b"
PRINT
PRINT "Dr?cken Sie ESC um zum vorherigen Men? zu gelangen"
DO
PRINT
zahler = zahler + 1
INPUT "Geben Sie bitte die deutsche Vokabel ein: ", vokabeld$(zahler)
INPUT "Geben Sie bitte die englishce Vokabel ein: ", vokabele$(zahler)
SLEEP
LOOP UNTIL INKEY$ = CHR$(27)
OPEN "d:\Benni\vokabel.txt" FOR OUTPUT AS #1
FOR i = 1 TO zahler
WRITE #1, vokabeld$(i) + vokabele$(i)
NEXT i
CLOSE #1
GOTO anfang
END SELECT
|
falls es geht.. so sieht es bissjetzt aus.. mein problem ist aber immer noch dass ich net weiß wie ich das zeilenweise ausles.. sorry ich kapier das net .. kannst du mal nen beispiel machen?
also ich würds so machen
Code: |
zahler2 = 0
DO
zahler2 = zahler2 + 1
INPUT #1, vokabeld$(zahler2), vokabele$(zahler2)
LOOP UNTIL ???????
|
stimmt das? _________________ meine shift-taste ist nicht kaputt |
|
Nach oben |
|
 |
Yawner
Anmeldungsdatum: 08.12.2006 Beiträge: 15
|
Verfasst am: 10.12.2006, 20:06 Titel: |
|
|
Code: |
anfang:
zahler = 0
zahler2 = 0
CLS
LOCATE 2, 25
PRINT "--*--*--*--*--*--*--*--*--*-"
LOCATE 3, 25
PRINT "Willkommen im Vokabeltrainer"
LOCATE 4, 25
PRINT "__-__-__-__-__-__-__-__-__-_"
PRINT
PRINT
PRINT "Dr?cken Sie 'a' um sich zu testen!"
PRINT "Dr?cken Sie 'b' um einen neuen Vokabelblock hinzuzuf?gen!"
DO
grumpf$ = INKEY$
LOOP UNTIL grumpf$ = "a" OR grumpf$ = "b" OR grumpf$ = CHR$(27)
SELECT CASE grumpf$
CASE IS = "a"
OPEN "d:\Benni\vokabel.txt" FOR INPUT AS #1
DO
zahler2 = zahler2 + 1
INPUT #1, vokabeld$(zahler2), vokabele$(zahler2)
PRINT "Geben Sie bitte f?r ", vokabeld$(zahler2), " die richtige Definition ein."
DO
INPUT "", vokabelee$(zahler2)
LOOP UNTIL vokabelee$(zahler2) = vokabele$(zahler2)
LOOP UNTIL vokabeld$(zahler) = ""
CASE IS = "b"
PRINT
PRINT "Dr?cken Sie ESC um zum vorherigen Men? zu gelangen"
DO
PRINT
zahler = zahler + 1
INPUT "Geben Sie bitte die deutsche Vokabel ein: ", vokabeld$(zahler)
INPUT "Geben Sie bitte die englishce Vokabel ein: ", vokabele$(zahler)
SLEEP
LOOP UNTIL INKEY$ = CHR$(27)
OPEN "d:\Benni\vokabel.txt" FOR OUTPUT AS #1
FOR i = 1 TO zahler
PRINT #1, vokabeld$(i) + "," + vokabele$(i)
NEXT i
CLOSE #1
GOTO anfang
END SELECT
|
so siehts aus, geht aber net.
weil wenn ich nämlich meinen vokabelblock geschrieben habe, und dann später die auswahlmöglich a nehm, also das testen dann fragt es NUR meine 1. ab und nix mehr..
achja danke für die zahlreiche hilfe bisjtezt _________________ meine shift-taste ist nicht kaputt |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 11.12.2006, 18:25 Titel: |
|
|
hm... mit is hab ich noch nix gemacht
vllt machst dus mal so:
Code: | select case grumpf$
case "a":...
case "b":...
etc.
|
ACHja, mit der tastenschleife:
mach grumpf$=LCASE$(Inkey$) _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
Yawner
Anmeldungsdatum: 08.12.2006 Beiträge: 15
|
Verfasst am: 11.12.2006, 18:28 Titel: |
|
|
push.. ich glaub net dass ihr dass net wisst .. wenns doch einer schon geschafft hat ..
also nochmal zum Problem, wie mach ich das Basic jedesmal eine Zeile runter geht ..(so wie ichs gerade hab gehts nicht)
UND
wie erkennt dann mein programm dass alle vokabeln zuende sind? (meinen ansatz sieht man ja, aber da ich das prob von oben noch hab kann ich da net viel probieren)
wäre dankbar fü nen paar postings _________________ meine shift-taste ist nicht kaputt |
|
Nach oben |
|
 |
Yawner
Anmeldungsdatum: 08.12.2006 Beiträge: 15
|
Verfasst am: 12.12.2006, 22:32 Titel: |
|
|
woah .. .. danke für die vielen postings
ähem ich habs jetzt ohne hilfe probiert bis es geht .. ABER
wenn ich viele vokabeln eingebe .. auch mit leertaste und so kommt bei testen immer ne fehlermeldung
also hier mal der code
wäre dankbar wenn wenigstens einer dass mal anschaut
ich finde keinen fehler, kein plan warums net geht
Code: | anfang:
noob = 0
zahler = 0
zahler2 = 0
noober = 0
CLS
LOCATE 2, 25
PRINT "--*--*--*--*--*--*--*--*--*-"
LOCATE 3, 25
PRINT "Willkommen im Vokabeltrainer"
LOCATE 4, 25
PRINT "__-__-__-__-__-__-__-__-__-_"
PRINT
PRINT
PRINT "Dr?cken Sie 'a' um sich zu testen!"
PRINT "Dr?cken Sie 'b' um einen neuen Vokabelblock hinzuzuf?gen!"
DO
grumpf$ = INKEY$
LOOP UNTIL grumpf$ = "a" OR grumpf$ = "b" OR grumpf$ = CHR$(27)
SELECT CASE grumpf$
CASE IS = "a"
OPEN "d:\Benni\vokabel.txt" FOR INPUT AS #1
INPUT #1, anzahl
FOR i = 2 TO anzahl + 1
INPUT #1, vokabeld$(i), vokabele$(i)
NEXT i
CLOSE #1
FOR u = 2 TO anzahl + 1
CLS
LOCATE 20, 50
PRINT u - 1; ". Vokabel"
LOCATE 4
PRINT
PRINT "Geben Sie bitte die richtige šbersetzung ein f?r: "; vokabeld$(u)
PRINT
noob = 0
DO
LOCATE 19, 50
PRINT "Sie haben "; noob; "Fehler gemacht"
LOCATE 8
PRINT " "
LOCATE 8
INPUT "", vokabel$(u)
IF vokabel$(u) <> vokabele$(u) THEN
noob = noob + 1
noober = noober + 1
END IF
LOOP UNTIL vokabel$(u) = vokabele$(u)
NEXT u
LOCATE 18, 50
PRINT "********************************************************************************"
PRINT "********************************************************************************"
SELECT CASE noober
CASE IS < 2
LOCATE 15, 20
PRINT "Sie sind ja richtig gut."; noober; " Fehler"
CASE 2 TO 5
LOCATE 15, 20
PRINT "Na das erfordert noch ein wenig šbung."; noober; " Fehler"
CASE IS > 5
LOCATE 15, 20
PRINT "Selten jemand schlechteres gesehen."; noober; "Fehler"
END SELECT
CASE IS = "b"
PRINT
PRINT "Dr?cken Sie ESC um zum vorherigen Men? zu gelangen"
DO
PRINT
zahler = zahler + 1
INPUT "Geben Sie bitte die deutsche Vokabel ein: ", vokabeld$(zahler)
INPUT "Geben Sie bitte die englishce Vokabel ein: ", vokabele$(zahler)
SLEEP
LOOP UNTIL INKEY$ = CHR$(27)
OPEN "d:\Benni\vokabel.txt" FOR OUTPUT AS #1
PRINT #1, zahler
FOR i = 1 TO zahler
PRINT #1, vokabeld$(i) + "," + vokabele$(i)
NEXT i
CLOSE #1
GOTO anfang
END SELECT
WHILE INKEY$ = ""
WEND
|
_________________ meine shift-taste ist nicht kaputt |
|
Nach oben |
|
 |
Yawner
Anmeldungsdatum: 08.12.2006 Beiträge: 15
|
Verfasst am: 12.12.2006, 22:44 Titel: |
|
|
woah .. .. danke für die vielen postings
ähem ich habs jetzt ohne hilfe probiert bis es geht .. ABER
wenn ich viele vokabeln eingebe .. auch mit leertaste und so kommt bei testen immer ne fehlermeldung
also hier mal der code
wäre dankbar wenn wenigstens einer dass mal anschaut
ich finde keinen fehler, kein plan warums net geht
Code: | anfang:
noob = 0
zahler = 0
zahler2 = 0
noober = 0
CLS
LOCATE 2, 25
PRINT "--*--*--*--*--*--*--*--*--*-"
LOCATE 3, 25
PRINT "Willkommen im Vokabeltrainer"
LOCATE 4, 25
PRINT "__-__-__-__-__-__-__-__-__-_"
PRINT
PRINT
PRINT "Dr?cken Sie 'a' um sich zu testen!"
PRINT "Dr?cken Sie 'b' um einen neuen Vokabelblock hinzuzuf?gen!"
DO
grumpf$ = INKEY$
LOOP UNTIL grumpf$ = "a" OR grumpf$ = "b" OR grumpf$ = CHR$(27)
SELECT CASE grumpf$
CASE IS = "a"
OPEN "d:\Benni\vokabel.txt" FOR INPUT AS #1
INPUT #1, anzahl
FOR i = 2 TO anzahl + 1
INPUT #1, vokabeld$(i), vokabele$(i)
NEXT i
CLOSE #1
FOR u = 2 TO anzahl + 1
CLS
LOCATE 20, 50
PRINT u - 1; ". Vokabel"
LOCATE 4
PRINT
PRINT "Geben Sie bitte die richtige šbersetzung ein f?r: "; vokabeld$(u)
PRINT
noob = 0
DO
LOCATE 19, 50
PRINT "Sie haben "; noob; "Fehler gemacht"
LOCATE 8
PRINT " "
LOCATE 8
INPUT "", vokabel$(u)
IF vokabel$(u) <> vokabele$(u) THEN
noob = noob + 1
noober = noober + 1
END IF
LOOP UNTIL vokabel$(u) = vokabele$(u)
NEXT u
LOCATE 18, 50
PRINT "********************************************************************************"
PRINT "********************************************************************************"
SELECT CASE noober
CASE IS < 2
LOCATE 15, 20
PRINT "Sie sind ja richtig gut."; noober; " Fehler"
CASE 2 TO 5
LOCATE 15, 20
PRINT "Na das erfordert noch ein wenig šbung."; noober; " Fehler"
CASE IS > 5
LOCATE 15, 20
PRINT "Selten jemand schlechteres gesehen."; noober; "Fehler"
END SELECT
CASE IS = "b"
PRINT
PRINT "Dr?cken Sie ESC um zum vorherigen Men? zu gelangen"
DO
PRINT
zahler = zahler + 1
INPUT "Geben Sie bitte die deutsche Vokabel ein: ", vokabeld$(zahler)
INPUT "Geben Sie bitte die englishce Vokabel ein: ", vokabele$(zahler)
SLEEP
LOOP UNTIL INKEY$ = CHR$(27)
OPEN "d:\Benni\vokabel.txt" FOR OUTPUT AS #1
PRINT #1, zahler
FOR i = 1 TO zahler
PRINT #1, vokabeld$(i) + "," + vokabele$(i)
NEXT i
CLOSE #1
GOTO anfang
END SELECT
WHILE INKEY$ = ""
WEND
|
das HAUPTPROBLEM IST DASS ICH GERADE MAL 9 VOKABELN TESTEN KANN. BZW. NUR BIS ZU ) VOKABELN KÖNNEN VERWALTET WERDEN _________________ meine shift-taste ist nicht kaputt |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 12.12.2006, 23:19 Titel: |
|
|
erstmal: CapsLock aus
dann: wenn du datenfeldern keine bestimmte größe zuweist, haben sie IMMER zehn einträge, nämlich von 0 bis 9. deswegen kannst musst du datenfelder größer dimensionieren, um mehr daten darin speichern zu können, z.B:
DIM Datenfeld(1 to 9999) würde 9999 vokabeln zulassen. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Yawner
Anmeldungsdatum: 08.12.2006 Beiträge: 15
|
Verfasst am: 13.12.2006, 14:30 Titel: |
|
|
capslook? nene das war doch nur um mein problem hervorzuheben. nix anderes
du meinst ich soll am anfang einfach dim vokabel... usw. machen ?
ok ich probiers mal .. was hälst du sonst vom code? _________________ meine shift-taste ist nicht kaputt |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 13.12.2006, 14:50 Titel: |
|
|
Hallo
Eigentlich brauchst du kein Datenfeld, du kannst ja auch einfach immer nur die eine aktuelle englische und deutsche Vokabel lesen oder schreiben. Die Datei selbst ist dann dein "Datenfeld", dessen Grösse du mit LOF oder EOF abfragen kannst.
Wenn du Dateien mit OPEN...FOR OUTPUT öffnest, wird die alte Datei dabei jedesmal überschrieben. Mit OPEN...FOR APPEND kannst du neue Einträge an die vorhandene Datei angehängen.
Wie wäre es, die Vokabeln nicht immer in der gleichen Reihenfolge abzufragen, sondern nach dem Zufallsprizip? Dann könnte auch das mit dem Datenfeld wieder Sinn machen, da man sonst jedesmal die Datei bis zum entsprechenden Eintrag neu laden müsste. Ginge aber auch.
Gruss
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
Yawner
Anmeldungsdatum: 08.12.2006 Beiträge: 15
|
Verfasst am: 13.12.2006, 15:02 Titel: |
|
|
wär natürlich ne überlegung wert das mit zufallsprinzip zu machen.. aber jetzt bin ich endlihc froh dass es so geht ..
eof und lof hab ich noch nie gehört
open append wollte ich eigentlich machen ABER dann muss ich wieder oben die anzahl (wenn ichs mit datenfeldern lasse) neuhinschreiben, nur würde basic das ganz unten hinschreiben, was mir selbstverständlich nix bringt..
oder kann ich das irgendwie machen? _________________ meine shift-taste ist nicht kaputt |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 13.12.2006, 15:21 Titel: |
|
|
EOF steht für End Of File, damit könntest das Laden ungefähr so machen:
Code: | anzahl = 0
OPEN "d:\Benni\vokabel.txt" FOR INPUT AS #1
DO UNTIL EOF(1)
anzahl = anzahl + 1
INPUT #1, vokabeld$(anzahl), vokabele$(anzahl)
LOOP
CLOSE #1 |
Dann brauchst du die Anzahl der Einträge auch nicht mitzuspeichern. Wenn du neue Vokabeln mit Append anhängst, einfach die Variable anzahl jedesmal um 1 erhöhen. _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
Yawner
Anmeldungsdatum: 08.12.2006 Beiträge: 15
|
Verfasst am: 13.12.2006, 19:24 Titel: |
|
|
sorry falscher doppelpost weil ich zu blöd war den edit knopf zu drücken (zitat ) _________________ meine shift-taste ist nicht kaputt
Zuletzt bearbeitet von Yawner am 14.12.2006, 22:48, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Yawner
Anmeldungsdatum: 08.12.2006 Beiträge: 15
|
Verfasst am: 13.12.2006, 20:24 Titel: |
|
|
ah gute idee... daran hab ich noch gar net gedacht ..
so was wie eof hab ich gesucht .. wollts am anfang irgendwie so machen, nur das problem war eben dass ich nicht wusste wanns ende war ,, aber so ist das ja wohl behoben.. ich probiers nachher mal aus..
danke
mfg
Yawner
geht nicht .. wär auch zu schön bei input kommt dann immer "Eingabe nach Dateiende" vermutlich weil ich dort nicht zeilenweise ausles (also die vokabeln) _________________ meine shift-taste ist nicht kaputt |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 14.12.2006, 14:57 Titel: |
|
|
Hallo
Gleich vorweg - es gibt rechts oben bei deinen Beiträgen einen Edit-Button. Damit kannst du dein Posting nachbearbeiten wenn dir noch was einfällt und brauchst nicht immer alles zu wiederholen.
Jetzt zu deinem Programm. Ja es liegt wohl daran, dass die Vokabeln zusammen als eins geschrieben aber getrennt einzeln ausgelesen werden sollen. Ich habe mir mal erlaubt, das Ganze etwas umzuschreiben, dabei aber versucht, soviel wie möglich von deinem Programm zu behalten. So werden die Vokabeln zufällig ausgesucht und neue Vokabeln mit Append angehängt.
Code: |
DIM vokabeld$(999), vokabele$(999)
RANDOMIZE TIMER
anzahl = 0
versuch = 0
noob = 0
OPEN "d:\Benni\vokabel.txt" FOR INPUT AS #1
DO UNTIL EOF(1)
anzahl = anzahl + 1
INPUT #1, vokabeld$(anzahl)
INPUT #1, vokabele$(anzahl)
LOOP
CLOSE #1
anfang:
CLS
LOCATE 2, 25
PRINT "--*--*--*--*--*--*--*--*--*-"
LOCATE 3, 25
PRINT "Willkommen im Vokabeltrainer"
LOCATE 4, 25
PRINT "__-__-__-__-__-__-__-__-__-_"
PRINT
PRINT
PRINT "Dr?cken Sie 'a' um sich zu testen!"
PRINT "Dr?cken Sie 'b' um einen neuen Vokabelblock hinzuzuf?gen!"
PRINT "Dr?cken Sie 'ESC' un das Programm zu beenden!"
DO
grumpf$ = INKEY$
LOOP UNTIL grumpf$ = "a" OR grumpf$ = "b" OR grumpf$ = CHR$(27)
SELECT CASE grumpf$
CASE IS = "a"
DO
vok = FIX(RND * anzahl) + 1
CLS
LOCATE 20
PRINT "Bisher"; noob; "von"; versuch; "Vokabeln falsch."
PRINT
PRINT "Dr?cken Sie ENTER ohne Eingabe um den Test zu beenden."
LOCATE 4
PRINT
PRINT "Geben Sie bitte die richtige šbersetzung ein f?r: "; vokabeld$(vok)
LOCATE 8
INPUT vokabel$
IF vokabel$ = "" THEN EXIT DO
versuch = versuch + 1
IF vokabel$ <> vokabele$(vok) THEN noob = noob + 1
LOOP
LOCATE 18, 50
PRINT "********************************************************************************"
PRINT "********************************************************************************"
SELECT CASE noob
CASE IS < 2
LOCATE 15, 20
PRINT "Sie sind ja richtig gut."; noob; "Fehler"
CASE 2 TO 5
LOCATE 15, 20
PRINT "Na das erfordert noch ein wenig šbung."; noob; "Fehler"
CASE IS > 5
LOCATE 15, 20
PRINT "Selten jemand schlechteres gesehen."; noob; "Fehler"
END SELECT
noob = 0
versuch = 0
CASE IS = "b"
CLS
PRINT "Dr?cken Sie ENTER ohne Eingabe, um zum Men? zur?ckzukehren"
PRINT
OPEN "d:\Benni\vokabel.txt" FOR APPEND AS #1
DO
PRINT
INPUT "Geben Sie bitte die deutsche Vokabel ein: ", vokabeld$(anzahl + 1)
IF vokabeld$(anzahl + 1) = "" THEN EXIT DO
INPUT "Geben Sie bitte die englische Vokabel ein: ", vokabele$(anzahl + 1)
IF vokabele$(anzahl + 1) = "" THEN EXIT DO
anzahl = anzahl + 1
PRINT #1, vokabeld$(anzahl)
PRINT #1, vokabele$(anzahl)
LOOP
CLOSE #1
GOTO anfang
CASE IS = CHR$(27)
END
END SELECT |
Das soll natürlich nur eine Anregung sein. Du könntest z.B. noch einbauen, dass die Auswertung sich nicht nur nach der Zahl der Fehler richtet, sondern nach dem Verhältnis zwischen Fehlern und Versuchen. Also weniger als 5% falsch gleich sehr gut, weniger als 10% gut usw. Man könnte auch noch einbauen, dass eine Vokabel erst wider abgefragt wird, wenn alle einmal dranwaren. Mit einem zweiten Datenfeld z.B., wo eingetragen wird ob das Wort schon gefragt wurde.
Gruss
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|