КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Общие сведения. Цель работы: освоить строковые операции, процедуры и функции; научиться создавать программы обработки текстовых данныхЛабораторная работа №6 Цель работы: освоить строковые операции, процедуры и функции; научиться создавать программы обработки текстовых данных, представляющих последовательность символов и строк, состоящих из слов, разделенных одним или несколькими пробелами. Для обработки текстовой информации можно использовать те же методы, что применяют для одномерных массивов, так как структура строкового типа схожа с массивом. Однако для упрощения написания программ по работе с текстами были разработаны стандартные строковые процедуры и функции. Поэтому основной задачей этой лабораторной работы является освоение строковых операций, функций Length, Pos, Copy и процедур Delete, Insert. Перед выполнением работы необходимо ознакомиться с теоретическим материалом по теме «Обработка литерных величин. Данные типа Char и String». Пример 1. Составить программу обработки данной строки, позволяющую выписать все знаки сравнения и все скобки, сохранив их последовательность. Решение. Все знаки сравнения и скобки перечислим в строковой константе srav_sk. В теле программы последовательно рассмотрим все символы введенной строки s, проверяя каждый на вхождение в строку srav_sk, выводя на экран содержащиеся в строковой константе символы строки s. program string_1; const srav_sk='<>=(){}[]'; var s:String; i:Integer; begin Writeln('Введите строку:'); Readln(s); for i:=1 to Length(s) do if Pos(s[i],srav_sk)<>0 then write(s[i]); Readln end. Пример 2. Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Составить программу обработки данной строки, выводящую через запятую слова четной длины, которые при обмене местами левой и правой половины дают то же слово (например, папа, мама, канкан). Решение. В строке, последовательно перебирая элементы, будем выделять начало ns и конец ks каждого слова, копировать слово в другую строковую переменную, а затем проверять четность длины и равенство частей строки slovo. Слова, для которых выполнено условие задания будем склеивать в переменной otv. После добавления к ответу последнего слова в конце otv будет лишняя запятая, которую перед выводом на экран необходимо удалить. program string_2; var s, slovo, otv:String; ns, ks, i, m: Integer; begin Writeln ('Введите строку:'); Readln(s); i:=1; ns:=1; otv:=''; s:=s+' '; while i<=Length(s) do begin while (i<=Length(s)) and (s[i]<>' ') do i:=i+1; {ищем очередной пробел} ks:=i; slovo:=Copy(s, ns, ks-ns); {выделяем слово} m:=Length(slovo) div 2; {половина длины слова} if (Length(slovo) mod 2=0) and (Copy(slovo,1,m)=Copy(slovo,m+1,m)) {если слово имеет четную длину} then otv:= otv+slovo+ ','; {добавляем слово к ответу} while (i<=Length(s)) and (s[i]=' ') do i:=i+1; {пропускаем пробелы} ns:=i; {начало следующего слова} end; Delete(otv, Length(otv), 1); {удаляем лишнюю запятую в конце} Writeln(otv); Readln end. Варианты заданий Задание 1. Составить программу обработки данной строки, позволяющую: a) выписать все прописные буквы из данной строки в порядке их следования; b) определить, содержатся ли в тексте цифры; c) найти общее количество круглых, квадратных и фигурных скобок в тексте; d) выписать все знаки препинания из данной строки, сохранив их последовательность; Задание 2. Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Составить программу обработки данной строки, выводящую через запятую: a) слова, одинаково читающиеся справа налево и слева направо; b) слова заданной длины, в которые входит данная буква; c) слова, начинающиеся с прописной буквы, в которых все остальные буквы строчные; d) слова, которые начинаются и заканчиваются одной и той же буквой и содержат хотя бы одну введенную с клавиатуры букву.
Дополнительные задания Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Составить программу обработки данной строки, позволяющую:
a) определить количество слов в строке; b) удалить из строки избыточные пробелы, чтобы между словами осталось только по одному пробелу; c) найти самое короткое слово и его длину; d) найти в тексте слова-перевертыши.
Контрольные вопросы 1. Как описываются в языке Паскаль строковые величины? 2. В чем сходство и в чем различие между массивами и строками? 3. Существуют ли ограничения, накладываемые на длину строки? 4. Какие строковые процедуры существуют в языке Паскаль? 5. Для вывода значений каких строковых функций нужны переменные типа string, а для каких – integer? 6. Какие есть возможности извлечения из строки одного символа? 7. Строка для обработки процедурой должна быть ее параметром-аргументом или параметром-результатом?
Дата добавления: 2014-12-16; Просмотров: 601; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |