12. Полезные функции для работы со строками символов

1) Напишите функцию, осуществляющую перевод строки, состоящей из символов латиницы и/или кириллицы, в нижний регистр. Функция должна возвращать строку, где буквы записаны в нижнем регистре.

2) Напишите функцию, осуществляющую перевод строки, состоящей из символов латиницы и/или кириллицы, в верхний регистр. Функция должна возвращать строку, где буквы записаны в верхнем регистре.

II раздел

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

Входные данные: шифруемая строка.

Выходные данные:

гамма

зашифрованная строка.

2. Кодировщик. Написать программу, перекодирующую строку в кодировке KOI в строку в кодировке Windows-1251 и обратно.

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

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

5. Статистика. Дан текст. Напишите программу, определяющую процентное отношение строчных и прописных букв к общему числу символов в нем.

6. Статистика-2. Дан текст. Определите, каких букв (строчных или прописных) в нем больше, и преобразуйте следующим образом: если больше прописных букв, чем строчных, то все буквы преобразуются в прописные; если больше строчных, то все буквы преобразуются в строчные; если поровну и тех и других — текст остается без изменения.

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

поз_средн_буквы = длина_слова div 2 + 1,

где div — операция целочисленного деления.

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

стоит в начале строки;

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

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

9. Три кита — 2, 8, 16...

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

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

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

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

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

Пример

Число: 100000

Форматированный вывод: 100 000

Число: 1000000

Форматированный вывод: 1 000 000

11. Вычисление арифметического выражения. Арифметическое выражение вводится в виде строки вида

A op B,

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

III раздел

1. Функция BIN$. Известно, что в реализации QBasic языка Basic отсутствует функция BIN$ для вывода двоичного представления числа. Напишите такую функцию, не используя при этом операцию деления. Функции в качестве параметра передается целое число в десятичной системе счисления, результат — строка, являющаяся двоичным представлением данного числа.

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


Информация о работе «Задачи по теме "Строковые величины"»
Раздел: Информатика, программирование
Количество знаков с пробелами: 12753
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
29565
0
6

... формулы Ньютона — Лейбница. Тем самым окончательно оформился общий метод. Предстояло еще научиться находить первообразные многих функций, дать логические основы нового исчисления и т. п. Но главное уже было сделано: дифференциальное и интегральное исчисление создано. Символ ∫ введен Лейбницем (1675 г.). Этот знак является изменением латинской буквы S (первой буквы слова summa). Само слово ...

Скачать
69354
1
0

... , сколько времени потребуется для его составления, как много места для возможных ошибок? Естественно, об этом задумывались и авторы языков программирования. Поэтому во всех существующих языках имеются типы переменных, отвечающие за хранение больших массивов данных. В языке Паскаль они так и называются: "массивы".    Массивом будем называть упорядоченную последовательность данных одного типа, ...

Скачать
68032
2
4

... условий взаимной уравновешенности системы сил является одной из основных задач статики. На основе изложенной в первой главе курсовой работы алгоритм конструкции языка программирования Паскаль составим и решим ряд задач по прикладной механике. Сформулируем задачу по статике первому разделу прикладной механики. Задача. Найти центр тяжести тонкого круглого однородного стержня изогнутого по дуге ...

Скачать
37860
11
5

... какой либо ситуации -          Определить результат действия программы. На основании сделанных выводов решено создать дополнительное обучаю­щее средство в виде обучающей программы, поддерживающей индивидуаль­ное изучение всех вопросов темы, а также, дополнительные сведения о типах данных. Кроме того, в программу будет встроен блок самоконтроля, поддер­живающий проверку усвоения каждой изучаемой ...

0 комментариев


Наверх