Advertisement
istomina_sofia

перевод из 10 в 2

Jun 25th, 2021
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.62 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. using namespace std;
  6. int main()
  7. {
  8.     setlocale(LC_ALL, "Russian");
  9.     int q;
  10.     tryAgain:
  11.     cout << "Хотите ли вы посмотреть обучения или пройти тесты?\nОбучения (1)   Тесты (2)   Завершить программу (3)\n";
  12.     cin >> q;
  13.     cout << " " << endl;
  14.     if (q == 1)
  15.     {
  16.         int t;
  17.         cout << "Выберите обучение\nИз 10-ой системы в 2-ую (1)     Из 2-ой системы в 10-ую (2)" << endl;
  18.         cin >> t;
  19.         cout << " " << endl;
  20.         if (t == 1)
  21.         {
  22.             int v, a, b, n, m;
  23.             cout << "Введите десятичное число" << endl;
  24.             cin >> v;
  25.             cout << "Чтобы перевести число " << v << ", надо делить его на 2, пока не получится 0" << endl;
  26.             b = 0;
  27.             n = 1;
  28.             a = v;
  29.             while (a > 0)
  30.             {
  31.                 m = a % 2;
  32.                 cout << a << "/2 = " << a / 2 << " (Остаток " << m << ")" << endl;
  33.                 a = a / 2;
  34.                 b = b + (m * n);
  35.                 n = n * 10;
  36.             }
  37.             cout << "Теперь запишем наше число в двоичной системе: запишем остатки в обратном порядке" << endl;
  38.             cout << "Число " << v << " в двоичной системе счисления равно " << b << endl;
  39.             cout << " " << endl;
  40.         }
  41.         else
  42.         {
  43.             int v, a, b, n, m, k = -1;
  44.             cout << "Введите двоичное число" << endl;
  45.             cin >> v;
  46.             cout << "Чтобы перевести число " << v << ", надо представить его в виде суммы произведений цифр числа на основание (2) в степени," << endl;
  47.             cout << "соответствующей месту цифры и найти ее десятичное значение(цифры двоичного числа брать с конца, а степень брать с нуля)\n";
  48.             m = 1;
  49.             a = 0;
  50.             b = v;
  51.             while (b > 0)
  52.             {
  53.                 k++;
  54.                 n = b % 10;
  55.                 cout << n << "*2^" << k;
  56.                 b = b / 10;
  57.                 a = a + (n * m);
  58.                 m = m * 2;
  59.                 if (b > 0)
  60.                 {
  61.                     cout << " + ";
  62.                 }
  63.                 else
  64.                 {
  65.                     cout << " ";
  66.                 }
  67.             }
  68.             cout << " " << endl;
  69.             cout << "Теперь запишем наше число в десятичной системе: сложим полученное" << endl;
  70.             cout << "Число " << v << " в десятичной системе счисления равно " << a << endl;
  71.             cout << " " << endl;
  72.         }
  73.         goto tryAgain;
  74.     }
  75.     else if (q == 2 )
  76.     {
  77.         cout << "Тест 1: переведите 5 чисел из 10-ой системы счисления в 2-ную. За каждый правильный ответ получаете 1 балл." << endl;
  78.         cout << " " << endl;
  79.         {
  80.             int mark = 0;
  81.             int i = 0;
  82.             while (i < 5)
  83.             {
  84.                 srand(time(NULL));
  85.                 int A = 1;
  86.                 int B = 100;
  87.                 int a, b, c, n, m;
  88.                 for (int i = 0; i < 100; i++)
  89.                 {
  90.                     a = A + rand() % ((B + 1) - A);
  91.                 }
  92.                 cout << "Переведите " << a << endl;
  93.                 cin >> c;
  94.                 b = 0;
  95.                 n = 1;
  96.                 while (a > 0)
  97.                 {
  98.                     m = a % 2;
  99.                     a = a / 2;
  100.                     b = b + (m * n);
  101.                     n = n * 10;
  102.                 }
  103.                 {
  104.                     if (c == b)
  105.                     {
  106.                         mark++;
  107.                         cout << "Верно" << endl;
  108.                     }
  109.                     else
  110.                     {
  111.                         cout << "Неверно" << endl;
  112.                     }
  113.                 }
  114.                 i++;
  115.             }
  116.             cout << " " << endl;
  117.             switch (mark)
  118.             {
  119.             case 5: {cout << "Оценка: отлично - 5" << endl; break; }
  120.             case 4: {cout << "Оценка: хорошо - 4" << endl; break; }
  121.             case 3: {cout << "Оценка: удовлетворительно - 3" << endl; break; }
  122.             case 2: {cout << "Оценка: неудовлетворительно - 2" << endl; break; }
  123.             case 1: {cout << "Оценка: неудовлетворительно - 2" << endl; break; }
  124.             case 0: {cout << "Оценка: неудовлетворительно - 2" << endl; break; }
  125.             }
  126.         }
  127.         int p;
  128.         cout << " " << endl;
  129.         cout << "Для прохождения теста 2 введите цифру (1)\n";
  130.         cin >> p;
  131.         cout << " " << endl;
  132.         cout << "Тест 2: переведите 5 чисел из 2-ой системы счисления в 10-ую. За каждый правильный ответ получаете 1 балл." << endl;
  133.         cout << " " << endl;
  134.         {
  135.             int mark = 0;
  136.             int i = 0;
  137.             while (i < 5)
  138.             {
  139.                 srand(time(0));
  140.                 int A = 1;
  141.                 int B = 100;
  142.                 int a, b, c, n, m, f;
  143.                 for (int i = 0; i < 100; i++)
  144.                 {
  145.                     f = A + rand() % ((B + 1) - A);
  146.                     b = 0;
  147.                     n = 1;
  148.                     while (f > 0)
  149.                     {
  150.                         m = f % 2;
  151.                         f = f / 2;
  152.                         b = b + (m * n);
  153.                         n = n * 10;
  154.                     }
  155.                 }
  156.                 cout << "Переведите " << b << endl;
  157.                 cin >> c;
  158.                 m = 1;
  159.                 a = 0;
  160.                 while (b > 0)
  161.                 {
  162.                     n = b % 10;
  163.                     b = b / 10;
  164.                     a = a + (n * m);
  165.                     m = m * 2;
  166.                 }
  167.                 if (c == a)
  168.                 {
  169.                     mark++;
  170.                     cout << "Верно" << endl;
  171.                 }
  172.                 else
  173.                 {
  174.                     cout << "Неверно" << endl;
  175.                 }
  176.                 i++;
  177.             }
  178.             cout << " " << endl;
  179.             switch (mark)
  180.             {
  181.             case 5: {cout << "Оценка: отлично - 5" << endl; break; }
  182.             case 4: {cout << "Оценка: хорошо - 4" << endl; break; }
  183.             case 3: {cout << "Оценка: удовлетворительно - 3" << endl; break; }
  184.             case 2: {cout << "Оценка: неудовлетворительно - 2" << endl; break; }
  185.             case 1: {cout << "Оценка: неудовлетворительно - 2" << endl; break; }
  186.             case 0: {cout << "Оценка: неудовлетворительно - 2" << endl; break; }
  187.             }
  188.             cout << " " << endl;
  189.         }
  190.         goto tryAgain;
  191.     }
  192.     else
  193.     {
  194.     system("pause");
  195.     return 0;
  196.     }
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement