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. Дизассемблирование продолжается до первой встреченной команды останова. Если введена некорректная машинная команда, то должно выдаваться соответствующее сообщение об оши
... формулы Ньютона — Лейбница. Тем самым окончательно оформился общий метод. Предстояло еще научиться находить первообразные многих функций, дать логические основы нового исчисления и т. п. Но главное уже было сделано: дифференциальное и интегральное исчисление создано. Символ ∫ введен Лейбницем (1675 г.). Этот знак является изменением латинской буквы S (первой буквы слова summa). Само слово ...
... , сколько времени потребуется для его составления, как много места для возможных ошибок? Естественно, об этом задумывались и авторы языков программирования. Поэтому во всех существующих языках имеются типы переменных, отвечающие за хранение больших массивов данных. В языке Паскаль они так и называются: "массивы". Массивом будем называть упорядоченную последовательность данных одного типа, ...
... условий взаимной уравновешенности системы сил является одной из основных задач статики. На основе изложенной в первой главе курсовой работы алгоритм конструкции языка программирования Паскаль составим и решим ряд задач по прикладной механике. Сформулируем задачу по статике первому разделу прикладной механики. Задача. Найти центр тяжести тонкого круглого однородного стержня изогнутого по дуге ...
... какой либо ситуации - Определить результат действия программы. На основании сделанных выводов решено создать дополнительное обучающее средство в виде обучающей программы, поддерживающей индивидуальное изучение всех вопросов темы, а также, дополнительные сведения о типах данных. Кроме того, в программу будет встроен блок самоконтроля, поддерживающий проверку усвоения каждой изучаемой ...
0 комментариев