Всех приветствую! Если Вам не трудно, то хотел бы попросить посодействовать.
Всех приветствую! Если Для вас не сложно, то хотел бы попросить посодействовать. Задачу необходимо решить на ЯП Pascal с использованием подпрограмм, если можно, то с комментами переменных и неких функций. Необходимо сделать программу, в которой при поддержки case можно избрать систему, из который будет совершаться перевод, а позже подобно через case избрать систему,
в которую необходимо перевести. Системы счисления: 2, 8, 10 и 16. Заблаговременно спасибо.
1 ответ
Диана Готманова
// 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 ngt;0 do begin
var r:=n mod k;
if rlt;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)
// Внимание! Если программка не работает, обновите версию!
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 ngt;0 do begin
var r:=n mod k;
if rlt;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)
Игорь Сямичев
А дробные числа нельзя?
Даша Кисарова
Да и в целом в 16-ную систему он неправильно переводит числа, так как отсутствуют буковкы.
Дмитрий Хотылев
Огромное спасибо!
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов