Guest User

Untitled

a guest
Dec 7th, 2019
2,110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.78 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime> //для шариков
  3. #include <fstream> //для обработки файлов
  4.  
  5. using namespace std;
  6.  
  7.  
  8. //Шарики
  9. /*
  10.  * Сюжет задачи про шарики. Из урны с 10 пронумерованными шариками вынимают по одному шарику.
  11.  * Подсчитать общее количество ситуаций, когда номер хотя бы одного вынутого шарика совпадает
  12.  * с порядковым номером действия "вынимания", например, когда шарик № 3 будет вынут 3-им по порядку.
  13.  */
  14. /*
  15. bool Iter() {
  16.     // 0, 1, 2, 3, .. ,9 - 10
  17.     bool used[10] = {false, false, false, false, false, false, false, false, false, false};
  18.     for(int i = 0; i < 10; ++i) {
  19.         int a = rand() % 10;
  20.         while(used[a])
  21.             a = rand() % 10;
  22.         used[a] = true;
  23.         if (i == a)
  24.             return true;
  25.     }
  26.     return false;
  27. }
  28.  
  29. int main() {
  30.     srand(time(nullptr));
  31.     int ans = 0, N = 10000000;
  32.  
  33.     for (int i = 0; i < N; ++i) {
  34.         ans += Iter();
  35.     }
  36.  
  37.     cout << ans* 1.0 / N;
  38.  
  39.     return 0;
  40. }*/
  41.  
  42.  
  43. //Обработка файлов - 1 вариант
  44. /*
  45. int main() {
  46.     // in.txt (in), out.txt(out)
  47.     ifstream in;
  48.     ofstream out;
  49.  
  50.     in.open("in.txt", ios_base::in); // "c:\folder\file.txt" (проверить полный путь к файлу на windows)
  51.     out.open("out.txt", ios_base::out);
  52.  
  53.     if (!in.is_open()) { // эквивалентно  in.is_open() == false
  54.         cout << "Error: can't open in file!\n";
  55.         return 1;
  56.     }
  57.  
  58.     char c, c1;
  59.     cout << "Введите на что заменить пробелы: ";
  60.     cin >> c1;
  61.  
  62.     while(!in.eof()) {
  63.         in.get(c);
  64.         if (c == ' ')
  65.             out.put(c1);
  66.         else
  67.             out.put(c);
  68.     }
  69.  
  70.     in.close();
  71.     out.close();
  72.     return 0;
  73. }
  74.  */
  75.  
  76. //Римская СС
  77. /*
  78. int f(char c) {
  79.     if (c == 'M')
  80.         return 1000;
  81.     else if (c == 'D')
  82.         return 500;
  83.     else if (c == 'C')
  84.         return 100;
  85.     else if (c == 'L')
  86.         return 50;
  87.     else if (c == 'X')
  88.         return 10;
  89.     else if (c == 'V')
  90.         return 5;
  91.     else if (c == 'I')
  92.         return 1;
  93.     else {
  94.         cout << "Error: unknown symbol " << c << "!\n";
  95.         exit(1);
  96.     }
  97. }
  98.  
  99. int main() {
  100.     string str;
  101.     cin >> str;
  102.     int a = f(str[str.size() - 1]);
  103.     int ans = a;
  104.     int b = 0;
  105.     int c = a; //маскимальный разряд, который мы обработали(обработка строки справа налево)
  106.     int j = 0; //сколько раз вподряд мы обработали разряд меньше максимального
  107.  
  108.     for (int i = str.size() - 2; i >= 0; i--) {
  109.         b = f(str[i]);
  110.         //проверка на то, что мы не написали меньший разряд слева от большего(для случаев DM, LC, VX - так нельзя)
  111.         if ((b == 500 && a == 1000) || (b == 50 && a == 100) || (b == 5 && a == 10)) { // b - левее а
  112.             cout << "Error!\n";
  113.             exit(1);
  114.         }
  115.  
  116.         //проверка на то, что мы не написали два меньших разряда вподряд слева от большего (IIX - две единицы слева от 10)
  117.         if (b > c) {
  118.             j = 0;
  119.             c = b;
  120.         } else if (b < c) {
  121.             ++j;
  122.             if (j == 2) {
  123.                 cout << "Error!\n";
  124.                 exit(1);
  125.             }
  126.         } else { // b == c
  127.             j = 0;
  128.         }
  129.         //конец проверки
  130.         if (b >= a)
  131.             ans += b;
  132.         else
  133.             ans -= b;
  134.         a = b;
  135.     }
  136.     cout << ans;
  137.     return 0;
  138. }/*
Advertisement
Add Comment
Please, Sign In to add comment