Forum
Tipps
News
Menu-Icon

C++ Vokabeltrainer

Ich mache einen Vaocabeltrainer für Englisch.
Ich komme aber an einer Stelle nicht weiter.
Immer wenn eine Vokabel richtig ist, soll es einen Punkt geben. Wenn man alle Punkte hat soll man ein Passwort bekommen, mit dem man in einen speziellen bereich kommt.
Mein Problem: Ich habe keine Ahnung wie ich das mit dem Speichern der Punkte machen soll.
Bitte helft mir!
Hier der Quelltext:

#include <iostream.h>
#include <stdlib.h>
#include <string>

void abschnitt1()
{
       string vocabel;
       int y;
       cout << " Pfert : "; cin >> vocabel;
       if(vocabel=="horse")
       {
        y=1;
        cout << " Richtig!" << endl;
        cout << endl;
       }
       else
       {
        y=0;
        cout << " Falsch!" << endl;
        cout << endl;
       }
}
int main()
{
     while(true)
     {
      int i;
      string vocabel;
      string passwort;
      char menu;
      int abschnitt;
      int training;
      cout << endl;
      cout << " Willkommen im Kapiltel 'n' des Vocabeltrainer fuer 'Englisch G 2000'" << endl;
      cout << " Bitte gib zur Auswahl des Bereichs den entsprechenden Buchstaben ein." << endl;
      cout << endl;
      cout << "                   |----------------------------|" << endl;
      cout << "                   | Vocabeln(alle)       :  v  |" << endl;
      cout << "                   |----------------------------|" << endl;
      cout << "                   | Vocabeltraining      :  t  |" << endl;
      cout << "                   |----------------------------|" << endl;
      cout << "                   | Programmende         :  e  |" << endl;
      cout << "                   |----------------------------|" << endl;
      cout << endl;
      cout << " Copyrights by Marcel Kroitblat" << endl;
      cout << " Alle Rechte vorbehalten." << endl;
      cout << endl;
      cin >> menu;
      cout << endl;
      if(menu=='v')
      {
       cout << endl;
       cout << " Alle Vocabeln der Lektion" << endl;
       cout << " Zueruck mit 'z' und jedem anderen Buchtstaben ausser 'y'" << endl;
       cin >> menu;
       cout << endl;
       if(menu !='y')
       {
        continue;
       }
       else
       {
        cout << " Ich habe dich gewahrnt. Und Tschuess!" << endl;
        cout << endl;
        system("PAUSE");
        return 0;
       }
      }
      if(menu=='t')
      {
       i=0;
       cout << endl;
       cout << " Bitte achte darauf weder Umlaute noch ein scharfes S noch Satzzeichen" << endl;
       cout << " zu benutzen. Statt dessen schreibst du z.B. ue, oder ae. Fuer das" << endl;
       cout << " scharfe S schreibe einfach ss, gib auch nur eine moegliche Loesung" << endl;
       cout << " ein und schreibe immer klein. Dann muesste das Programm auch funktionieren." << endl;
       cout << endl;
       while(true)
       {
       cout << " Es gibt `n` Abschnitte mit jeweils 10 Vokabeln" << endl;
       cout << " Bitte gib den gewuenschten Abschnitt ein(Ende = 0): " << endl;
       cin >> abschnitt;
       switch(abschnitt)
       {
        case 0: return 0;
        case 1: abschnitt1();
       }
       cout << endl;
       cout << " Zueruck mit 'z' und jedem anderen Buchtstaben ausser 'y'" << endl;
       cin >> menu;
       cout << endl;
       if(menu !='y')
       {
        continue;
       }
       else
       {
        cout << " Ich habe dich gewahrnt. Und Tschuess!" << endl;
        cout << endl;
        system("PAUSE");
        return 0;
       }
      }
      cout << endl;
      cout << " Zueruck mit 'z' und jedem anderen Buchtstaben ausser 'y'" << endl;
      cin >> menu;
      cout << endl;
      if(menu !='y')
      {
       continue;
      }
      else
      {
       cout << " Ich habe dich gewahrnt. Und Tschuess!" << endl;
       cout << endl;
       system("PAUSE");
       return 0;
      }
      }
      if(menu=='e')
      {
       system("PAUSE");
       return 0;
      }
     }
}


Antworten zu C++ Vokabeltrainer:

Was zum Henker ist ein Pfert ???
Und was ist "gewahrnt" ???
Und seit wann schreibt man Vocabeln nicht mehr mit 'k' ???

Was zum Henker ist ein Pfert ???
Und was ist "gewahrnt" ???
Und seit wann schreibt man Vocabeln nicht mehr mit 'k' ???

lol, liebe admins, macht das "Schneller-über-Antworten-informiert-werden" da unten bitte für Gäste default aus, wenn das eh nichtgeht...

lol, liebe admins, macht das "Schneller-über-Antworten-informiert-werden" da unten bitte für Gäste default aus, wenn das eh nichtgeht...

Der postet dann nämlich doppelt wenn man nochmal macht

Es tut mir schrecklich leit, dass ich einige Rechtschreibfehler in meinem Text habe, aber auf deine Schlauen kommentare kann ich verzichten >:(.
Wenn es dich beruhigt unterziehe ich jedes meiner Programme einer Rechtschreibprüfung wenn es fertig ist, aber bei diesem handelt es sich ja noch nicht um ein fertiges Programm :P.

Was ist jetzt dein Problem?
Weisst du nicht
- Wie man Variablen benutzt?
- Wie man Werte aus Funktionen zurückgibt?
- Wie man in Datenen schreibt und liest?

 ::)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich werde versuchen dein Progrämmchen ein wenig umzuschreiben, wenn ich wieder mal Zeit haben sollte.
Da kann ich meie Mutter auch gleich auf die orthographie ansetzten.  ;D

Variablen sind eher kein Problem.
Ich weiß bloß nicht wie ich das mit dem return-Wert mache. Wenn man die Vokabel richtig eingibt soll er ja '1' sein, sonst soll er '0' sein. Dann soll da also stehn:"Du hast jetzt 'i' Punkt(e)." Aber wie kriege ich den Wert aus der Funktion abschnitt1() in den if(menu=='t') Teil?
Ich hoffe ich habe mich mehr oder weniger verständlich ausgedrück.

http://www.volkard.de/vcppkold/inhalt.html

Kapitel 7 für Funktionen, Parameter und Rückgabe

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

du machst n' counter der die richtigen antworten zählt:

int counter = 0;

if(funktion())
   counter++;
   cout << "du hast jetzt" << counter << "punkte" << endl;

Ich glaube, man kann dem bösen Jungen nur raten, es erstmal mit Visual Basic zu probieren. ( Und dann mit einem Rechtschreibtrainer anfangen, bevor man sich an den Vokabeltrainer wagt. )

Ich will ja aber nicht nur bloede Kommentare von mir geben, darum hab ich Dir hier jetzt mal einen tollen Vokabeltrainer als .BAT Programm geschrieben. Allerdings dürfte der nur unter Windows XP oder so funktionieren...

Um Ihn zu benutzen musst Du nur eine Datei mit den Vokabeln anlegen, selbige "voklist.txt" nennen und im gleichen Verzeichnis wie die .BAT datei speichern. Die Datei muss dann immer Zeilenweise die Vokabeln enthalten, also etwa so:

BoeserJunge BadBoy
Pfert horse
Katse cat
Hunt dog
Fogel bird

-------------------------------------------------


@echo off

echo Supi BATCH Vokabel trainer!

set ctr=0
set total=0
set v=0

rem Neue Kommandozeile starten
rem diesmal mit delayed variable expansion und commandline extensions
set chkext=%CMDCMDLINE%
set chkext=%chkext:/V=%
set chkext=%chkext:/v=%
if "%chkext%"=="%CMDCMDLINE%" (
   cmd /V /X /C %0
   goto end
)

rem Achtung: Ab jetzt keine Ausrufezeichen mehr verwenden

FOR /F "tokens=1,2" %%v IN ( voklist.txt ) DO (
   set /a total=!total! + 1
   echo !total! Vokabel : %%v
   set /P eingabe=Dein Versuch?
   if "%%w" == "!eingabe!" (
      set /A ctr=!ctr! + 1
      echo Toll. Du hast jetzt !ctr! punkte.
   )
   if NOT "%%w" == "!eingabe!" (
      echo Du Niete. Die richtige Eingabe waere %%w gewesen%.
   )
)

echo Du hast jetzt alle Vokabeln gelernt und dabei %ctr% von %total% richtig geraten
goto end
:end

Ich glaube, man kann dem bösen Jungen nur raten, es erstmal mit Visual Basic zu probieren. ( Und dann mit einem Rechtschreibtrainer anfangen, bevor man sich an den Vokabeltrainer wagt. )

Ich will ja aber nicht nur bloede Kommentare von mir geben, darum hab ich Dir hier jetzt mal einen tollen Vokabeltrainer als .BAT Programm geschrieben. Allerdings dürfte der nur unter Windows XP oder so funktionieren...

Um Ihn zu benutzen musst Du nur eine Datei mit den Vokabeln anlegen, selbige "voklist.txt" nennen und im gleichen Verzeichnis wie die .BAT datei speichern. Die Datei muss dann immer Zeilenweise die Vokabeln enthalten, also etwa so:

BoeserJunge BadBoy
Pfert horse
Katse cat
Hunt dog
Fogel bird

-------------------------------------------------


@echo off

echo Supi BATCH Vokabel trainer!

set ctr=0
set total=0
set v=0

rem Neue Kommandozeile starten
rem diesmal mit delayed variable expansion und commandline extensions
set chkext=%CMDCMDLINE%
set chkext=%chkext:/V=%
set chkext=%chkext:/v=%
if "%chkext%"=="%CMDCMDLINE%" (
   cmd /V /X /C %0
   goto end
)

rem Achtung: Ab jetzt keine Ausrufezeichen mehr verwenden

FOR /F "tokens=1,2" %%v IN ( voklist.txt ) DO (
   set /a total=!total! + 1
   echo !total! Vokabel : %%v
   set /P eingabe=Dein Versuch?
   if "%%w" == "!eingabe!" (
      set /A ctr=!ctr! + 1
      echo Toll. Du hast jetzt !ctr! punkte.
   )
   if NOT "%%w" == "!eingabe!" (
      echo Du Niete. Die richtige Eingabe waere %%w gewesen%.
   )
)

echo Du hast jetzt alle Vokabeln gelernt und dabei %ctr% von %total% richtig geraten
goto end
:end

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Leahrn mahl Doitsh, man

Vielen dank für eure Mühen. Leider habe ich Win 98 und kein XP, trotzdem nochmals danke. Ich habe mir jetzt so geholfen, dass es keinen return-Wert gibt und gleich in der Funktion die Anzahl an Punkten angezeigt wird. Was Visual Basic ist weiß ich nicht, aber wenn es sich zu lernen lohnt werde ich es auch lernen. Ihr müsst mir nur sagen was man damit alles machen kann.
Und nochmals danke! :D

Na gut, für die Linux-N00Bs hier nochmal als bash-Skript.

---------------------------------------------------


#!/bin/bash
ctr=0; total=0; i=0;

while read line
do
  set -- $line
  vokabel[$total]=$1
  loesung[$total]=$2
  (( total++ ))
done < "voklist.txt"

for(( i = 0; $i < $total; i++ ))
do
  echo "Vokabel : ${vokabel[$i]}"
  echo -n "Dein Versuch: "
  read eingabe
  [[ $eingabe == ${loesung[$i]} ]] && ( (( ctr++ )); echo "Toll! Das war richtig!" );
  [[ $eingabe == ${loesung[$i]} ]] || echo "Du Niete! '${loesung[$i]}' wäre richtig gewesen!"; echo
done

echo So, nun hast Du alle Vokabeln gelernt und $ctr von $total richtig geraten.

Und nochmal als Code formatiert


--------------------

#!/bin/bash
ctr=0; total=0; i=0;

while read line
do
  set -- $line
  vokabel[$total]=$1
  loesung[$total]=$2
  (( total++ ))
done < "voklist.txt"

for(( i = 0; $i < $total; i++ ))
do
  echo "Vokabel : ${vokabel[$i]}"
  echo -n "Dein Versuch: "
  read eingabe
  [[ $eingabe == ${loesung[$i]} ]] && ( (( ctr++ )); echo "Toll! Das war richtig!" );
  [[ $eingabe == ${loesung[$i]} ]] || echo "Du Niete! '${loesung[$i]}' wäre richtig gewesen!"; echo
done

echo So, nun hast Du alle Vokabeln gelernt und $ctr von $total richtig geraten.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

(toll und wer will das wissen? ;D)

Du weist am Ende der Funktion selbiger einen Wert zu. Aber nur wenn es wirklich eine Funktion und nicht nur eine Prozedur ist.


« welche programmiersprache?taschenrechner programm »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Grundstrich
Der Begriff des Grundstrichs im Bereich der Typografie, bezeichnet den senkrechten Strich der Buchstaben. Bei Schriftarten mit variabler Strichstärke, wie zum Beispi...

Haarstrich
Der Begriff Haarstrich stammt aus dem Bereich der Typographie. Bei Schriften, wie zum Beispiel der Antiquaschrift mit unterschiedlichen Strichstärken, wird zwischen ...

AGP Schnittstelle
Die AGP (Accelerated Graphics Port) - Schnittstelle wurde in den 1990er Jahren eingeführt und war speziell für Grafikkarten in PCs konzipiert. Sie bot eine dire...