View difference between Paste ID: AP0eUNes and 6Becke2D
SHOW: | | - or go back to the newest paste.
1
#include <iostream>
2
#include <fstream>
3
#include <string>
4
#include <vector>
5
#include <ctime>
6
#include <cstdlib>
7
8
using namespace std;
9
10
time_t toDay(time_t time) {
11
        struct tm *t = localtime(&time);
12
        t->tm_hour = t->tm_min = t->tm_sec = 0;
13
        return mktime(t);
14
}
15
16
class vokabel
17
{
18
public:
19
    string deutsch;
20
    string latein;
21
    int phase;
22
    int abfrage;
23
    int anzahl;
24
    void dateiAuslesen(fstream *data)
25
    {
26
        /*
27
        Pro Vokabel:
28
        Erste Zeile: Deutsch
29
        Zweite Zeile: Latein
30
        Dritte Zeile: Phase
31
        Vierte Zeile: Zeit
32
        Fünfte Zeile: Anzahl
33
        */
34
        *data >> deutsch; //erste zeile
35
36
        *data >> latein; //zweite zeile
37
38
        *data >> phase; //dritte zeile
39
40
        *data >> abfrage; //vierte zeile
41
42
        *data >> anzahl; //fünfte zeile
43
    }
44
    void neueVokabel()
45
    {
46
        cout << "Latein:";
47
        cin >> latein;
48
        cout << "Deutsch:";
49
        cin >> deutsch;
50
        phase = 0;
51
        abfrage = toDay(time(NULL));
52
        anzahl = 0;
53
    }
54
    void vokabelAnzeigen()
55
    {
56
        cout << "Latein:" << latein << endl << "Deutsch:" << deutsch << endl << "Phase:" << phase << endl << "Abfrage:" << abfrage
57
             << endl << "Anzahl:" << anzahl << endl;
58
    }
59
    void vokabelSchreiben(fstream *data)
60
    {
61
        *data << "vokabel" << endl << deutsch << endl << latein << endl << phase << endl << abfrage << endl << anzahl << endl;
62
    }
63
    void vokabelAbfrage()
64
    {
65
        string s;
66
        cout << latein << endl << "Deutsch:";
67
        cin >> s;
68
        cout << "Lösung:" << deutsch << endl;
69
70
        s = "";
71
        while (!(s=="j" || s=="n" || s=="J" || s=="N"))
72
        {
73
            cout << "Richtig? (J/N)";
74
            cin >> s;
75
            if (!(s=="j" || s=="n" || s=="J" || s=="N")) cout << "Invalide Eingabe!" << endl;
76
        }
77
        if (s=="j" || s=="J")
78
        {
79
            if (anzahl!=3) anzahl++;
80
        } else {
81
            if (phase>0) phase--;
82
            anzahl = 0;
83
84
        }
85
        if (anzahl == 3)
86
        {
87
            if (phase != 6) phase++;
88
            switch (phase)
89
            {
90
            case 0:
91
                abfrage = toDay(time(NULL))+86400; //+1 tag
92
                break;
93
            case 1:
94
                abfrage = toDay(time(NULL))+259200; //+3 tage
95
                break;
96
            case 2:
97
                abfrage = toDay(time(NULL))+864000; //+10 tage
98
                break;
99
            case 3:
100
                abfrage = toDay(time(NULL))+2592000; //+30 tage
101
                break;
102
            case 4:
103
                abfrage = toDay(time(NULL))+7776000; //+90 tage
104
                break;
105
            case 5:
106
                abfrage = toDay(time(NULL))+10368000; //+120 tage
107
                break;
108
            case 6:
109
                abfrage = toDay(time(NULL))+17280000; //+200 tage
110
                break;
111
            }
112
            anzahl = 0;
113
        }
114
115
        cout << "Phase:" << phase << endl << "Anzahl:" << anzahl << endl;
116
    }
117
};
118
119
class vokabelkasten
120
{
121
public:
122
    string abfragsprache;
123
    string istsprache;
124
    vector<vokabel> vokabelkarte;
125
    void kastenAuslesen(fstream *data)
126
    {
127
        vokabel neuevok;
128
        string header;
129
        while (header!="kasten")
130
        {
131
            *data >> header;
132
            if (header == "vokabel")
133
            {
134
                neuevok.dateiAuslesen(data);
135
                vokabelkarte.push_back(neuevok); //abspeichern
136
            }
137
        }
138
    }
139
};
140
141
main()
142
{
143
    srand(time(NULL));
144
    time_t timer = time(NULL);
145
    timer = toDay(timer);
146-
    cout << "Lateinvokabelabfrager von Sorunome" << endl << "Lade Vokabelkästen..." << endl;
146+
    cout << "Lateinvokabelabfrager von Sorunome" << endl << "Lade Vokabelkasten..." << endl;
147
    cout << ":)";
148
    fstream data;  // Datei-Handle
149-
    vector<vokabel> kasten;
149+
150
    vector<vokabelkasten> kasten;
151
    int i = 0;
152
    int temp = 0;
153
    vokabel neuevok;
154
    vokabelkasten neuvokkasten;
155
    string s;
156
    while(!data.eof())
157
    {
158
        string header;
159-
        if (header == "vokabel")
159+
160
        if (header == "kasten")
161-
            neuevok.dateiAuslesen(&data);
161+
162-
            kasten[0].vokabelkarte.push_back(neuevok); //abspeichern
162+
            neuvokkasten.kastenAuslesen(&data);
163
            kasten.push_back(neuvokkasten);
164
        }
165
166-
            cout << ":)";
166+
167
    cout << ":)";
168
    cout << kasten[0].vokabelkarte.size() << " Vokabeln fertig geladen." << endl << endl;
169
    string input;
170
    while (input !="exit")
171
    {
172
        cout << "Input:";
173
        cin >> input;
174
        if (input == "help")
175
        {
176
            cout << endl << "Help" << endl << "exit: verlassen" << endl << "new: neue Vokabel" << endl
177
                 << "print: Vokabel drucken" << endl << "edit: Vokabel editieren" << endl << "ask: Vokabel abfragen" << endl
178
                 << "time: Zeit anzeigen" << endl << "start: Vokabelabfrage" << endl << endl;
179
        }
180
        if (input == "new")
181
        {
182
            cout << endl;
183
            neuevok.neueVokabel();
184
            kasten[0].vokabelkarte.push_back(neuevok);
185
            cout << endl;
186
        }
187
        if (input == "print")
188
        {
189
            temp = 0;
190
            temp--;
191
            while (kasten[0].vokabelkarte.size()<=temp)
192
            {
193
                cout << endl << "Vokabel-ID:";
194
                cin >> temp;
195
                if (kasten[0].vokabelkarte.size()<=temp) cout << "Vokabel existiert nicht!" ;
196
            }
197
            cout << endl;
198
            kasten[0].vokabelkarte[temp].vokabelAnzeigen();
199
            cout << endl;
200
        }
201
        if (input == "edit")
202
        {
203
            temp = 0;
204
            temp--;
205
            while (kasten[0].vokabelkarte.size()<=temp)
206
            {
207
                cout << endl << "Vokabel-ID:";
208
                cin >> temp;
209
                if (kasten[0].vokabelkarte.size()<=temp) cout << "Vokabel existiert nicht!" ;
210
            }
211
            cout << endl;
212
            kasten[0].vokabelkarte[temp].vokabelAnzeigen();
213
            cout << endl;
214
            kasten[0].vokabelkarte[temp].neueVokabel();
215
            cout << endl;
216
217
        }
218
        if (input == "ask")
219
        {
220
            temp = 0;
221
            temp--;
222
            while (kasten[0].vokabelkarte.size()<=temp)
223
            {
224
                cout << endl << "Vokabel-ID:";
225
                cin >> temp;
226
                if (kasten[0].vokabelkarte.size()<=temp) cout << "Vokabel existiert nicht!" ;
227
            }
228
            cout << endl << endl;
229
            kasten[0].vokabelkarte[temp].vokabelAbfrage();
230
            cout << endl;
231
        }
232
        if (input == "time")
233
        {
234
            cout << endl << toDay(time(NULL)) << endl;
235
        }
236
        if (input == "start")
237
        {
238
            vector<int> abfragen;
239
            temp = toDay(time(NULL));
240
            cout << endl << "Schlage Vokabeln nach..." << endl;
241
            for (i=0;i<kasten[0].vokabelkarte.size();i++)
242
            {
243
                if (temp >= kasten[0].vokabelkarte[i].abfrage)
244
                {
245
                    abfragen.push_back(i);
246
                }
247
            }
248
            cout << "Fertig. " << abfragen.size() << " Vokabeln zum Abfragen." << endl;
249
            int abfragenGemischt[abfragen.size()];
250
            for (i=0;i<abfragen.size();i++)
251
            {
252
                temp = rand() % abfragen.size();
253
                if (abfragen[temp]!=-1)
254
                {
255
                    abfragenGemischt[i] = abfragen[temp];
256
                    abfragen[temp] = -1;
257
                } else {
258
                    i--;
259
                }
260
            }
261
            for (i=0;i<abfragen.size();i++)
262
            {
263
                s = "";
264
                cout << endl;
265
                while (!(s=="j" || s=="n" || s=="J" || s=="N"))
266
                {
267
                    cout << "Nächste Vokabel abfragen? (J/N)";
268
                   cin >> s;
269
                   if (!(s=="j" || s=="n" || s=="J" || s=="N")) cout << "Invalide Eingabe!" << endl;
270
                }
271
                cout << endl;
272
                if (s=="j" || s=="J")
273
                {
274
                    kasten[0].vokabelkarte[abfragenGemischt[i]].vokabelAbfrage();
275
                } else {
276
                    i = abfragen.size();
277
                }
278
            }
279
            cout << endl;
280
        }
281
    }
282
    data.close();
283
    data.open("data.txt", ios::out);
284
    for (i=0;i<kasten[0].vokabelkarte.size();i++)
285
    {
286
        kasten[0].vokabelkarte[i].vokabelSchreiben(&data);
287
    }
288
    data.close();
289
290
}