// PascalABC.NET 3.2, сборка 1417 от 28.03.2017 // Внимание! Если программа не работает, обновите версию!
function Res(a:integer;op:char;b:integer):integer; begin case op of '+':Result:=a+b; '-':Result:=a-b; '*':Result:=a*b; '/':Result:=a div b end end;
begin var s:=ReadlnString('Вводите:'); var p:=s.Matches('(((\-)?\d+)|[\+\-\*\/])').ToArray; if p.Count<>5 then Writeln('Ошибка!') else begin var op1:=p[1].Value[1]; var op2:=p[3].Value[1]; var a:=p[0].Value.ToInteger; var b:=p[2].Value.ToInteger; var c:=p[4].Value.ToInteger; if (op1 in ['+','-']) and (op2 in ['*','/']) then Writeln('='+Res(Res(b,op2,c),op1,a)) else Writeln('='+Res(Res(a,op1,b),op2,c)) end end.
сть несколько перевода чисел из любой системы счисления в десятичную. Один их них основан на алгоритме для вычисления значения многочлена в некоторой точке х, который носит название вычислительной схемы Горнера.
Для перевода целых чисел из десятичной системы счисления в систему счисления с основанием р:
Последовательно делить заданное число и получаемые целые части на новое основание счисления (р) до тех пор, пока целая часть не станет ровна нулю.
Полученные остатки от деления, представленные цифрами из нового счисления, записать в виде числа, начиная с последней целой части.
Пример 1. Перевести число 61 из десятичной системы счисления в двоичную:
(В дальнейшем будет использоваться краткая запись задания: 6110 = Х2)
61 = 30 • 2 + 1;
30 = 15 • 2 + 0;
15 = 7 • 2 + 1;
7 = 3 • 2 + 1;
3 = 1 • 2 + 1;
1 = 0 • 2 + 1.
ответ: 6110 = 1111012.
(Можно заметить, что рассмотренный «Пример 1» является противоположным «Примеру 1» рассмотренному в предыдущей теме. Таким образом, всегда можно делать проверку результата при переводе чисел из любой системы счисления в десятичную, и наоборот).
Пример 2. 27110 = Х8:
271 = 33 • 8 + 7;
33 = 4 • 8 + 1;
4 = 0 • 8 +4.
ответ: 27110 = 4178.
Пример 3. 1140610 = Х16:
11406 = 712 • 16 + 14;
712 = 44 • 16 + 8;
44 = 2 • 16 +12;
2 = 0 • 16 +2.
Учитывая, что в шестнадцатеричной системе счисления числу 14 соответствует цифра Е, а числу 12 цифра С, запишем ответ:
ответ: 1140610 = 2С8Е16.
(Будет не правильно записать ответ: 1140610 = 21281416)
// Внимание! Если программа не работает, обновите версию!
function Res(a:integer;op:char;b:integer):integer;
begin
case op of
'+':Result:=a+b;
'-':Result:=a-b;
'*':Result:=a*b;
'/':Result:=a div b
end
end;
begin
var s:=ReadlnString('Вводите:');
var p:=s.Matches('(((\-)?\d+)|[\+\-\*\/])').ToArray;
if p.Count<>5 then Writeln('Ошибка!')
else begin
var op1:=p[1].Value[1];
var op2:=p[3].Value[1];
var a:=p[0].Value.ToInteger;
var b:=p[2].Value.ToInteger;
var c:=p[4].Value.ToInteger;
if (op1 in ['+','-']) and (op2 in ['*','/']) then
Writeln('='+Res(Res(b,op2,c),op1,a))
else Writeln('='+Res(Res(a,op1,b),op2,c))
end
end.
Примеры
Вводите: -4--3--2
=1
Вводите: 12*3+45
=81
Вводите: 45+12*3
=81
Вводите: -26/13--5
=3
Объяснение:
сть несколько перевода чисел из любой системы счисления в десятичную. Один их них основан на алгоритме для вычисления значения многочлена в некоторой точке х, который носит название вычислительной схемы Горнера.
Для перевода целых чисел из десятичной системы счисления в систему счисления с основанием р:
Последовательно делить заданное число и получаемые целые части на новое основание счисления (р) до тех пор, пока целая часть не станет ровна нулю.
Полученные остатки от деления, представленные цифрами из нового счисления, записать в виде числа, начиная с последней целой части.
Пример 1. Перевести число 61 из десятичной системы счисления в двоичную:
(В дальнейшем будет использоваться краткая запись задания: 6110 = Х2)
61 = 30 • 2 + 1;
30 = 15 • 2 + 0;
15 = 7 • 2 + 1;
7 = 3 • 2 + 1;
3 = 1 • 2 + 1;
1 = 0 • 2 + 1.
ответ: 6110 = 1111012.
(Можно заметить, что рассмотренный «Пример 1» является противоположным «Примеру 1» рассмотренному в предыдущей теме. Таким образом, всегда можно делать проверку результата при переводе чисел из любой системы счисления в десятичную, и наоборот).
Пример 2. 27110 = Х8:
271 = 33 • 8 + 7;
33 = 4 • 8 + 1;
4 = 0 • 8 +4.
ответ: 27110 = 4178.
Пример 3. 1140610 = Х16:
11406 = 712 • 16 + 14;
712 = 44 • 16 + 8;
44 = 2 • 16 +12;
2 = 0 • 16 +2.
Учитывая, что в шестнадцатеричной системе счисления числу 14 соответствует цифра Е, а числу 12 цифра С, запишем ответ:
ответ: 1140610 = 2С8Е16.
(Будет не правильно записать ответ: 1140610 = 21281416)