Untitled

 avatar
unknown
plain_text
2 years ago
2.3 kB
6
Indexable

#include <iostream>
#include <cmath>

int main() {
    
    // Перевод из 14 в 8 ричную систему счисления
    std::string N;
    std::cout << "Введите число в 14-ричной системе счисления: ";
    std::cin >> N;
    // Проверка на существование чисел в 14-ричной системе
    for(char d : N) {
        if (!((d >= '0' && d <= '9') || (d >= 'A' && d <= 'F'))) {
            std::cout << "Неверный ввод 14-ричной системы счисления." << std::endl;
            return 1; // Завершаем программу с ошибкой
        }
    }
    std::string oN = "";
    int dN = 0;
    for (int i = 0; i < N.length(); i++) {
        char d = N[i];
        int dV = 0;
        if (d >= '0' && d <= '9') {dV = d - '0';}
        else if (d >= 'A' && d <= 'D') {dV = d - 'A' + 10;}
        else if (d >= 'E' && d <= 'F') {dV = d - 'E' + 14;}
        dN += dV * pow(14, N.length() - i - 1);
    }
    while (dN > 0) {
        int r = dN % 8;
        dN /= 8;
        oN = std::to_string(r) + oN;
    }
    std::cout << "Число в 8-ричной системе счисления: " << oN << std::endl;
    
    // И обратная программа
    std::string iN;
    std::cout << "Введите число в 8-ричной системе счисления: ";
    std::cin >> iN;
    // Проверка на существование чисел в 8-ричной системе
    for(char t : iN) {
        if (!(t >= '0' && t <= '7')) {
            std::cout << "Неверный ввод 8-ричной системы счисления." << std::endl;
            return 1; // Завершаем программу с ошибкой
        }
    }
    std::string tN = "";
    int lN = 0;
    for (int i = 0; i < iN.length(); i++) {
        char t = iN[i] - '0';
        lN = lN * 8 + t;
    }
    while (lN > 0) {
        int r = lN % 14;
        lN /= 14;
        if (r >= 0 && r <= 9) { tN = std::to_string(r) + tN;}
        else if (r >= 10 && r <= 13) {tN = char('A' + r- 10) + tN;}
    }
    std::cout << "Число в 14-ричной системе счисления: " << tN << std::endl;
    return 0;
}
Editor is loading...