Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Vokabeltrainer
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Yawner



Anmeldungsdatum: 08.12.2006
Beiträge: 15

BeitragVerfasst am: 10.12.2006, 00:09    Titel: Vokabeltrainer Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Manuel



Anmeldungsdatum: 23.10.2004
Beiträge: 1271
Wohnort: Bayern

BeitragVerfasst am: 10.12.2006, 01:54    Titel: Antworten mit Zitat

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 verlegen
_________________
DL Walk (Denkspiel) | DL Malek (Denkspiel) | DL Warrior (ASCII-Adventure) | DL Sokodos (Sokoban-Klon)
---
www.astorek.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 10.12.2006, 11:17    Titel: Re: Vokabeltrainer Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Yawner



Anmeldungsdatum: 08.12.2006
Beiträge: 15

BeitragVerfasst am: 10.12.2006, 15:44    Titel: Antworten mit Zitat

@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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 10.12.2006, 17:06    Titel: Antworten mit Zitat

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 zwinkern
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Elvis



Anmeldungsdatum: 01.06.2006
Beiträge: 818
Wohnort: Deutschland, BW

BeitragVerfasst am: 10.12.2006, 17:44    Titel: Antworten mit Zitat

Also ich hab' auch mal so ein Programm geschrieben... cool
Da hab ich einfach die Vokabeln in eine Datei geschrieben,
und zwischen Deutsch und Englisch eine Leerzeile. zwinkern
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
Benutzer-Profile anzeigen Private Nachricht senden
Yawner



Anmeldungsdatum: 08.12.2006
Beiträge: 15

BeitragVerfasst am: 10.12.2006, 19:18    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Yawner



Anmeldungsdatum: 08.12.2006
Beiträge: 15

BeitragVerfasst am: 10.12.2006, 20:06    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 11.12.2006, 18:25    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Yawner



Anmeldungsdatum: 08.12.2006
Beiträge: 15

BeitragVerfasst am: 11.12.2006, 18:28    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Yawner



Anmeldungsdatum: 08.12.2006
Beiträge: 15

BeitragVerfasst am: 12.12.2006, 22:32    Titel: Antworten mit Zitat

woah .. .. danke für die vielen postings grinsen

ä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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Yawner



Anmeldungsdatum: 08.12.2006
Beiträge: 15

BeitragVerfasst am: 12.12.2006, 22:44    Titel: Antworten mit Zitat

woah .. .. danke für die vielen postings grinsen

ä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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 12.12.2006, 23:19    Titel: Antworten mit Zitat

erstmal: CapsLock aus zwinkern
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Yawner



Anmeldungsdatum: 08.12.2006
Beiträge: 15

BeitragVerfasst am: 13.12.2006, 14:30    Titel: Antworten mit Zitat

capslook? nene das war doch nur um mein problem hervorzuheben. nix anderes grinsen

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 13.12.2006, 14:50    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Yawner



Anmeldungsdatum: 08.12.2006
Beiträge: 15

BeitragVerfasst am: 13.12.2006, 15:02    Titel: Antworten mit Zitat

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 grinsen

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 13.12.2006, 15:21    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Yawner



Anmeldungsdatum: 08.12.2006
Beiträge: 15

BeitragVerfasst am: 13.12.2006, 19:24    Titel: Antworten mit Zitat

sorry falscher doppelpost weil ich zu blöd war den edit knopf zu drücken (zitat mit dem Kopf durch die Mauer wollen )
_________________
meine shift-taste ist nicht kaputt


Zuletzt bearbeitet von Yawner am 14.12.2006, 22:48, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Yawner



Anmeldungsdatum: 08.12.2006
Beiträge: 15

BeitragVerfasst am: 13.12.2006, 20:24    Titel: Antworten mit Zitat

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 grinsen 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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 14.12.2006, 14:57    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
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.

 Impressum :: Datenschutz