3. "Поставил begin — поставь и end." (из высказываний студентов). Дан массив строк, представляющий собой фрагмент программы на языке Pascal. Напишите программу, проверяющую правильность вложения операторных скобок begin ... end — каждому begin должен соответствовать end.
4. "Доверяй, но проверяй" (известная русская поговорка). Дано некоторое число 1<К<33. Определить, является ли введенная строка символов изображением числа в К-ичной системе счисления.
Входные данные:
К
строка
Выходные данные:
"является", если строка есть изображение числа в К-ичной системе счисления, и "не является", если не является изображением.
Пример
К = 2
Строка: 10011
Ответ: является
К = 2
Строка: 10210
Ответ: не является
5. Оптимизатор исходного кода. Для увеличения/уменьшения значения целочисленной переменной на1 в языках программирования можно использовать операции сложения/вычитания, а можно операции инкремент/декремент. Известно, что операции инкремент/декремент выполняется гораздо быстрей, чем сложение/вычитание, поэтому их использование часто предпочтительней.
Дан массив строк, представляющий фрагмент текста программы на языке Паскаль. Известно, что данный фрагмент оперирует только с целочисленными переменными. В каждой строке — одна команда. Преобразовать данный текст, заменив каждую строку вида: переменная:=переменная+1; на строку вида: Inc(переменная); а каждую строку вида: переменная:=переменная-1; на строку вида: Dec(переменная);
Пример
Исходный текст:
Begin
ReadLn(a, b);
a := a + 1;
c := b + 1;
b := b — 1;
WriteLn('a = ', a);
WriteLn('b =', b)
End.
Преобразованный текст:
Begin
ReadLn(a, b);
Inc(a);
c := b + 1;
Dec(b);
WriteLn('a = ', a);
WriteLn('b = ', b)
End.
6. Падежи. Вводится строка символов, представляющая собой фамилию на русском языке. Написать программу, склоняющую эту фамилию по падежам.
7. Дизассемблер. Некая ЭВМ имеет 8 регистров (R0-R7) и умеет выполнять три операции — останов, сложение и пересылку из регистра в регистр.
Команда останова: 00 00 00.
Формат команд сложения и пересылки: КОП РегИ, РегН
КОП: код операции — 1 для пересылки и 2 для сложения
РегИ — регистр-источник — из него данные извлекаются при выполнении операции;
РегН — регистр-назначение — в него записывается результат выполнения операции.
Машинная команда записывается в восьмеричном виде, где:
первые две цифры - КОП;
3-4 цифры - РегИ (0-7)
5-6 цифры - РегН (0-7)
Дан массив, содержащий команды на машинном языке в восьмеричном коде. В каждой строке массива — одна команда. Написать программу-дизассемблер, которая для каждой команды, введенной в машинном коде, выводит ее изображение в мнемокоде. Для команды останова использовать мнемонику HALT; для пересылки — мнемонику MOV, а для команды сложения — ADD. Дизассемблирование продолжается до первой встреченной команды останова. Если введена некорректная машинная команда, то должно выдаваться соответствующее сообщение об ошибке.