Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: a guest on Mar 17th, 2012  |  syntax: C++  |  size: 8.35 KB  |  views: 17  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  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 Vokabelkasten..." << endl;
  147.     cout << ":)";
  148.     fstream data;  // Datei-Handle
  149.     data.open("data.txt", ios::in); //datei auslesen
  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.         data >> header;
  160.         if (header == "kasten")
  161.         {
  162.             neuvokkasten.kastenAuslesen(&data);
  163.             kasten.push_back(neuvokkasten);
  164.         }
  165.  
  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. }