PASCAL. Assignment on strings. Write a program that converts an integer N (1 ≤ |N| < 10^9) from a number system with

PASCAL. Assignment on strings. Write a program that converts an integer N (1 ≤ |N| < 10^9) from a number system with base K (2 ≤ K ≤ 36) to a number system with base M (2 ≤ M ≤ 36).

Input data:
The first input line contains the representation of number N in a number system with base K. The second line contains the numbers K and M separated by a space.

Output data:
The program should output the representation of number N in a number system with base M.

Example:
Input: AB 16 8
Output: 253

Input: -253 8 16
Output: -AB

Input: 1031343142212 5 7
Output: 6601563462
Волшебник_9515

Волшебник_9515

Конечно! Вот программный код на языке Pascal, который решает данную задачу:

pascal
program NumberConversion;
uses sysutils;

function ConvertBase(inputNumber: string; inputBase, outputBase: Integer): string;
var
i, decimalNumber, remainder: Integer;
outputNumber: string;
const
digits: string = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
begin
// Переводим исходное число в десятичную систему счисления
decimalNumber := 0;
for i := 1 to Length(inputNumber) do
begin
decimalNumber := decimalNumber * inputBase;
decimalNumber := decimalNumber + Pos(inputNumber[i], digits) - 1;
end;

// Переводим десятичное число в целевую систему счисления
outputNumber := "";
repeat
remainder := decimalNumber mod outputBase;
outputNumber := digits[remainder + 1] + outputNumber;
decimalNumber := decimalNumber div outputBase;
until decimalNumber = 0;

Result := outputNumber;
end;

var
inputNumber: string;
inputBase, outputBase: Integer;
begin
// Ввод исходных данных
Write("Введите число в системе счисления с основанием K: ");
ReadLn(inputNumber);
Write("Введите основание K и M через пробел: ");
ReadLn(inputBase, outputBase);

// Выполнение преобразования и вывод результата
WriteLn("Число ", inputNumber, " в системе счисления с основанием M: ", ConvertBase(inputNumber, inputBase, outputBase));
end.


Рассмотрим программу более подробно. В начале программы мы импортируем модуль sysutils, который помогает нам использовать полезные функции для работы со строками. Затем у нас есть функция `ConvertBase`, которая выполняет преобразование чисел из одной системы счисления в другую.

Функция `ConvertBase` принимает три параметра: `inputNumber` (исходное число в строковом формате), `inputBase` (исходное основание системы счисления) и `outputBase` (целевое основание системы счисления).

Сначала мы переводим исходное число в десятичную систему, используя формулу полиномиального разложения. Затем мы переводим полученное десятичное число в целевую систему счисления, путем последовательного выделения остатков и добавления соответствующих цифр в результат.

Основная часть программы сначала запрашивает у пользователя исходные данные: число `inputNumber` в системе счисления с основанием `inputBase`, а затем основание целевой системы счисления `outputBase`.

После ввода данных происходит вызов функции `ConvertBase` с указанными параметрами и выводится результат преобразования.

Надеюсь, этот код поможет вам решить задачу на перевод чисел из одной системы счисления в другую на языке Pascal. Если у вас возникнут вопросы, пожалуйста, не стесняйтесь задавать!
Знаешь ответ?
Задать вопрос
Привет!
hello