evgeniyosipov

Ekzamenistudenti.cpp

Dec 27th, 2014
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.94 KB | None | 0 0
  1. #include "stdafx.h"
  2.  
  3. int _tmain(int argc, _TCHAR* argv[])
  4. {
  5.  
  6.     setlocale(LC_ALL, "Russian");
  7.     srand(time(0));
  8.  
  9.     std::cout << "\n\nСтартовал очень серьёзный экзамен по устройству Собиратора-1000\n"
  10.                  "Всего на экзамене присутствует 25 взмокших студентов"
  11.                  "\nи один Злой экзаменатор =)\n"
  12.                  "\nPS Пролисните вниз, чтоыб увидеть всю программу"<< std::endl;
  13.  
  14.     int goodStudent = rand()%25; // Кол-во Не списывающих студентов
  15.     int  hitrStudent  = 25 - goodStudent; // Кол-во потенциально списывающих студентов
  16.  
  17.     std::vector <std::string> spisStudent; // Вектор, который хранит имена спис. студентов
  18.  
  19.     std::string sname[] = {"Александр", "Валерия", "Евгений", "Владимир", "Пётр",
  20.                            "Степпан", "Марина", "Карина", "Алексей", "Семён",
  21.                            "Ирина", "Светлана", "Алеся", "Мария", "Ольга"};
  22.  
  23.     int i = 0;
  24.     // Цикл заполнения вектора именами спис. студентов
  25.     if (hitrStudent!=0) {
  26.     while(1)
  27.     {
  28.     for (; i!=hitrStudent; ++i)
  29.         {
  30.             spisStudent.push_back(sname[rand()%15]);
  31.         }
  32.  
  33.     break;
  34.     }
  35.     }
  36.  
  37.     // Вывод информации
  38.     std::cout << "\nВсего освобождённых от экзамена студентов: " <<  goodStudent << std::endl;
  39.     std::cout << "Всего потенциально списывающих студентов: " <<  spisStudent.size() << "\n" << std::endl;
  40.  
  41.     int timeP = rand()%31;
  42.     std::cout << "===================================" << std::endl;
  43.  
  44.     if (timeP==0)
  45.         std::cout << "Строгий преподователь внимательно осмотрел студентов на 1 минуте" << std::endl;
  46.     else
  47.         std::cout << "Строгий преподователь внимательно осмотрел студентов на " << timeP << " минуте" << std::endl;
  48.  
  49.     std::cout << "===================================\n" << std::endl;
  50.  
  51.     int timeS = 0;
  52.     std::vector <std::string> zapalili;
  53.     std::vector <std::string> nezdal;
  54.  
  55.     //Цикл проверки и создания времени списывания
  56.  
  57.     for (std::vector <std::string>::const_iterator it = spisStudent.begin(),end = spisStudent.end(); it != end; it++)
  58.     {
  59.             metka1: // Точка возврата для goto
  60.             int countRazShp = rand()%4;
  61.  
  62.                 // Проверка, воспользовался ли шпорой
  63.                 if (countRazShp==0)
  64.                 {
  65.                 std::cout << "Студент " << *it << " НЕ воспользовался шпаргалками" << std::endl;
  66.  
  67.                 if(rand()%2 == 1)
  68.                   std::cout << "СДАЛ\n" << std::endl;
  69.                   else
  70.                   {
  71.                       std::cout << "НЕ СДАЛ\n" << std::endl;
  72.                       nezdal.push_back(*it);
  73.                   }
  74.                     continue;
  75.                 }
  76.             else
  77.                 std::cout << "Студент " << *it << " воспользовался шпаргалками на " << std::flush;
  78.  
  79.             // Проверка вероятностей
  80.  
  81.             for (int ii=0; ii!=countRazShp; ii++)
  82.             {
  83.                 timeS = rand()%31;
  84.  
  85.                 if (timeS == timeP)
  86.                 {
  87.                     if (timeS==0)
  88.                         std::cout << "!!!ЗАПАЛИЛИ И ВЫГНАЛИ!!! (на 1 минуте!)\n" << std::endl;
  89.                     else
  90.                         std::cout << "!!!ЗАПАЛИЛИ И ВЫГНАЛИ!!! (на " << timeS << " минуте!)\n" << std::endl;
  91.  
  92.                     zapalili.push_back(*it);
  93.                     it++;
  94.                     goto metka1;           // goto... здесь уж ничего не поделаешь, пришлось использовать!
  95.                 }
  96.  
  97.                 if (timeS==0)
  98.                     std::cout << "1, " << std::flush;
  99.  
  100.                 else
  101.                 std::cout << timeS << ", " << std::flush;
  102.                 }
  103.  
  104.               std::cout << "минуте(ах) \n" << std::flush;
  105.  
  106.               if (rand()%2 == 1)
  107.                   std::cout << "СДАЛ\n" << std::endl;
  108.               else
  109.               {
  110.                   std::cout << "НЕ СДАЛ\n" << std::endl;
  111.                   nezdal.push_back(*it);
  112.               }
  113.     }
  114.     std::cout << "===================================" << std::endl;
  115.     std::cout << "\tИТОГИ" << std::endl;
  116.     std::cout << "===================================" << std::endl;
  117.     std::cout << "\nКол-во не сдавших экзамен из-за списывания: " <<  zapalili.size() << "\n" << std::endl;
  118.     std::cout << "Кол-во просто не сдавших экзамен: " <<  nezdal.size() << "\n" << std::endl;
  119.     std::cout << "Кол-во сдавших экзамен: " <<  (25-nezdal.size()-zapalili.size())  << "\n" << std::endl;
  120.  
  121.     std::cout << "Евгений Осипов (www.fastandclever.ru), 2011\n" << std::endl;
  122.  
  123.     HANDLE hStdout = GetStdHandle (STD_OUTPUT_HANDLE);
  124.  
  125.     COORD orig = {0, 0};
  126.     SetConsoleCursorPosition (hStdout, orig);
  127.  
  128.     system("pause");
  129.  
  130. }
Advertisement
Add Comment
Please, Sign In to add comment