
Н,И_Лаб_раб. 1сем_Pascal / Лабораторная работа№7_строки
.docЛабораторная работа №8. Строки
Цель работы – знакомство с организацией строк в языке Паскаль, изучение операций и стандартных функций обработки строк и символов.
Постановка задачи
Написать две программы согласно индивидуальному варианту. Использовать строковые и символьные переменные, но не массивы символов.
Варианты заданий
-
Дана строка символов. Заменить в ней большие русские буквы на маленькие, а маленькие − на большие, остальные символы оставить без изменения.
-
Дана строка, содержащая последовательность слов, разделенных любым количеством пробелов и знаками препинания, и заканчивающаяся точкой. Подсчитать, сколько слов она содержит.
-
Дана символьная строка. Определить длину самой длинной подстроки из подряд стоящих букв «о».
-
Дана строка, содержащая последовательность слов, разделенных запятыми, и заканчивающаяся точкой. Удалить из нее все слова нечетной длины.
-
Дана строка символов. Преобразовать её, заменяя каждый пробел на два пробела, а из каждой пары идущих подряд одинаковых букв оставляя только одну.
-
Дана строка, содержащая предложение, заканчивающееся точкой. Подсчитать в ней число слов, содержащих хотя бы одну букву «а».
-
Дана строка символов, содержащая арифметическое выражение. Проверить баланс скобок в выражении. (Количество открывающих и закрывающих скобок должно быть одинаково, и закрывающая скобка не может стоять раньше, чем соответствующая ей открывающая.)
-
Дана строка, содержащая последовательность слов, разделенных запятыми и точками. Проверить, что слова, стоящие после запятой, начинаются с маленькой буквы, а слова, стоящие после точки, и первое слово − с большой буквы. Если это не так, то исправить.
-
Дана строка символов, заканчивающаяся точкой. Вывести ее на экран в обратном порядке без пробелов и знаков препинания.
-
Дана строка символов. Определить, входят ли в состав заданной строки числа. Если да, то найти их сумму. Будем считать, что числа в строке могут быть только целые.
-
Дана символьная строка. Зашифровать в ней все латинские буквы с помощью циклической подстановки ABC…YZA
-
Дана строка, содержащая последовательность слов, разделенных пробелами и заканчивающихся точкой. Записать слова этой строки в обратном порядке (мама мыла раму раму мыла мама).
-
Дана строка символов, состоящая из цифр от 0 до 9. Зашифровать её. Для этого составить новую строку из букв, заменяя каждую цифру на букву латинского алфавита, порядковый номер которой соответствует заменяемой цифре. (‘0’ − на ‘А’, ‘1’ − на ‘В’ и т.д.)
-
Дана символьная строка. Определить длину самой длинной подстроки из подряд стоящих букв «е».
-
Дана строка символов. Преобразовать строку, из групп идущих подряд пробелов оставляя по одному и удваивая все гласные буквы.
-
Даны две строки, содержащие последовательности слов, разделенных запятыми, и заканчивающиеся точкой. Составить третью строку из слов, имеющихся в обеих данных строках.
-
Дана строка символов. Заменить все пробелы в заданной строке точками и запятыми поочередно.
-
Дана строка символов. Изменить строку: во всех словах, имеющих нечетное количество символов, средний символ удалить.
-
Дана строка символов. Изменить ее таким образом, чтобы все символы отделялись друг от друга одним пробелом.
-
Дана символьная строка, содержащая предложение, заканчивающееся точкой. Преобразовать её, удаляя однобуквенные слова и лишние пробелы.
-
Если в заданной строке имеются пары открывающих и закрывающих круглых скобок, то удалить последовательности символов, расположенные между открывающими и закрывающими скобками и сами скобки. Предполагается, что внутри пары скобок вложенных скобок нет.
-
Дана символьная строка, содержащая последовательность слов, разделенных запятыми, за последним словом − точка. Вывести те слова, которые начинаются на ту же букву, что и последнее слово.
-
Дана строка символов. Проверить, является ли она правильной десятичной записью вещественного числа.
-
Дана строка символов, содержащая последовательность слов, разделенных пробелами и заканчивающихся точкой. Определить, сколько слов, состоящих из 5 и более символов, содержит данная строка.
-
Дана символьная строка. Заменить в ней последовательности символов, расположенные между открывающими и закрывающими скобками, на точки. Предполагается, что внутри пары скобок вложенных скобок нет.
-
Дана строка символов, содержащая последовательность слов, разделенных любым количеством пробелов и знаками препинания, и заканчивающаяся точкой. Удалить из нее все слова, начинающиеся с буквы «а».
-
Дана строка, содержащая дату в формате “дд.мм.гггг”. Проверить корректность этой даты и сформировать строку, содержащую следующую по порядку дату.
-
Дана строка символов, содержащая предложение, заканчивающееся точкой. Найти в строке самое длинное слово и вывести его на экран.
-
Дана строка символов. Удалить из нее все повторные вхождения букв.
-
Дана строка символов, содержащая последовательность слов, разделенных любым количеством пробелов и знаками препинания, и заканчивающаяся точкой. Найти длину каждого слова в заданной строке.
-
Дана строка символов. Найти наибольшее количество подряд идущих цифр в этой строке.
-
Дана строка символов, содержащая некоторый текст. Определить, сколько слов текста составлено из букв русского алфавита, сколько – из латинских букв. Слова, в которых присутствуют буквы обоих алфавитов, заменить словом «Ошибка».
-
Дана строка символов. Заменить каждый пробел в заданной строке двумя знаками подчеркивания, а каждое сочетание букв ‘он’ заключить в круглые скобки..
-
Дана строка символов, содержащая некоторый текст. Во всех словах с четным номером поменять местами первый и последний символы.
-
Дана строка, содержащая фамилию, имя и отчество человека. Преобразовать строку так, чтобы сначала указывались инициалы с точками, а затем фамилия.
-
. Дана строка, содержащая предложение, заканчивающееся точкой. Поменять в нем местами первое и последнее слова.
-
Дана строка символов. Заменить в строке все слоги “да” на “не” и удалить символ, предшествующий каждому пробелу.
-
Дана строка символов, содержащая предложение, заканчивающееся точкой. Инвертировать каждое слово в заданном предложении.
-
В БГТУ принято, что старшая цифра номера студенческой группы означает номер кафедры, средняя – последнюю цифру года поступления, младшая – порядковый номер группы на курсе. Продолжительность обучения не более 6 лет. Дан номер группы студента и текущий год. Определить, к какой кафедре прикреплен студент, в каком году он поступил и на каком сейчас курсе.
-
Дана строка символов, содержащая предложение, заканчивающееся точкой. Удалить из строки первые буквы каждого слова.
-
Дана строка, содержащая арифметическое выражение, в которое входят целые числа и знаки ‘+’ и ‘−‘ и которое заканчивается знаком ‘=’. Например, ‘17+23−4+121=’. Вычислить значение этого выражения и дописать результат после знака ‘=’.
-
Дана строка символов, содержащая последовательность слов, разделенных знаками препинания и пробелами и заканчивающаяся точкой. Заменить в строке первую букву каждого слова со строчной на заглавную, а между словами оставить по одному пробелу.
-
Дана строка символов, заканчивающаяся точкой. Определить, является ли она палиндромом. (Палиндром слева направо и справа налево читается одинаково, например "Леша на полке клопа нашел.") Пробелы и знаки препинания, а также регистр букв не учитываются.
-
Найти самое длинное слово в заданном предложении.
Контрольные вопросы
-
Каковы способы записи символьных данных в Паскале?
-
Каков результат функций ord, succ и pred для символов?
-
Как может описываться строковая переменная?
-
Какова максимальная длина строки, описанной как string?
-
Какова структура строковой переменной? Чем она отличается от массива символов?
-
Как обратиться к отдельному символу строки?
-
Что содержится в нулевом байте строковой переменной и в каком виде?
-
В результате каких действий автоматически изменяется нулевой байт строки?
-
Можно ли присваивать значение нулевому байту строки? Если да, то к чему это приведет?
-
Какие операции для строк существуют в языке Паскаль?
-
Как происходит сравнение строк?
-
Как изменить значение строки? Как изменить отдельный символ строки?
-
Почему строку нельзя вводить посимвольно в цикле как строку символов?
-
Какие стандартные подпрограммы можно использовать для работы со строками?