kristinagaspa62
?>

Паскаль. Написать программу, в которой выполняются следующие действия: с клавиатуры вводится первое число; с клавиатуры вводится второе число; вводится слово, обозначающее операцию (либо “direct”, либо “undirect”); в том случае, когда вводится слово “direct”, на экран выводится результат равный частному от деления первого числа на второе (если второе число равно 0, выводится только сообщение «деление на 0»); в том случае, когда вводится слово “undirect”, на экран выводится результат равный частному от деления второго числа на первое (если первое число равно 0, выводится только сообщение «деление на 0» в том случае, когда вводится другое слово (не “direct” и не “undirect”), на экран выводится только сообщение «ошибка».

Информатика

Ответы

spodobnyi

или МНОКЛП, или МЛОКНП, или задание не поддаётся решению даже если допускать наличие в нем некритических ошибок

Объяснение:

Видимо, Вася и Петя именно играли в шпионов и даже не представляют, чтоб будет, если добавить в таким образом кодируемый текст хотя бы один лишний символ

Если мы пересчитаем общую длину всех символов (К - 3сим, Л - 2сим., ...), то окажется, что там 11 символов. В шифротексте их 12.

"Совпадение? Не думаю"))

Заметим также, что число плюсов и тильд совпадает, а число @ отличается на один.

Для начала просто попробуем исключить одну из них.

Учитывая, что всего их четыре, но две стоят подряд и их исключение принципиально не влияет на результат... ну что же, поехали.

1) + @ ~ ++ @ + @ + ~ ~

2) + @ @ ~ + + + @ + ~ ~

3) + @ @ ~ + + @ + + ~ ~

1) Варианты интерпретации первых символов:

+ @~+ ... (ОН...)

[email protected] ~ ... (МП...)

[email protected] ~+ ... (МЛ...)

Ну что ж, три не тридцать три, хотя " " уже вряд ли получится.

Кроме того, у нас есть проблема с тильдами. Дело в том, что комбинацию ~~(конец строки) может образовать только буква П в конце с какой-то буквой, у которой тильда тоже в конце. И это противоречие.

Поскольку обычно олимпиадные задания составляются так, чтобы максимально запутать и сбить с толку, то обратим своё внимание на коды @~+ и ~+.  Тут мы имеем строку, содержащую @,+,~, но порядок двух букв перепутан.

Поэтому сделаем второе допущение, что изначальная кодировка правильная, а вот в сообщении произошла досадная путаница с порядком: обменяем местами последний плюс с предпоследней тильдой.

1.1) Итак, остается  + @ + @ ~ + ~.

ОН... а тут как ни интепретируй, получится, что нужно второе одиночное О.

1.2) + + @ + @ ~ + ~

МП тоже бесперспективно, так как нам ещё как-то надо оттрактовать появление тильды в конце, что сделать без П (и привлечения доп.допущений) невозможно

1.3) Снова + @ + @ ~ + ~, но запрещены к использованию другие буквы.

МЛОКНП. Не очень осмысленный текст, но хотя бы без противоречий. Запомним как вариант (худший, но вариант).

2) + @ @ ~ + + + @ ~ + ~. Вычеркнули другую @.

Все варианты интерпретации обязаны будут выстраиваться вокруг О в середине, Л или Н слева от О и М справа от О (иных получить третий + сразу перед @ просто нет, ну, без повторений О)

Воспользуемся этим.

[email protected]@ЛОМ+~~

[email protected]НОМ+~~

В случае с Л получили нелепость (@ остаётся как неприкаянная).

Что касается второго, то тоже чепуха (М использовано, и без него там никак).

3) + @ @ ~ + + @ + ~ + ~. На тебя осталась вся надежда, не подведи...

+ @ @ ~ + + @ + ~ + ~

"Проблемным" выглядит кусочек последнего повторения: + ~ + ~.

Воспользуемся этим.

В середине куска может стоять только Л, в конце только П, а начало - это любая буква, заканчивающаяся на +

[email protected]@[email protected]+ЛП

Единственная оставшаяся тильда принадлежит @~+ (Н):

[email protected]Н[email protected]+ЛП

МНОКЛП

Эдуардович873
Объяснение:

1)Число точно больше 100, чтобы L было 3.

2)Какие бы числа мы не ставили на позициях единиц и десятков, результата они никакого не дадут, тк отрезаются командой div

3)Ближайшее необходимое число: 500

Дописал программу, чтобы проверить. Она выводит количество подходящих комбинаций при вводе всех чисел от 1 до 500.

var

x, L, M,count,i: integer;

begin

count:=0;

for i:=1 to 500 do

begin

x:=i; L := 0;M := 0;

while x > 0 do

begin

L := L + 1; x := x div 10;

if L mod 2 = 0 then

M := M + (x mod 10);

end;

//write(L,' ');write(M);

if (L=3) and (M=5) then inc(count);

end;

writeln(count);

end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Паскаль. Написать программу, в которой выполняются следующие действия: с клавиатуры вводится первое число; с клавиатуры вводится второе число; вводится слово, обозначающее операцию (либо “direct”, либо “undirect”); в том случае, когда вводится слово “direct”, на экран выводится результат равный частному от деления первого числа на второе (если второе число равно 0, выводится только сообщение «деление на 0»); в том случае, когда вводится слово “undirect”, на экран выводится результат равный частному от деления второго числа на первое (если первое число равно 0, выводится только сообщение «деление на 0» в том случае, когда вводится другое слово (не “direct” и не “undirect”), на экран выводится только сообщение «ошибка».
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Semenovt
makashi28
Рогов1996
info8
leonid-adv70
Viktorovich395
Баринова
miheev-oleg578
pedalplanet
ckiras9
airon-082054
Aleksandr362
kartyshkinaaa
victoriapetrs
tvmigunova551