Advertisement
Guest User

Курсач

a guest
Jan 11th, 2018
409
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.57 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4. #include <sstream>
  5. #include <ctime>
  6.  
  7. using namespace std;
  8.  
  9. struct test
  10. {
  11.     string quest, answ;
  12. };
  13.  
  14. void FileReading(string);
  15. void menu();
  16. void TestReading(string, string, test&);
  17. void TestProcess(char);
  18. int counter(bool, int);
  19. void RandomAnekdot();
  20. string IntToString(int);
  21. void AnekdotMenu();
  22. string TestVybor(string, char);
  23. string FileVybor(char);
  24. void FileMenu(char);
  25. string DeleteSpace(string);
  26. void Mark(int);
  27.  
  28. int main()
  29. {
  30.     setlocale(LC_ALL, "Russian");
  31.     char text;
  32. start:
  33.     FileReading("hello.txt");
  34.     cin >> text;
  35.     text = tolower(text);
  36.     if (text == 'y' || text == 'n')
  37.     {
  38.         system("cls");
  39.         FileReading("start.txt");
  40.         string exit;
  41.         cin >> exit;
  42.         if (exit == "exit")
  43.             goto exit;
  44.         else
  45.         {
  46.             menu();
  47.             goto exit;
  48.         }
  49.     }
  50.     else
  51.     {
  52.         system("cls");
  53.         cout << "К сожалению, ты не научился со мной общаться :(\nНо я в тебя верю, так что попробуй снова!\nТвой Валерка\n" << endl;
  54.         goto start;
  55.     }
  56.     system("pause");
  57. exit:
  58.     return 0;
  59. }
  60.  
  61. void FileReading(string fileName)
  62. {
  63.     string str;
  64.     ifstream file(fileName);
  65.     if (!file)
  66.         cout << "Код ошибки: 666. К сожалению, что-то пошло не так... Обратитесь к разработчику программы. Его e-mail: ek.toksol@gmail.com" << endl;
  67.     else
  68.         while (getline(file, str))
  69.             cout << str << endl;
  70.     file.close();
  71. }
  72.  
  73. void menu()
  74. {
  75.     system("cls");
  76.     char n;
  77.     int rez = 0;
  78.     cout << "Выберите, что Вам необходимо:" << endl << endl;
  79.     cout << "Лабораторные работы:" << endl;
  80.     cout << "1 - Следование" << endl;
  81.     cout << "2 - Операторы ветвления" << endl;
  82.     cout << "3 - Операторы цикла: заданное число повторений" << endl;
  83.     cout << "4 - Операторы цикла: вычисления с заданной точностью" << endl;
  84.     cout << "5 - Суммирование рядов" << endl;
  85.     cout << "6 - Перегрузка функций" << endl;
  86.     cout << "7 - Статические одномерные массивы" << endl;
  87.     cout << "8 - Статические двумерные массивы" << endl << endl;
  88.     cout << "9 - Выход" << endl << endl;
  89.     cout << "А может, вам хочется анекдотов от Барикова?" << endl;
  90.     cin >> n;
  91.     system("cls");
  92.     switch (n)
  93.     {
  94.     case '1': FileMenu(n); break;
  95.     case '2': FileMenu(n); break;
  96.     case '3': FileMenu(n); break;
  97.     case '4': FileMenu(n); break;
  98.     case '5': FileMenu(n); break;
  99.     case '6': FileMenu(n); break;
  100.     case '7': FileMenu(n); break;
  101.     case '8': FileMenu(n); break;
  102.     case '9': return; break;
  103.     case 'y': AnekdotMenu(); break;
  104.     default: menu(); break;
  105.     }
  106. }
  107.  
  108. void TestProcess(char n)
  109. {
  110.     test t;
  111.     string answ, fileName;
  112.     int rez = 0, p;
  113.     cout << endl;
  114.     for (int i = 1; i <= 5; i++)
  115.     {
  116.         string per = IntToString(i);
  117.         fileName = TestVybor(per, n);
  118.         cout << endl;
  119.         TestReading(fileName, "\\0", t);
  120.         cin >> answ;
  121.         p = answ.find(" ");
  122.         if (p >= 0)
  123.             answ = DeleteSpace(answ);
  124.         if (answ == t.answ)
  125.         {
  126.             rez = counter(true, rez);
  127.         }
  128.         else
  129.         {
  130.             rez = counter(false, rez);
  131.         }
  132.         cout << endl;
  133.  
  134.         answ.clear();
  135.     }
  136.     Mark(rez);
  137.     system("pause");
  138.     menu();
  139. }
  140.  
  141. void TestReading(string fileName, string stop, test &t)
  142. {
  143.     ifstream file(fileName);
  144.     if (!file)
  145.     {
  146.         cout << "Код ошибки: 667. К сожалению, что-то пошло не так... Обратитесь к разработчику программы. Его e-mail: ek.toksol@gmail.com" << endl;
  147.         menu();
  148.     }
  149.     else
  150.     {
  151.         while (getline(file, t.quest))
  152.         {
  153.             if (t.quest == stop)
  154.                 break;
  155.             cout << t.quest << endl;
  156.         }
  157.         getline(file, t.answ);
  158.     }
  159.  
  160.     file.close();
  161. }
  162.  
  163. int counter(bool fl, int rez)
  164. {
  165.     if (fl)
  166.         rez++;
  167.     cout << endl;
  168.     if (fl == 0)
  169.         cout << "false" << endl;
  170.     else
  171.         cout << "true" << endl;
  172.     cout << "Ваш текущий результат: " << rez << "/5" << endl;
  173.     return rez;
  174. }
  175.  
  176. void RandomAnekdot()
  177. {
  178.     string str, n;
  179.     int p = 0;
  180.     srand(time(0));
  181.     n = IntToString(1 + rand() % 21);
  182.  
  183.     ifstream file("anekdoty.txt");
  184.     if (!file)
  185.         cout << "Код ошибки: 668. К сожалению, что-то пошло не так... Обратитесь к разработчику программы. Его e-mail: ek.toksol@gmail.com" << endl;
  186.     else
  187.         while (getline(file, str))
  188.         {
  189.             p = str.find(n);
  190.             if (p >= 0)
  191.             {
  192.                 cout << str << endl;
  193.                 while (getline(file, str))
  194.                 {
  195.                     if (str != "")
  196.                         cout << str << endl;
  197.                     else
  198.                         break;
  199.                 }
  200.                 break;
  201.             }
  202.         }
  203.     file.close();
  204. }
  205.  
  206. string IntToString(int val)
  207. {
  208.     ostringstream oss;
  209.     oss << val;
  210.     return oss.str();
  211. }
  212.  
  213. void AnekdotMenu()
  214. {
  215.     string lol;
  216.     int n;
  217.     FileReading("anstart.txt");
  218.     cin >> lol;
  219.     for (int i = 0; i < lol.length(); i++)
  220.     {
  221.         lol[i] = tolower(lol[i]);
  222.     }
  223.     if (lol == "lol")
  224.     {
  225.     esche:
  226.         RandomAnekdot();
  227.     }
  228.     else
  229.         goto menu;
  230.    
  231.     menu:
  232.     cout << endl << endl;
  233.     cout << "1 - Анекдот!" << endl;
  234.     cout << "2 - Выйти в главное меню" << endl;
  235.     cin >> n;
  236.  
  237.     system("cls");
  238.  
  239.     switch (n)
  240.     {
  241.     case 1: goto esche; break;
  242.     case 2: menu(); break;
  243.     default: goto menu; break;
  244.     }
  245. }
  246.  
  247. string TestVybor(string i, char n)
  248. {
  249.     string path;
  250.     path = "lr1/1.txt";
  251.     path[2] = n;
  252.     path[4] = i[0];
  253.     return path;
  254. }
  255.  
  256. string FileVybor(char n)
  257. {
  258.     string path;
  259.     path = "lr1.txt";
  260.     path[2] = n;
  261.     return path;
  262. }
  263.  
  264. void FileMenu(char n)
  265. {
  266.     int nom;
  267.     string path = FileVybor(n);
  268.     FileReading(path);
  269.     cout << endl;
  270.     cout << "1 - Пройти тест по пройденной теме" << endl;
  271.     cout << "2 - Выйти в главное меню" << endl;
  272.     cin >> nom;
  273.     nazad:
  274.     switch (nom)
  275.     {
  276.     case 1: system("cls"); TestProcess(n); break;
  277.     case 2: menu(); break;
  278.     default: goto nazad; break;
  279.     }
  280. }
  281.  
  282. string DeleteSpace(string answ)
  283. {
  284.     string answ2;
  285.     for (int i = 0; i < answ.length(); i++)
  286.     {
  287.         if ((answ[i] != ' ') && (answ[i] != '\n'))
  288.             answ2 += answ[i];
  289.     }
  290.     return answ2;
  291. }
  292.  
  293. void Mark(int rez)
  294. {
  295.     switch(rez)
  296.     {
  297.     case 0: cout << "Ужасно, чувак..." << endl;
  298.     case 1: cout << "Это очень плохо, парень..." << endl;
  299.     case 2: cout << "Плохо" << endl;
  300.     case 3: cout << "Нормально" << endl;
  301.     case 4: cout << "Молодец, у тебя хорошо получилось!" << endl;
  302.     case 5: cout << "Просто отличный результат! Ты крут, парень!" << endl;
  303.     }
  304. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement