Advertisement
malixds_

Untitled

Nov 29th, 2021
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.51 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <math.h>
  4. #include <string>
  5. #include <fstream>
  6. #include <conio.h>
  7. using namespace std;
  8.  
  9. string ent;
  10. char c;
  11. bool rt = false;
  12. int anw;
  13. int n;
  14. int res = 0;
  15. double sum8, sum16 = 0;
  16. long double sum2 = 0;
  17. int num = 0;
  18.  
  19. int main() {
  20.     setlocale(LC_ALL, "ru");
  21.     cout << "Введите число: ";
  22.     cin >> ent;
  23.     n = ent.length();
  24.     int ps = n - 1;
  25.     for (int i = ent.length() - 1; i >= 0; i--) {
  26.         c = ent[i];
  27.         switch (c) {
  28.         case 'A':
  29.             rt = true;
  30.         case 'B':
  31.             rt = true;
  32.         case 'C':
  33.             rt - true;
  34.         case 'D':
  35.             rt = true;
  36.         case 'E':
  37.             rt = true;
  38.         case 'F':
  39.             rt = true;
  40.         }
  41.     }
  42.     if (rt == true) {
  43.         cout << "Ваше число записано в 16-чной системе счисления. Выберите искомую с.с.. Нажмите '8' или '2'" << '\n' <<
  44.             "для перевода в 8-чную или 2-чную систему счисления соответсвенно: ";
  45.         cin >> anw;
  46.         for (int i = 0; i <= ent.length() - 1; i++) {
  47.             c = ent[i];
  48.             switch (c) {
  49.             case '1':
  50.                 res += pow(16, ps);
  51.                 break;
  52.             case '2':
  53.                 res += 2 * pow(16, ps);
  54.                 break;
  55.             case '3':
  56.                 res += 3 * pow(16, ps);
  57.                 break;
  58.             case '4':
  59.                 res += 4 * pow(16, ps);
  60.                 break;
  61.             case '5':
  62.                 res += 5 * pow(16, ps);
  63.                 break;
  64.             case '6':
  65.                 res += 6 * pow(16, ps);
  66.                 break;
  67.             case '7':
  68.                 res += 7 * pow(16, ps);
  69.                 break;
  70.             case '8':
  71.                 res += 8 * pow(16, ps);
  72.                 break;
  73.             case '9':
  74.                 res += 9 * pow(16, ps);
  75.                 break;
  76.             case 'A':
  77.                 res += 10 * pow(16, ps);
  78.                 break;
  79.             case 'B':
  80.                 res += 11 * pow(16, ps);
  81.                 break;
  82.             case 'C':
  83.                 res += 12 * pow(16, ps);
  84.                 break;
  85.             case 'D':
  86.                 res += 13 * pow(16, ps);
  87.                 break;
  88.             case 'E':
  89.                 res += 14 * pow(16, ps);
  90.                 break;
  91.             case 'F':
  92.                 res += 15 * pow(16, ps);
  93.                 break;
  94.             }
  95.             ps = ps - 1;
  96.         }
  97.         if (anw == 8) {
  98.             while (res > 0) {
  99.                 sum8 = (sum8 + res % 8) / 10;
  100.                 res = res / 8;
  101.                 num += 1;
  102.             }
  103.             cout << "Значение введенного числа в искомой системе счисления = " << sum8 * pow(10, num);
  104.         }
  105.         if (anw == 2) {
  106.             while (res > 0) {
  107.                 sum2 = (sum2 + res % 2) / 10;
  108.                 res = res / 2;
  109.                 num += 1;
  110.             }
  111.             cout << "Значение введенного числа в искомой системе счисления = " << fixed
  112.                 << setprecision(0) << sum2 * pow(10, num) << endl;
  113.         }
  114.  
  115.     }
  116.     else
  117.         for (int i = 0; i <= ent.length() - 1; i++) {
  118.             c = ent[i];
  119.             cout << c;
  120.             switch (c)
  121.             {
  122.             case '2':
  123.                 rt = true;
  124.             case '3':
  125.                 rt = true;
  126.             case '4':
  127.                 rt = true;
  128.             case '5':
  129.                 rt = true;
  130.             case '6':
  131.                 rt = true;
  132.             case '7':
  133.                 rt = true;
  134.             }
  135.         }
  136.     if (rt == true) {
  137.         cout << "Вы записали число в 8-ной системе счисления. В какую перевести" << '\n' <<
  138.             "напишите '16' или '2' для перевода в эти с.с. соответсвенно: ";
  139.         cin >> anw;
  140.         for (int i = 0; i <= n - 1; i++) {
  141.             c = ent[i];
  142.             switch (c) {
  143.             case '1':
  144.                 res += pow(8, ps);
  145.                 break;
  146.             case '2':
  147.                 res += 2 * pow(8, ps);
  148.                 break;
  149.             case '3':
  150.                 res += 3 * pow(8, ps);
  151.                 break;
  152.             case '4':
  153.                 res += 4 * pow(8, ps);
  154.                 break;
  155.             case '5':
  156.                 res += 5 * pow(8, ps);
  157.                 break;
  158.             case '6':
  159.                 res += 6 * pow(8, ps);
  160.                 break;
  161.             case '7':
  162.                 res += 7 * pow(8, ps);
  163.                 break;
  164.             }
  165.             ps = ps - 1;
  166.         }
  167.         if (anw == 16) {
  168.             cout << hex << "Ваше число в искомой с.с. = " << res;
  169.             }
  170.         if (anw == 2) {
  171.             while (res > 0) {
  172.                 sum2 = (sum2 + res % 2) / 10;
  173.                 res = res / 2;
  174.                 num += 1;
  175.             }
  176.         }
  177.         cout << "Ваше число в искомой с.с. = " << fixed
  178.             << setprecision(0) << sum2 * pow(10, num);
  179.         }
  180.     else {
  181.         cout << "Ваше число записано в 2-чной с.с. В какую перевести" << '\n' <<
  182.             "напишите '16' или '8' для перевода в эти с.с. соответсвенно: ";
  183.         cin >> anw;
  184.         for (int i = 0; i <= n - 1; i++) {
  185.             c = ent[i];
  186.             switch (c)
  187.             {
  188.             case '1':
  189.                 res += pow(2, ps);
  190.                 break;
  191.             }
  192.             ps -= 1;
  193.         }
  194.         if (anw == 16) {
  195.                 cout << hex << "Ваше число в искомой с.с. = " << res;
  196.         }
  197.         if (anw == 8) {
  198.             while (res > 0) {
  199.                 sum8 = (sum8 + res % 2) / 10;
  200.                 res = res / 2;
  201.                 num += 1;
  202.             }
  203.             cout << "Число в 16-ной - " << sum8 * pow(10, num);
  204.         }
  205.     }
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement