Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cmath>
- #include <sstream>
- #include <vector>
- using namespace std;
- int main()
- {
- // СИСТЕМЫ СЧИСЛЕНИЯ
- setlocale(LC_ALL, "Russian");
- int d = 0;
- int n, m, j, k = 0, l, c, i;
- char digit;
- char A = 'A', B = 'B', C = 'C', D = 'D', E = 'E', F = 'F';
- cout << "Ведите начальную СС: ";
- cin >> n;
- cout << "Ведите число в начальной СС: ";
- cin >> i;
- cout << "Введите СС, в которую хотите перевести: ";
- cin >> m;
- /*int ch = atoi(i);
- cout << "ch = " << ch << endl;*/
- c = i;
- if (n == 10) { // перевод из десятичной СС отличается от перевода из других СС, поэтому необходимо прописать отдельный случай
- while (c > 0) {
- c /= 10; // делю вводимое число на 10, пока c(i) не будет равно 0, тем самым отделяя каждую цифру и увеличивая счётчик на один
- d++; // через цикл while считаю количество цифр в числе
- }
- vector <unsigned> mass(d); // работает как динамический массив, но удобнее
- for (j = 0; j < d; j++) {
- l = i / m; // нахожу частное
- mass[j] = i - l * m; // нахожу остаток от деления
- i = l; // присваиваю делимому (при первой итерации - начальному числу) частное
- }
- for (j = d - 1; j >= 0; j--) {
- /*if (mass[j] < 10) digit = '0' + mass[j];
- else digit = mass[j] - 10 + 'A';*/
- /*switch (mass[j]) {
- case 10:
- mass[j] = (char) 0x65;
- break;
- case 11:
- mass[j] = B;
- break;
- case 12:
- mass[j] = C;
- break;
- case 13:
- mass[j] = D;
- break;
- case 14:
- mass[j] = E;
- break;
- case 15:
- mass[j] = F;
- break;
- }*/
- cout << mass[j];
- }
- cout << endl;
- }
- else {
- while (c != 0) {
- c /= 10; // делю вводимое число на 10, пока c(i) не будет равно 0, тем самым отделяя каждую цифру и увеличивая счётчик на один
- d++; // через цикл while считаю количество цифр в числе
- }
- vector <int> mass(d);
- for (j = 0; j < d; j++) {
- mass[j] = i % 10; // через цикл for разбиваю вводимое число (i) на цифры и записываю их в массив
- i /= 10;
- }
- for (j = 0; j < d; j++) {
- k += mass[j] * pow(n, j); // перевожу число в требуемую сс; j соответствует порядковому номеру цифры и степени, в которую надо возвести исходную сс
- }
- cout << k << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement