Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.92 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cmath>
  4. #include <sstream>
  5. #include <vector>
  6.  
  7. using namespace std;
  8.  
  9. int main()
  10. {
  11. // СИСТЕМЫ СЧИСЛЕНИЯ
  12. setlocale(LC_ALL, "Russian");
  13. int d = 0;
  14. int n, m, j, k = 0, l, c, i;
  15. char digit;
  16. char A = 'A', B = 'B', C = 'C', D = 'D', E = 'E', F = 'F';
  17. cout << "Ведите начальную СС: ";
  18. cin >> n;
  19. cout << "Ведите число в начальной СС: ";
  20. cin >> i;
  21. cout << "Введите СС, в которую хотите перевести: ";
  22. cin >> m;
  23. /*int ch = atoi(i);
  24. cout << "ch = " << ch << endl;*/
  25. c = i;
  26. if (n == 10) { // перевод из десятичной СС отличается от перевода из других СС, поэтому необходимо прописать отдельный случай
  27. while (c > 0) {
  28. c /= 10; // делю вводимое число на 10, пока c(i) не будет равно 0, тем самым отделяя каждую цифру и увеличивая счётчик на один
  29. d++; // через цикл while считаю количество цифр в числе
  30. }
  31. vector <unsigned> mass(d); // работает как динамический массив, но удобнее
  32. for (j = 0; j < d; j++) {
  33. l = i / m; // нахожу частное
  34. mass[j] = i - l * m; // нахожу остаток от деления
  35. i = l; // присваиваю делимому (при первой итерации - начальному числу) частное
  36. }
  37. for (j = d - 1; j >= 0; j--) {
  38. /*if (mass[j] < 10) digit = '0' + mass[j];
  39. else digit = mass[j] - 10 + 'A';*/
  40. /*switch (mass[j]) {
  41. case 10:
  42. mass[j] = (char) 0x65;
  43. break;
  44. case 11:
  45. mass[j] = B;
  46. break;
  47. case 12:
  48. mass[j] = C;
  49. break;
  50. case 13:
  51. mass[j] = D;
  52. break;
  53. case 14:
  54. mass[j] = E;
  55. break;
  56. case 15:
  57. mass[j] = F;
  58. break;
  59. }*/
  60. cout << mass[j];
  61. }
  62. cout << endl;
  63. }
  64.  
  65. else {
  66. while (c != 0) {
  67. c /= 10; // делю вводимое число на 10, пока c(i) не будет равно 0, тем самым отделяя каждую цифру и увеличивая счётчик на один
  68. d++; // через цикл while считаю количество цифр в числе
  69. }
  70. vector <int> mass(d);
  71. for (j = 0; j < d; j++) {
  72. mass[j] = i % 10; // через цикл for разбиваю вводимое число (i) на цифры и записываю их в массив
  73. i /= 10;
  74. }
  75. for (j = 0; j < d; j++) {
  76. k += mass[j] * pow(n, j); // перевожу число в требуемую сс; j соответствует порядковому номеру цифры и степени, в которую надо возвести исходную сс
  77.  
  78. }
  79. cout << k << endl;
  80. }
  81.  
  82.  
  83. return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement