PASCAL. String task. Write a program that converts an integer N (1 ≤ |N| < 10^9) from a number system with base K

  • 37
PASCAL. String task. 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: The first input line contains the representation of the number N in a number system with base K. The second line contains the numbers K and M separated by a space.

Output: The program should output the representation of the 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
Zhuzha
69
Добро пожаловать в мир программирования!

Для решения этой задачи нам понадобится написать программу на языке Pascal. Программа должна будет принимать входные данные и преобразовывать число из одной системы счисления в другую. Давайте разберемся, как это можно сделать.

!Шаг 1:
Прежде всего, нам необходимо прочитать входные данные. В нашем случае, входные данные состоят из трех значений: число N в системе счисления с основанием K, а также значения K и M, разделенные пробелом. Для этого мы должны воспользоваться командой ReadLn, как показано ниже:

{ReadLn}(N,K,M);

!Шаг 2:
В следующем шаге нам нужно преобразовать число N из системы счисления с основанием K в десятичную систему счисления. Это можно сделать с помощью следующего кода:

{decimal\_number}:=0;
{power}:={Length}(N)1;
{for} i:=1 {to} {Length}(N) {do}
Unknown environment '{align*}'

!Шаг 3:
Теперь, когда у нас есть число в десятичной системе счисления, нам нужно преобразовать его в систему счисления с основанием M. Это можно сделать с помощью следующего кода:

{result}:= "";
{while} {decimal\_number}>0 {do}
Unknown environment '{align*}'

!Шаг 4:
И наконец, мы должны вывести полученный результат. Для этого воспользуемся командой WriteLn:

{WriteLn}({result});

Полный код программы выглядит следующим образом:

\[
\begin{{align*}}
\text{{program BaseConversion;}} \
\text{{var}} \
\text{{N: string;}} \
\text{{K, M: integer;}} \
\text{{decimal\_number, power, temp: integer;}} \
\text{{result: string;}} \
\text{{remainder: integer;}} \
\text{{begin}} \
\text{{ReadLn}}(N, K, M); \
\text{{decimal\_number := 0;}} \
\text{{power := Length(N) - 1;}} \
\text{{for i := 1 to Length(N) do}} \
\text{{begin}} \
\text{{if N[i] in ["0".."9"] then}} \
\text{{temp := Ord(N[i]) - Ord("0")}} \
\text{{else}} \
\text{{temp := Ord(UpCase(N[i])) - Ord("A") + 10;}} \
\text{{decimal\_number := decimal\_number + temp * Round(Power(K, power));}} \
\text{{power := power - 1;}} \
\text{{end;}} \
\text{{result := "";}} \
\text{{while decimal\_number > 0 do}} \
\text{{begin}} \
\text{{remainder := decimal\_number \% M;}} \
\text{{decimal\_number := decimal\_number div M;}} \
\text{{if remainder < 10 then}} \
\text{{result := Chr(remainder + Ord("0")) + result}} \
\text{{else}} \
\text{{result := Chr(remainder + Ord("A") - 10) + result;}} \
\text{{end;}} \
\text{{WriteLn(result);} \
\text{{end.}} \
\end{{align*}}
\]

Теперь, когда вы знаете, как решить эту задачу на языке Pascal, вы можете использовать этот код для написания своей программы. Удачи!