Case понимает только integer, т.е можно написать: case A of 1 : bla 2 : bla-bla end; такое выражение выдаст ошибку: case A of 'sin' : bla 'cos' : bla-bla end; т.к в данном случае используется string вместо integer; если делается калькулятор в одно действие (число - знак - число, пример: 2 + 3), то можно сделать так: if znak = 'sin' then result := sin(number) else if znak = 'cos' then result := cos(number) ... (другие условия) Если же создаётся калькулятор с неограниченным числом параметров (2 + 5 * 4 / 5), то имеет смысл найти парсинга математических выражений Вроде всё
var num : integer; begin readln(num); case num of 1 : bla (понедельник) 2 : bla-bla (вторник) ... 6 : bla-bla-bla (суббота) end; end.
Если число 49 записывается как 121, значит первый остаток от деления равен 1, то есть основанием системы счисления является число, кратное 48.
121 имеет 3 разряда, значит основание однозначно меньше 10 и больше 2. Подходят 3, 4, 6, 8.
Учитывая, что в числе 121 три разряда, значит число 48 делилось всего три раза. Число 8 не подойдет, т.к. 48/8=6, значит будет всего два деления. Число 3 не подойдет, т.к. 48/3 = 16, 16/3=5 - то есть тут будет больше трёх знаков. Число 4 не подойдет, т.к. 48/4=12, а 12 делится на 4 без остатка, но, судя по числу, во втором делении остаток должен быть равен 2. Остаётся число 6. Проверим
case A of
1 : bla
2 : bla-bla
end;
такое выражение выдаст ошибку:
case A of
'sin' : bla
'cos' : bla-bla
end;
т.к в данном случае используется string вместо integer;
если делается калькулятор в одно действие (число - знак - число, пример: 2 + 3), то можно сделать так:
if znak = 'sin' then
result := sin(number)
else
if znak = 'cos' then
result := cos(number)
... (другие условия)
Если же создаётся калькулятор с неограниченным числом параметров (2 + 5 * 4 / 5), то имеет смысл найти парсинга математических выражений
Вроде всё
var
num : integer;
begin
readln(num);
case num of
1 : bla (понедельник)
2 : bla-bla (вторник)
...
6 : bla-bla-bla (суббота)
end;
end.
121 имеет 3 разряда, значит основание однозначно меньше 10 и больше 2. Подходят 3, 4, 6, 8.
Учитывая, что в числе 121 три разряда, значит число 48 делилось всего три раза.
Число 8 не подойдет, т.к. 48/8=6, значит будет всего два деления.
Число 3 не подойдет, т.к. 48/3 = 16, 16/3=5 - то есть тут будет больше трёх знаков.
Число 4 не подойдет, т.к. 48/4=12, а 12 делится на 4 без остатка, но, судя по числу, во втором делении остаток должен быть равен 2.
Остаётся число 6. Проверим
49/6=8 |1
8/6 = 1 |2
1/6=0 |1
121(6)