Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR7-8.doc
Скачиваний:
37
Добавлен:
10.03.2016
Размер:
222 Кб
Скачать
☆

Вариант 1

Байты. Дана строка символов. Определить, является ли она последовательностью байтов. Байт — две идущие подряд шестнадцатеричные цифры. Примечание. Незначащие нули, если они имеются, также указываются при записи байтов.

Примеры: Введите строку: FF0976 Ответ: является Введите строку: 567FA Ответ: не является

Вариант 2

Системы счисления. Вводится строка символов. Если она является изображением целого числа в восьмеричной системе счисления, то перевести ее в целое число в десятичной системе счисления, иначе выдать сообщение о некорректном вводе.

Вариант 3

Системы счисления. Вводится строка символов. Если она является изображением целого числа в шестнадцатеричной системе счисления, то перевести ее в целое число в десятичной системе счисления, иначе выдать сообщение о некорректном вводе.

Вариант 4

Системы счисления. Вводится строка символов. Если она является изображением целого числа в двоичной системе счисления, то перевести ее в целое число в десятичной системе счисления, иначе выдать сообщение о некорректном вводе.

Вариант 5

ANSI C & Borland C. Согласно стандарту ANSI С, при задании пути к файлу в программе на языке С, каталоги разделяются символом "/", а в стандарте фирмы Borland для разделения каталогов используется последовательность символов "\\". Написать программу, которая переводит строку, содержащую путь к файлу в стандарте ANSI С, в строку, содержащую путь к файлу в стандарте фирмы Borland.

Пример: Путь в ANSI C > C:/MYDOCS/TEX/DOC1.TEX Путь в Borland C > C:\\MYDOCS\\TEX\\DOC1.TEX

Вариант 6

Расстановка длинных тире. Символ — в HTML-документе представляет собой длинное тире, которое при просмотре страницы выглядит гораздо привлекательней обычного ‘-‘ . Поэтому эстеты Веб-дизайна предпочитают использовать именно его. Дан текст, содержащий символы ‘-‘. Заменить их на символы ‘—’.

Вариант 7

DOS-Unix. Дана строка, содержащая путь к файлу или каталогу, записанный по соглашениям, принятым в ОС MS DOS. Преобразовать данную строку таким образом, чтобы она содержала путь в формате ОС Unix, то есть заменить каждый символ "\" на символ "/".

Пример: Путь DOS: С:\WINDOWS\SYSTEM Путь Unix: C:/WINDOWS/SYSTEM

Вариант 8

Тэг курсива. Дан текст, в котором встречаются структуры ‘<i>’ и ‘</i>’. Заменить каждое вхождение ‘<i>’ на ‘<курсив>’, а каждое вхождение ‘</i>’ на ‘<конец курсив>’. Замечание. В программе следует учесть, что буква ‘i’ может быть как строчной, так и прописной.

Вариант 9

Форматированный вывод числа. С клавиатуры вводится целое число в десятичной системе счисления. Написать программу, реализующую вывод его представления с разделением на триады цифр.

Пример: Число: 100000 Форматированный вывод: 100 000 Число: 1000000 Форматированный вывод: 1 000 000

Вариант 10

Форматирование текста. Дан текст, состоящий из предложений, разделяемых точками. Напишите программу, производящую следующее форматирование: после каждой точки в конце предложения должен стоять хотя бы один пробел; первое слово в предложении должно начинаться с прописной буквы. Замечание. Текст должен быть на русском языке.

Вариант 11

Лишние пробелы. Дана строка, состоящая из слов, разделенных пробелами. Напишите программу, удаляющую лишние пробелы. Пробел считается лишним, если он - стоит в начале строки;

- стоит в конце строки;

- следует за пробелом.

Вариант 12

FTP-Connection. Пользователю, зарегистрированному на FTP-сервере, для получения доступа к файлам на нем нужно набрать в FTP-браузере команду вида: ftp://логин:пароль@адрес_сервера. Написать программу, которая из введенной строки выделяет логин, пароль и адрес FTP-сервера и печатает эту информацию.

Пример: Входная строка: ftp://CoolUser:parol@ftp.erunda.ru Вывод: Адрес сервера: ftp.erunda.ru Логин: CoolUser Пароль: parol

Вариант 13

Шифрация. Один из методов шифрации называется наложением гаммы. Делается это следующим образом: берется некоторое случайное число в диапазоне от 127 до 255 — гамма, и код каждого символа строки заменяется кодом, получающимся в результате операции: новый код=старый код XOR гамма. Написать программу, реализующую а) данный метод шифрации; б) дешифрацию строки при заданной гамме.

Вариант 14

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

Вариант 15

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

Задание 2

Задание: составить программу решения задачи.

Указания к выполнению: выполнить все этапы лабораторной работы самостоятельно.

Вариант 1

Создание шаблона электронного письма. Некая почтовая программа при создании письма использует следующую технологию. Она берет имя получателя и помещает его после приветствия. Затем следует место для текста сообщения, после него — подпись отправителя. Имена получателя и отправителя программа берет из их электронных адресов. Напишите программу, реализующую данное действие.

Входные данные: электронный адрес адресата; электронный адрес отправителя. Выходные данные: шаблон сообщения.

Пример: Входные данные: Кому: Bilbo@valinor.er

От кого: Gandalf@valinor.er

Текст сообщения: Поздравляю тебя с совершеннолетием! Желаю здоровья и долголетия.

Вывод на экран: Здравствуй, Bilbo! Поздравляю тебя с совершеннолетием! Желаю здоровья и долголетия. С уважением, Gandalf.

Вариант 2

Вычисление арифметического выражения. Дан массив строк, в которых записаны арифметические выражения. Арифметическое выражение вводится в виде строки вида A op B, где А и В — целые числа, а op — знак арифметической операции: +, -, *, /. Написать программу, вычисляющую значение выражения и дописывающую результат в конце каждой строки.

Вариант 3

"Поставил begin — поставь и end." (из высказываний студентов). Дан массив строк, представляющий собой фрагмент программы на языке Pascal. Напишите программу, проверяющую правильность вложения операторных скобок begin ... end — каждому begin должен соответствовать end.

Вариант 4

Удаление комментариев. Дан массив строк, представляющий собой текст программы на языке Паскаль. Требуется написать программу удаления комментариев. Комментарий — последовательность символов, заключенная между "{" и "}" или между “(*” и “*)”. Комментарий может быть многострочным, т.е. начинаться в одной строке, а заканчиваться в другой.

Вариант 5

Оптимизатор исходного кода. Для увеличения значения целочисленной переменной на 1 в языках программирования можно использовать операции сложения, а можно операцию инкремент. Известно, что операция инкремент выполняется гораздо быстрей, чем сложение, поэтому их использование часто предпочтительней. Дан массив строк, представляющий фрагмент текста программы на языке Паскаль. Известно, что данный фрагмент оперирует только с целочисленными переменными. В каждой строке — одна команда. Преобразовать данный текст, заменив каждую строку вида: <переменная> := <переменная> + 1; на строку вида: Inc(<переменная>).

Пример Исходный текст:

Begin

ReadLn(a, b);

a := a + 1;

c := b + 1;

writeLn('a = ', a);

WriteLn('с =', с)

End.

Преобразованный текст:

Begin

ReadLn(a, b);

Inc(a);

c := b + 1;

writeLn('a = ', a);

WriteLn('c = ', c)

End.

Вариант 6

Оптимизатор исходного кода. Для уменьшения значения целочисленной переменной на 1 в языках программирования можно использовать операции вычитания, а можно операцию декремент. Известно, что операция декремент выполняется гораздо быстрей, чем вычитание, поэтому их использование часто предпочтительней. Дан массив строк, представляющий фрагмент текста программы на языке Паскаль. Известно, что данный фрагмент оперирует только с целочисленными переменными. В каждой строке — одна команда. Преобразовать данный текст, заменив каждую строку вида: <переменная> := <переменная> – 1; на строку вида: Dec(<переменная>);

Пример Исходный текст:

Begin

ReadLn(a, b);

c := b - 1;

b := b - 1;

WriteLn('с = ', с);

WriteLn('b =', b)

End.

Преобразованный текст:

Begin

ReadLn(a, b);

c := b - 1;

Dec(b);

WriteLn('с = ', с);

WriteLn('b = ', b)

End.

Вариант 7

Выравнивание по ширине. Дан массив строк. Выровнять длины строк массива по самой длинной строке вставляя дополнительные пробелы между словами.

Пример

Исходный массив: Наша Таня громко плачет,

Уронила в речку мячик.

Тише, Танечка, не плачь,

Не утонет в речке мяч.

Результат: Наша Таня громко плачет,

Уронила в речку мячик.

Тише, Танечка, не плачь,

Не утонет в речке мяч.

Вариант 8

Выравнивание по центру. Дан массив строк. Выровнять строки массива по центру экрана (считать, что на экране помещается 80 символов) добавляя недостающие пробелы в начало и конец строки.

Пример

Исходный массив:

Наша Таня громко плачет,

Уронила в речку мячик.

Тише, Танечка, не плачь,

Не утонет в речке мяч.

Результат: Наша Таня громко плачет,

Уронила в речку мячик.

Тише, Танечка, не плачь,

Не утонет в речке мяч.

Вариант 9

Шифрование перестановкой. При шифровании перестановкой сами символы остаются неизменными, но меняют свою позицию. При таком шифре нельзя прочитать первоначальный текст, не зная ключа. Рассмотрим один из самых простых типов шифров перестановки с помощью таблицы. Для примера возьмем известные строки А.С. Пушкина:

О сколько нам открытий чудных

Готовит просвещенья дух

И опыт – сын ошибок трудных,

И гений – парадоксов друг,

И случай – бог-изобретатель

Запишем их в виде таблицы в порядке следования символов в фразе

о

с

к

о

л

ь

к

о

н

а

м

о

т

к

р

ы

т

и

й

ч

у

д

н

ы

х

г

о

т

о

в

и

т

п

р

о

с

в

е

щ

е

н

ь

я

д

у

х

и

о

п

ы

т

-

с

ы

н

о

ш

и

б

о

к

т

р

у

д

н

ы

х

,

и

г

е

н

и

й

-

п

а

р

а

д

о

к

с

о

в

д

р

у

г

,

и

с

л

у

ч

а

й

-

б

о

г

-

и

з

о

б

р

е

т

а

т

е

л

ь

А теперь выпишем этот текст, только не по строкам, а по столбцам, слева направо, получится шифрованное сообщение:

Очнодг уько-сдя кикн тсзоыдроолхуувбь хд ркг ндеооиырт т хуаноо,гтавпи,емиы ил ттг ьо –ес тпснл крыиу ронйч ыс –а твопй иеша- йщирб ебао

Прочесть такое сообщение затруднительно. Его нелегко взломать, даже если известен принцип: шифрование перестановкой с помощью таблицы. Ключом в данном случае является размерность таблицы, а также принцип составления слов (столбцы можно было читать и справа налево или «змейкой»).

Составить программу, шифрующую исходный текст перестановкой с помощью таблицы.

Вариант 10

Дизассемблер. Некая ЭВМ имеет 8 регистров (R0–R7) и умеет выполнять три операции — останов, сложение и пересылку из регистра в регистр.

Команда останова: 00 00 00.

Формат команд сложения и пересылки: КОП РегИ, РегН

КОП: код операции — 01 для пересылки и 02 для сложения

РегИ — регистр-источник — из него данные извлекаются при выполнении операции; РегН — регистр-назначение — в него записывается результат выполнения операции.

Машинная команда записывается в восьмеричном виде, где:

первые две цифры – КОП;

3-4 цифры – РегИ (0-7);

5-6 цифры – РегН (0-7).

Например:

01 02 05 – переслать число из регистра 2 в регистр 5;

02 01 03 – сложить числа, находящиеся в регистрах 1 и 3, результат поместить в регистр 3.

Дан массив, содержащий команды на машинном языке в восьмеричном коде. В каждой строке массива — одна команда. Написать программу-дизассемблер, которая для каждой команды, введенной в машинном коде, выводит ее изображение в мнемокоде. Для команды останова использовать мнемонику HALT; для пересылки — мнемонику MOV, а для команды сложения — ADD. Дизассемблирование продолжается до первой встреченной команды останова. Если введена некорректная машинная команда, то должно выдаваться соответствующее сообщение об ошибке.

Вариант 11

Выравнивание по левому краю. Дан массив строк. Преобразовать массив так, чтобы при выводе на экран строки были выронены по левому краю экрана (на экране помещается 80 символов).

Пример

Исходный массив:

Наша Таня громко плачет,

Уронила в речку мячик.

Тише, Танечка, не плачь,

Не утонет в речке мяч.

Результат:

Наша Таня громко плачет,

Уронила в речку мячик.

Тише, Танечка, не плачь,

Не утонет в речке мяч.

Вариант 12

Шифрование текста. Дан исходный открытый текст. К нему применяется следующий ключ замены (см. таблицу):

А

Б

В

Г

Д

Е

Ж

З

И

Й

К

Л

М

Н

О

П

Р

С

Т

У

Ф

Х

Ц

Ч

Ш

Щ

Ъ

А

Б

В

Г

Д

Е

Ж

З

И


Т

У

Ф

Х

Ц

Ч

Ш

Щ

Ъ

Ы

Ь

Э

Ю

Я

_

Й

К

Л

М

Н

О

П

Р

С

Ь

Э

Ю

Я

_

Ы

К полученному тексту вновь применяется ключ замены и т.д. Через сколько таких замен появится исходный текст?

Вариант 13

Шифрование текста. Дан исходный открытый текст (Т). Необходимо зашифровать его с бесконечным ключом (К). В качестве ключа примем произвольный текст такой же длины как и шифруемый текст. Воспользуемся таблицей шифров для букв русского алфавита:

А

Б

В

Г

Д

Е

Ж

З

И

Й

К

Л

М

Н

О

П

Р

С

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18


Т

У

Ф

Х

Ц

Ч

Ш

Щ

Ъ

Ы

Ь

Э

Ю

Я

_

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

Для получения самого шифротекста (Е) применим следующее правило: код(Еi)=(код(Тi)+код(Кi)) mod 33

Пример

Т (исходный текст): ШИФРОВАНИЕ

К (ключ): СВЕТИЛЬНИК

Е (шифротекст): (26+18) mod 33 = 11 соответствует букве К

(09+03) mod 33 = 12 соответствует букве Л

(21+06) mod 33 = 28 соответствует букве Ы

(17+19) mod 33 = 03 соответствует букве В

(15+09) mod 33 = 24 соответствует букве Ч

(03+12) mod 33 = 15 соответствует букве О

(01+29) mod 33 = 30 соответствует букве Э

(14+14) mod 33 = 28 соответствует букве Ы

(09+09) mod 33 = 18 соответствует букве С

(06+11) mod 33 = 17 соответствует букве Р

Е= КЛЫВЧОЭЫСР

Вариант 14

Дан массив строк, содержащий результаты табулирования функции на отрезке: каждая строка содержит два числа, соответственно значения X и Y; числа разделены пробелом. Преобразовать данный массив так, чтобы на экране он выводился в виде таблицы, перед выводом массива напечатать заголовок, в заголовке указать, на каком отрезке произведено табулирование функции и с каким шагом (данные получить из массива).

Пример:

Исходный массив:

-1 2.34

-0.8 2.567

-0.6 2.87

-0.4 3.0

-0.2 3.12

0 3.06

Вывод на экран:

Заголовок: Таблица значений функции на отрезке [-1, 0] с шагом 0.2

Шапка таблицы: X | Y

----------------

Массив: -1 | 2.34

-0.8 | 2.567

-0.6 | 2.87

-0.4 | 3.0

-0.2 | 3.12

0 | 3.06

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]