diff --git a/z-9.cpp b/z-9.cpp index 345720d..88b496d 100644 --- a/z-9.cpp +++ b/z-9.cpp @@ -3,6 +3,7 @@ #include #include using namespace std; + int convertToDecimal(const string& number, int base) { int decimalValue = 0; int length = number.length(); @@ -14,10 +15,10 @@ int convertToDecimal(const string& number, int base) { if (digit >= '0' && digit <= '9') { value = digit - '0'; } - else if (digit >= 'A' && digit <= 'F') { + else if (digit >= 'A' && digit <= 'Z') { value = digit - 'A' + 10; } - else if (digit >= 'a' && digit <= 'f') { + else if (digit >= 'a' && digit <= 'z') { value = digit - 'a' + 10; } else { @@ -25,7 +26,7 @@ int convertToDecimal(const string& number, int base) { } if (value >= base) { - throw invalid_argument("Цифра неверна для сс (осуждаю)"); + throw invalid_argument("Цифра неверна для данной системы счисления"); } decimalValue += value * pow(base, i); @@ -43,7 +44,7 @@ string convertFromDecimal(int number, int base) { result += (remainder + '0'); // Добавляем цифры 0-9 } else { - result += (remainder - 10 + 'A'); // Добавляем буквы A-F + result += (remainder - 10 + 'A'); // Добавляем буквы A-Z } number /= base; } @@ -58,11 +59,16 @@ int main() { setlocale(LC_ALL, ""); cout << "Введите число: "; cin >> inputNumber; - cout << "Введите основание исходной системы счисления (2-16): "; + cout << "Введите основание исходной системы счисления (2-36): "; cin >> oldBase; - cout << "Введите основание новой системы счисления (2-16): "; + cout << "Введите основание новой системы счисления (2-36): "; cin >> newBase; + if (oldBase < 2 || oldBase > 36 || newBase < 2 || newBase > 36) { + cerr << "Основания должны быть в диапазоне от 2 до 36." << endl; + return 1; + } + try { // Переводим число в десятичную систему int decimalValue = convertToDecimal(inputNumber, oldBase);