Перевод из одной системы в другую - Pascal
Формулировка задачи:
Помогите написать программу перевода натуральных чисел из одной системы в другую без использованния циклов.
Решение задачи: «Перевод из одной системы в другую»
textual
Листинг программы
[FONT=monospace]program Z_1_2; {$APPTYPE CONSOLE} uses SysUtils, Crt32, RusString; Const BaseBin = 2; // Основание двоичной системы Digit: String[10] = '0123456789'; // Строка символов Var Bin: String; // Число в двоичной системе счисления Dec: Integer; // Число в десятичной системе счисления Symbol,L: Byte;// Длина строки Bin и номер символа в строке count: Byte; // Счетчик примеров Label M1,M2; // Метки begin // Из двоичной в десятичную ClrScr; count := 1; Repeat //Цикл Write(Count, Rus('. Введите число в двоичной системе счисления: ')); ReadLn(Bin); Dec := 0; Symbol :=1; L := Length(Bin); // Определяем длину строки Bin M1: begin //Метка M1 Dec:= Dec*BaseBin + Pos(Bin[Symbol],Digit)-1; (*POS (SUBST, ST) - функция типа INTEGER; отыскивает в строке ST первое вхождение подстроки SUBST и возвращает номер позиции, с которой она начинается; если подстрока не найдена, возвращается ноль.*) Inc(Symbol); // Перемещаемся к следующему символу в строке If L>=Symbol then Goto M1; // Проверяем если мы не до шли до конца строки end; // Возврщаемся к метке M1 WriteLn(Rus(' В десятичной: '), Dec); // Из десятичной в двоичную Bin := ''; // Делаем строку Bin пустой M2: Begin // Метка M2 Bin := Digit[(Dec mod BaseBin)+1]+Bin; // Прибавляем к строке Bin символ // остатка от деления плюс один строки Digit Dec := Dec div BaseBin; // Делим If Not (Dec=0) Then Goto M2; // Проверяем если Dec<>0 Возвращаемся к M2 end; WriteLn(Rus(' В двоичной: '), Bin); Inc(Count);// Прибавляем 1 к Count Until (ReadKey=#27) or (Count>10); //Условие для выхода- Нажата клавиша ESC или более 10 тестовых примеров[/FONT] [FONT=monospace]end.[/FONT]
Объяснение кода листинга программы
- Программа начинается с объявления типа программы и использования необходимых библиотек.
- Затем объявляются константы и переменные, включая основание двоичной системы (BaseBin), строку символов (Digit), переменную Bin для хранения числа в двоичной системе, переменную Dec для хранения числа в десятичной системе, и переменные Symbol и L для работы с длиной строки Bin.
- Далее идет метка M1, за которой следует цикл, в котором пользователь вводит число в двоичной системе, а программа преобразует это число в десятичную систему и выводит результат. Внутри цикла выполняются следующие действия:
- Dec устанавливается равным 0.
- Symbol устанавливается равным 1.
- L устанавливается равным длине строки Bin.
- Если L больше или равно Symbol, то цикл повторяется, иначе программа возвращается к метке M1.
- После вывода результата в десятичной системе, Symbol увеличивается на 1, и если это приводит к выходу за пределы строки Bin, то программа возвращается к метке M1.
- После метки M1 идет метка M2, за которой следует еще один цикл, в котором число в десятичной системе преобразуется обратно в двоичную систему. Внутри цикла выполняются следующие действия:
- Bin устанавливается равным строке Digit, к которой добавляется символ, соответствующий остатку от деления Dec на BaseBin плюс 1.
- Dec устанавливается равным Dec деленное на BaseBin.
- Если Dec не равно 0, то цикл повторяется, иначе программа возвращается к метке M2.
- Цикл продолжается до тех пор, пока пользователь не нажмет клавишу ESC или не будет выполнено условие Count больше 10.
- Программа заканчивается без использования вложенных списков.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д