Вопрос задан 01.08.2023 в 19:55. Предмет Информатика. Спрашивает Корченова Ксюша.

Всех приветствую! Если Вам не сложно, то хотел бы попросить помочь. Задачу необходимо решить на ЯП

Pascal с использованием подпрограмм, если можно, то с комментариями переменных и некоторых функций. Нужно сделать программу, в которой при помощи case можно выбрать систему, из который будет совершаться перевод, а потом аналогично через case выбрать систему, в которую нужно перевести. Системы счисления: 2, 8, 10 и 16. Заранее спасибо.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Самойлов Влад.
// PascalABC.NET 3.3, сборка 1625 от 17.01.2018
// Внимание! Если программа не работает, обновите версию!

function aToDec(n:string;k:integer):integer;
// Перевод из системы по основанию k в десятичную
begin
  var s:='0123456789ABCDEF';
  Result:=0;
  var pa:=1;
  for var i:=Length(n) downto 1 do begin
    Result+=pa*(Pos(n[i],s)-1);
    pa*=k
    end
end;

function DecToa(n,k:integer):string;
// Перевод из десятичной системы в систему по основанию k
begin
  Result:='';
  while n>0 do begin
    var r:=n mod k;
    if r<10 then Result:=r+Result
    else Result:=Chr(Ord('A')+r-9)+Result;
    n:=n div k
    end
end;

function AtoB(s:string;A,B:integer):string;
// Перевод из системы по основанию A в систему по основанию B
begin
  Result:=DecToa(aToDec(s,A),B)
end;
   
begin
  var n:=ReadlnString('Какое число перевести?');
  var (a,b):=ReadInteger2('Исходное и результирующее основания:');
  Writeln(n,'(',a,') = ',AtoB(n,a,b),'(',b,')');
end.

Пример
Какое число перевести? 2018
Исходное и результирующее основания: 10 16
2018(10) = 7E2(16)
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Приветствую! Конечно, я могу помочь вам написать программу на Pascal для перевода чисел между системами счисления. Ниже представлен пример программы с комментариями, которая выполняет указанную задачу:

pascal
program NumberConverter; uses SysUtils; // Функция для перевода числа из одной системы счисления в другую function ConvertNumber(number: string; fromBase, toBase: Integer): string; var decimalNumber: LongInt; begin // Преобразование числа в десятичную систему счисления case fromBase of 2: decimalNumber := StrToInt('$' + number); // Преобразование двоичного числа в десятичное 8: decimalNumber := StrToInt('$' + number); // Преобразование восьмеричного числа в десятичное 10: decimalNumber := StrToInt(number); // Число уже в десятичной системе 16: decimalNumber := StrToInt('$' + number); // Преобразование шестнадцатеричного числа в десятичное else begin Writeln('Ошибка: Неподдерживаемая система счисления.'); Halt; end; end; // Преобразование десятичного числа в целевую систему счисления case toBase of 2: Result := IntToBin(decimalNumber); // Преобразование десятичного числа в двоичное 8: Result := IntToOct(decimalNumber); // Преобразование десятичного числа в восьмеричное 10: Result := IntToStr(decimalNumber); // Число уже в десятичной системе 16: Result := IntToHex(decimalNumber); // Преобразование десятичного числа в шестнадцатеричное else begin Writeln('Ошибка: Неподдерживаемая система счисления.'); Halt; end; end; end; var number: string; fromBase, toBase: Integer; resultNumber: string; begin Writeln('Программа для перевода чисел между системами счисления.'); Writeln('Поддерживаемые системы счисления: 2, 8, 10, 16.'); // Ввод исходного числа Write('Введите число: '); Readln(number); // Ввод исходной системы счисления Write('Введите систему счисления исходного числа (2, 8, 10, 16): '); Readln(fromBase); // Ввод целевой системы счисления Write('Введите систему счисления, в которую нужно перевести число (2, 8, 10, 16): '); Readln(toBase); // Выполнение перевода числа и вывод результата resultNumber := ConvertNumber(number, fromBase, toBase); Writeln('Результат перевода: ', resultNumber); end.

Программа позволяет пользователю вводить число и выбирать исходную и целевую системы счисления с помощью case. Затем она выполняет перевод числа и выводит результат.

Обратите внимание, что в Pascal нет стандартных функций для прямого преобразования чисел между системами счисления, поэтому я использовал встроенные функции для преобразования чисел в десятичную систему счисления (StrToInt), а затем обратно из десятичной системы в нужную систему счисления (IntToBin, IntToOct, IntToStr, IntToHex). Обратите внимание, что такие функции не поддерживают отрицательные числа или числа с плавающей точкой. В более сложных случаях, возможно, потребуется написать собственные функции для работы с числами других систем счисления.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос