Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <vector>
- #include <ctime>
- #include <cstdlib>
- using namespace std;
- time_t toDay(time_t time) {
- struct tm *t = localtime(&time);
- t->tm_hour = t->tm_min = t->tm_sec = 0;
- return mktime(t);
- }
- class vokabel
- {
- public:
- string deutsch;
- string latein;
- int phase;
- int abfrage;
- int anzahl;
- void dateiAuslesen(fstream *data)
- {
- /*
- Pro Vokabel:
- Erste Zeile: Deutsch
- Zweite Zeile: Latein
- Dritte Zeile: Phase
- Vierte Zeile: Zeit
- Fünfte Zeile: Anzahl
- */
- *data >> deutsch; //erste zeile
- *data >> latein; //zweite zeile
- *data >> phase; //dritte zeile
- *data >> abfrage; //vierte zeile
- *data >> anzahl; //fünfte zeile
- }
- void neueVokabel()
- {
- cout << "Latein:";
- cin >> latein;
- cout << "Deutsch:";
- cin >> deutsch;
- phase = 0;
- abfrage = toDay(time(NULL));
- anzahl = 0;
- }
- void vokabelAnzeigen()
- {
- cout << "Latein:" << latein << endl << "Deutsch:" << deutsch << endl << "Phase:" << phase << endl << "Abfrage:" << abfrage
- << endl << "Anzahl:" << anzahl << endl;
- }
- void vokabelSchreiben(fstream *data)
- {
- *data << "vokabel" << endl << deutsch << endl << latein << endl << phase << endl << abfrage << endl << anzahl << endl;
- }
- void vokabelAbfrage()
- {
- string s;
- cout << latein << endl << "Deutsch:";
- cin >> s;
- cout << "Lösung:" << deutsch << endl;
- s = "";
- while (!(s=="j" || s=="n" || s=="J" || s=="N"))
- {
- cout << "Richtig? (J/N)";
- cin >> s;
- if (!(s=="j" || s=="n" || s=="J" || s=="N")) cout << "Invalide Eingabe!" << endl;
- }
- if (s=="j" || s=="J")
- {
- if (anzahl!=3) anzahl++;
- } else {
- if (phase>0) phase--;
- anzahl = 0;
- }
- if (anzahl == 3)
- {
- if (phase != 6) phase++;
- switch (phase)
- {
- case 0:
- abfrage = toDay(time(NULL))+86400; //+1 tag
- break;
- case 1:
- abfrage = toDay(time(NULL))+259200; //+3 tage
- break;
- case 2:
- abfrage = toDay(time(NULL))+864000; //+10 tage
- break;
- case 3:
- abfrage = toDay(time(NULL))+2592000; //+30 tage
- break;
- case 4:
- abfrage = toDay(time(NULL))+7776000; //+90 tage
- break;
- case 5:
- abfrage = toDay(time(NULL))+10368000; //+120 tage
- break;
- case 6:
- abfrage = toDay(time(NULL))+17280000; //+200 tage
- break;
- }
- anzahl = 0;
- }
- cout << "Phase:" << phase << endl << "Anzahl:" << anzahl << endl;
- }
- };
- class vokabelkasten
- {
- public:
- string abfragsprache;
- string istsprache;
- vector<vokabel> vokabelkarte;
- void kastenAuslesen(fstream *data)
- {
- vokabel neuevok;
- string header;
- while (header!="kasten")
- {
- *data >> header;
- if (header == "vokabel")
- {
- neuevok.dateiAuslesen(data);
- vokabelkarte.push_back(neuevok); //abspeichern
- }
- }
- }
- };
- main()
- {
- srand(time(NULL));
- time_t timer = time(NULL);
- timer = toDay(timer);
- cout << "Lateinvokabelabfrager von Sorunome" << endl << "Lade Vokabelkasten..." << endl;
- cout << ":)";
- fstream data; // Datei-Handle
- data.open("data.txt", ios::in); //datei auslesen
- vector<vokabelkasten> kasten;
- int i = 0;
- int temp = 0;
- vokabel neuevok;
- vokabelkasten neuvokkasten;
- string s;
- while(!data.eof())
- {
- string header;
- data >> header;
- if (header == "kasten")
- {
- neuvokkasten.kastenAuslesen(&data);
- kasten.push_back(neuvokkasten);
- }
- }
- cout << ":)";
- cout << kasten[0].vokabelkarte.size() << " Vokabeln fertig geladen." << endl << endl;
- string input;
- while (input !="exit")
- {
- cout << "Input:";
- cin >> input;
- if (input == "help")
- {
- cout << endl << "Help" << endl << "exit: verlassen" << endl << "new: neue Vokabel" << endl
- << "print: Vokabel drucken" << endl << "edit: Vokabel editieren" << endl << "ask: Vokabel abfragen" << endl
- << "time: Zeit anzeigen" << endl << "start: Vokabelabfrage" << endl << endl;
- }
- if (input == "new")
- {
- cout << endl;
- neuevok.neueVokabel();
- kasten[0].vokabelkarte.push_back(neuevok);
- cout << endl;
- }
- if (input == "print")
- {
- temp = 0;
- temp--;
- while (kasten[0].vokabelkarte.size()<=temp)
- {
- cout << endl << "Vokabel-ID:";
- cin >> temp;
- if (kasten[0].vokabelkarte.size()<=temp) cout << "Vokabel existiert nicht!" ;
- }
- cout << endl;
- kasten[0].vokabelkarte[temp].vokabelAnzeigen();
- cout << endl;
- }
- if (input == "edit")
- {
- temp = 0;
- temp--;
- while (kasten[0].vokabelkarte.size()<=temp)
- {
- cout << endl << "Vokabel-ID:";
- cin >> temp;
- if (kasten[0].vokabelkarte.size()<=temp) cout << "Vokabel existiert nicht!" ;
- }
- cout << endl;
- kasten[0].vokabelkarte[temp].vokabelAnzeigen();
- cout << endl;
- kasten[0].vokabelkarte[temp].neueVokabel();
- cout << endl;
- }
- if (input == "ask")
- {
- temp = 0;
- temp--;
- while (kasten[0].vokabelkarte.size()<=temp)
- {
- cout << endl << "Vokabel-ID:";
- cin >> temp;
- if (kasten[0].vokabelkarte.size()<=temp) cout << "Vokabel existiert nicht!" ;
- }
- cout << endl << endl;
- kasten[0].vokabelkarte[temp].vokabelAbfrage();
- cout << endl;
- }
- if (input == "time")
- {
- cout << endl << toDay(time(NULL)) << endl;
- }
- if (input == "start")
- {
- vector<int> abfragen;
- temp = toDay(time(NULL));
- cout << endl << "Schlage Vokabeln nach..." << endl;
- for (i=0;i<kasten[0].vokabelkarte.size();i++)
- {
- if (temp >= kasten[0].vokabelkarte[i].abfrage)
- {
- abfragen.push_back(i);
- }
- }
- cout << "Fertig. " << abfragen.size() << " Vokabeln zum Abfragen." << endl;
- int abfragenGemischt[abfragen.size()];
- for (i=0;i<abfragen.size();i++)
- {
- temp = rand() % abfragen.size();
- if (abfragen[temp]!=-1)
- {
- abfragenGemischt[i] = abfragen[temp];
- abfragen[temp] = -1;
- } else {
- i--;
- }
- }
- for (i=0;i<abfragen.size();i++)
- {
- s = "";
- cout << endl;
- while (!(s=="j" || s=="n" || s=="J" || s=="N"))
- {
- cout << "Nächste Vokabel abfragen? (J/N)";
- cin >> s;
- if (!(s=="j" || s=="n" || s=="J" || s=="N")) cout << "Invalide Eingabe!" << endl;
- }
- cout << endl;
- if (s=="j" || s=="J")
- {
- kasten[0].vokabelkarte[abfragenGemischt[i]].vokabelAbfrage();
- } else {
- i = abfragen.size();
- }
- }
- cout << endl;
- }
- }
- data.close();
- data.open("data.txt", ios::out);
- for (i=0;i<kasten[0].vokabelkarte.size();i++)
- {
- kasten[0].vokabelkarte[i].vokabelSchreiben(&data);
- }
- data.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement