Смекни!
smekni.com

Задачи по теме "Строковые величины" (стр. 2 из 2)

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. Дизассемблирование продолжается до первой встреченной команды останова. Если введена некорректная машинная команда, то должно выдаваться соответствующее сообщение об ошибке.