Написать строковый калькулятор. Программа будет принимать математическое выражение в виде строки и набор значений переменных, и выводить на экран результат этого выражения. В выражении могут быть простые математические операции, основные тригонометрические функции и логарифм. (формат можете использовать тот, который вам удобнее: значения переменных в порядке их использования в формуле, в алфавитном порядке, в формате X=123 Y=345 Z=1.23) Например:
"(X + 10) * lg(Y) 20 100"
На выходе ожидаю увидеть строку «60»
Писать на Питоне
a:array[1..3,1..3] of integer;
t:array[0..2] of boolean;
k:array[0..2] of integer;
i,j:integer;
res:boolean;
begin
for i := 1 to 3 do
for j := 1 to 3 do
read(a[i,j]);
for i := 0 to 2 do
begin
k[i] := 0;
t[i] := false;
end;
for i := 1 to 3 do
for j := 1 to 3 do
k[a[i,j]] := k[a[i,j]] + 1;
for i := 1 to 3 do
begin
if (a[i,1] = a[i,2]) and (a[i,2] = a[i,3]) then
t[a[i,1]] := true;
if (a[1,i] = a[2,i]) and (a[2,i] = a[3,i]) then
t[a[1,i]] := true;
end;
if (a[1,1] = a[2,2]) and (a[2,2] = a[3,3]) then
t[a[2,2]] := true;
if (a[3,1] = a[2,2]) and (a[2,2] = a[1,3]) then
t[a[2,2]] := true;
res := true;
if (k[1] - k[2] > 1) or (k[1] - k[2] < 0) then
res := false;
if t[1] and ( t[2] or (k[1] = k[2]) ) then
res := false;
if res then
writeln('YES')
else
writeln('NO')
end.
+ 1 0 0 1 1 1 1 1
1 1 0 0 0 1 0 0 0
И получим ответ: 110001000 в двоичной системе.
2) У нас одно значение в 8 ричной а другое в шестнадцати ричной системе исчисления переведем первое число в шестнадцатеричную.
Сначала лучше перевести число с триад в двоичную а потом тетрайдем перевести в шестнадцатеричную. Три цифры(триада) в двоичной системе соответствуют одной цифре в восьмеричной системе и наоборот одно число из восьмеричной системы соответствует трем числам в двоичной системе. Четыре цифры(тетраде) в двоичной системе соответствует одной цифре в шестнадцатеричной системе и наоборот.
3 0 6 переведем каждую цифру в двоичную систему, 3 в двоичной будет 011: 0 будет 000 и шесть будет 110 и получим 011000110 переведем в шестнадцатеричную систему 0110 будет 6 а 1100 будет 12. 12 в шестнадцатеричной системе нет его заменяет буква С. 0 пропускаем. получаем С6 и складываем С 6
+7 0 F
7 D 5
Получаем ответ: 7D5 в шестнадцатеричной системе.
Простите если слишком большое объяснение