Hallo,
auch hier wieder große zufall. Möchte auch ein Vokabeltrainer programmiern.
Habe ganz kurz auf dein code eingeschaut und sah, dass du mit array arbeitest.
Hier ist man an dem array grösse gebunden. naja, es ist eine frage der Nutzung. Mein Vokabeltrainer soll die leistung deines ähnlich sein.
ich habe mit STL gearbeitet.
1) wird der text eingelesen. Mit ' : ' doppelpunkt soll deutsches wort von englishen trennen.
2) mit getline und istringstream lässt die trennung leicht bewerkstelligen
3) mit der trennung wird dann auch gleich in die liste eingefügt (ähnlich wie array nur ohne Arraygröße + einiges an Vorteil Funktionen unwiderstehlich)
4) ja wenn die liste schon mal aufgefüllt ist, dann steht dir alles zur verfügung was dir dein herz begehrt.
Struktur sieht bei mir so.
Klasse: Vokabel => Eigenschaften sind string deutsch und english
dann die main mit list<Vokabel> lstVokabel. über pushback lässt sich alle vokabel sehr leicht einfügen. ja und wie gesagt dann steht dir alles offen.
einziges manko bei mir, ist die for_each. ich kann mir kein Vokabel elemente ausgeben. Ich weiss aber dass man mit operator übergabe arbeiten muss. weiss aber nicht wie. Einlesen und einfügen ins liste ist bei mir klaro.
vielleicht kann man mir hier weiterhelfen.
hier unten ist nochmal der code. ist ziemlich lang ... aber ohne inhalt. Die Zeile mit dem for_each ist mein problem, denn so geht aufjedenfall nicht.
===================
#include <iostream>
#include <string>
#include <fstream>
#include <list>
#include<algorithm>
#include<vector>
#include "Vokabel.h"
#include "Ausgabe.h"
using namespace std;
void main()
{
list<Vokabel> lstVokabel;
list<Vokabel> lstVokabelFalse;
list<Vokabel> lstVokabelCorrect;
list<Vokabel>::iterator iter;
iter = lstVokabel.begin();
// Vokabel aus Text Datei ins Vokabel Liste Einfügen
lstVokabel.push_back(Vokabel("one", "ein"));
lstVokabel.push_back(Vokabel("two", "zwei"));
lstVokabel.push_back(Vokabel("three", "drei"));
lstVokabel.push_back(Vokabel("four", "vier"));
//Abfragen solange lstVokabel leer ist
for_each(lstVokabel.begin(), lstVokabel.end(), iter->Foreach_Show); ////////FEHLER//
}
============================================================
=============================================================
#pragma once
#include <string>
using namespace std;
class Vokabel
{
private:
string _deutsch;
string _english;
public:
Vokabel(void);
~Vokabel(void);
Vokabel(string, string);
void Show();
void Foreach_Show(string, string);
string Get_deutsch();
void Set_deutsch(string);
string Get_english();
void Set_english(string);
};
===========================================================
====================================================
#include "Vokabel.h"
#include <string>
#include <iostream>
using namespace std;
Vokabel::Vokabel(void)
{
}
Vokabel::Vokabel(string de, string en)
{
_deutsch = de;
_english = en;
}
Vokabel::~Vokabel(void)
{
}
void Vokabel::Show()
{
cout<< _deutsch << " " << _english<<endl;
}
void Vokabel::Foreach_Show(string de, string en)
{
cout<< de << " " << en <<endl;
}
string Vokabel::Get_deutsch()
{
return _deutsch;
}
void Vokabel::Set_deutsch(string de)
{
_deutsch = de;
}
string Vokabel::Get_english()
{
return _english;
}
void Vokabel::Set_english(string en)
{
_english = en;
}