КМ-7. Обработка символьной информации и документов сложной структуры Вариант 4
Описание
Файл содержит в себе полный отчёт + полные исходники.
Семинар 2. Обработка символьной информации
Цель семинара: Овладение навыками обработки символьных данных.
1. Задание
1. Проработайте (еще раз) примеры 1 и 2 §2.1.3 лекции 2 «Обработка символьной информации и документов сложной структуры». Попробуйте решить эти задачи самостоятельно, не заглядывая в лекцию. Если Ваше решение отличается от лекционного, проанализируйте отличия. Как они повлияют на работу программы?
2. Отладьте программы примеров 1 и 2 лекции 2.
3. Выполните свой вариант задания (с Вашим номером по списку группы) из раздела 2. Отчет по выполнению задания делайте по образцу примера 1 §2.1.3 лекции 2. Обратите внимание, что отчет должен содержать условие задачи, состав данных, блок-схему алгоритма и код программы.
4. Выполните свой вариант задания (с Вашим номером по списку группы) из раздела 3. Обратите внимание, что это задание надо выполнять, самостоятельно разработав подпрограмму (функцию СИ) обработки строк и вызвав ее для каждой строки, указанной в условии, – см. пример 2 §2.1.3 лекции 2.
5. Выполните свой вариант задания (с Вашим номером по списку группы) из раздела 4. Разработайте и отладьте два варианта программы:
a. каждая строка входного файла считывается в переменную-строку (см. пример 2 §2.3.3);
b. каждая строка текстового файла считывается в переменную-структуру (см. пример 3 §2.3.3).
Вывод результатов должен осуществляться в текстовый файл.
Отчет по выполнению каждого задания должен состоять из условия задачи, отлаженной программы и примеров входных и выходных файлов.
Жду отчетов по индивидуальному заданию!
2. Обработка последовательности символов
Дан текст – однострочная последовательность символов. В некоторых задачах предполагается, что текст разбит на слова. Под словом понимается группа символов, не содержащая пробелов и отделенная пробелами от других слов. При решении этих задач не рекомендуется использовать библиотечные функции работы со строками, за исключением, быть может, функции определения длины строки.1. Определить, содержит ли текст символы, отличные от букв и пробелов.
2. Все символы, предшествующие первому вхождению символа *, заменить на *.
3. Все символы, стоящие после последней точки, заменить пробелами.
4. Выяснить, является ли текст десятичной записью целого числа.
5. Удалить из текста все символы, стоящие после первого вхождения символа a.
6. Изменить текст так, чтобы вместо строчных букв стояли соответствующие прописные буквы, а вместо прописных — строчные. Определить общее число произведенных замен.
7. Если текст содержит только малые латинские буквы, определить, упорядочен ли он по алфавиту.
8. Определить, есть ли в тексте слова, начинающиеся с заданного символа.
9. Определить, содержит ли букву А первое слово заданного текста.
10. Проверить, имеет ли место соответствие открывающихся и закрывающихся круглых скобок.
11. Выяснить, является ли текст идентификатором. Пояснение: идентификатор — это последовательность букв, цифр и символов подчеркивания, на первом месте может стоять только буква и символ подчеркивания.
12. Удалить из текста все цифры.
13. Определить число символов, отличных от букв и пробелов, встретившихся в тексте до первой точки.
14. Вывести на экран первое слово текста, начинающееся с буквы А.
15. Определить, сколько раз входит в последнее слово текста заданный символ.
16. Определить, сколько слов оканчивается на заданный символ.
17. Вывести на экран первое слово текста, оканчивающееся на заданный символ.
18. Вывести на экран первое слово текста, начинающееся с сочетания ph.
19. Определить число символов первого слова.
20. Определить число символов последнего слова.
21. Вычислить, сколько слов встречается в тексте до первой точки.
22. Каждое слово one заменить на two.
23. Первое вхождение слова one заменить на two.
24. Последнее вхождение слова one заменить на two.
25. Определить, сколько раз в тексте встречается сочетание символов one.
26. Определить, есть ли в тексте слова, начинающиеся с сочетания ph.
27. Определить, есть ли в тексте слова, заканчивающиеся на сочетание ed.
28. Если в тексте встречаются подряд две точки, то последнюю точку пары заменить пробелом.
29. Удалить из текста все пробелы, стоящие в конце слова (до первого символа с конца, не являющегося пробелом).
30. Удалить из текста все пробелы, стоящие в начале слова (до первого символа, не являющегося пробелом).
3. Индивидуальное задание на разработку подпрограмм, обрабатывающих строки
Разработать программу, выполняющую однотипные действия с одной или несколькими однострочными последовательностями символов (они обозначены А, В, С), самостоятельно выделив одну или несколько подпрограмм.
Требования к подпрограммам:
§ каждая подпрограмма является функционально завершенной и должна вызываться более одного раза с разными фактическими параметрами;
§ подпрограмма обработки не должна содержать ввод (вывод) данных;
§ в подпрограммах не рекомендуется использовать глобальные переменные.
1. Определить, сколько раз в последовательности А встречается буква N и сколько раз в последовательности В встречается цифра 9.
2. Заменить в последовательности А все символы * на пробелы, а в последовательности В ― все точки на запятые.
3. Определить, содержит ли последовательность А строчные латинские буквы, а последовательность В ― прописные.
4. Определить, сколько раз в последовательности А символ : встречается до первой точки, и сколько раз в последовательности В символ ; встречается до первой запятой.
5. Для заданной последовательности А проверить, встречается ли среди ее первых 10 символов буква s, а для последовательности В проверить, встречается ли среди ее первых 20 символов буква q.
6. Определить номер первого вхождения заданного символа в каждую из последовательностей А, В, С.
7. Определить, сколько слов в последовательности А оканчивается на букву N и сколько слов в последовательности В оканчивается на букву Y.
8. Проверить, является ли каждая из последовательностей А, В, С десятичной записью целого числа.
9. Проверить, является ли последовательность А правильным скобочным выражением. Учесть расстановку круглых, квадратных и фигурных скобок.
10. В последовательности А все символы, стоящие после последней точки, заменить на пробелы, а в последовательности В все символы, стоящие после последней запятой, заменить на символ *.
11. Исключить из каждой последовательности А, В, С все символы, отличные от малых латинских букв.
12. Определить, сколько раз в последовательность А входит слово one, а в последовательность В ― слово two.
13. Проверить, входит ли в последовательность А слово one, а в последовательность В ― слово two.
14. Определить, сколько слов в последовательности А начинается с буквы N и сколько слов в последовательности В начинается с буквы Y.
15. Проверить, есть ли в последовательности А слова, начинающиеся с буквы N, и есть ли в последовательности В слова, начинающиеся с буквы Y.
16. Определить число слов, встречающихся в последовательности А до первой точки, и число слов, встречающихся в последовательности В до первой запятой.
17. Для каждой из последовательностей А, В, С выяснить, имеется ли в них пара соседних одинаковых символов.
18. Из последовательности А удалить все символы, стоящие после последней точки, а из последовательности В удалить все символы, стоящие после последнего восклицательного знака.
19. Для каждой из последовательностей А, В, С вычислить, сколько символов расположено от последней точки до конца этих последовательностей.
20. Определить, в какой из двух последовательностей, А или В, последнее слово имеет наибольшую длину.
21. Для каждой последовательности, А и В, выяснить, какое из слов –первое или последнее – имеет большую длину.
22. В каждой из последовательностей А, В, С заменить круглые скобки на соответствующие (открывающие или закрывающие) квадратные.
23. В каждой из последовательностей А, В, С заменить малые латинские буквы одноименными большими.
24. Выделить первое слово в каждой из последовательностей А, В, С.
25. Для последовательности А определить частоту вхождения каждой из русских гласных букв (а, е, и, о, у, э, ю, я), а для последовательности В определить частоту вхождения символов запятая и точка.
26. В каждой из последовательностей А, В, С переставить символы таким образом, чтобы первый символ стал последним, второй предпоследним, и т. д.
27. Выяснить, является ли каждая из последовательностей А, В, С идентификатором. Пояснение: идентификатор — это последовательность букв, цифр и символов подчеркивания, на первом месте может стоять только буква и символ подчеркивания
28. Вычислить число слов в каждой из последовательностей А, В, С.
29. Из последовательностей А, В, С удалить все пробелы.
30. Проверить, входит ли в последовательность А группа символов one, а в последовательность В ― группа символов two.
4. Обработка данных сложной структуры, хранящихся в файлах
1. Расписание экзаменов содержит следующие данные: номер студенческой группы, дату и время экзамена, номер аудитории, название предмета и фамилию преподавателя. Найти число дней занятости некоторого преподавателя.
2. Сведения об автомобиле состоят из его марки, номера, фамилии владельца и отметки о прохождении технического осмотра. Вывести сведения об автомобилях некоторого автовладельца.
3. В расписании поездов указано: номер поезда, пункты отправления и назначения, время отправления, время в пути. Вывести сведения о поездах, следующих из Москвы в Санкт-Петербург.
4. В анкетах сотрудников учреждения имеются следующие сведения: фамилия, имя, отчество, должность (мастер, инженер, рабочий и т.п.), стаж, образование. Вывести сведения об инженерах.
5. В сведениях об игрушках указываются название (мяч, конструктор и т. п.), цена, рекомендуемый возраст ребенка (например, от двух до пяти лет). Вывести сведения об игрушках-конструкторах.
6. Имеются следующие сведения о книгах: фамилия и инициалы автора, название, год издания, цена. Вывести сведения о всех книгах, в названии которых содержится слово "информатика", а также число таких книг.
7. Сведения состоят из фамилий сотрудников и их телефонов. Вывести фамилии сотрудников, номера телефонов которых начинаются с цифр 361, 362 или 273.
8. Имеются сведения о химических веществах: название, удельная масса, проводимость (проводник, полупроводник, изолятор). Вывести названия полупроводников.
9. Сведения о компьютерах некоторого учреждения состоят из марки компьютера, даты приобретения, номера комнаты, где находится компьютер, и фамилии ответственного лица. Вывести сведения о компьютерах заданной марки.
10. Сведения о заказе состоят из адреса (улица, дом, квартира) и даты (число, месяц, год) исполнения. Вывести сведения о заказах, которые должны быть выполнены на Московской улице, и их количество.
11. Багаж авиапассажира описывается фамилией пассажира, номером рейса, датой вылета, количеством и общей массой вещей. Вывести фамилии пассажиров, багаж которых состоит из одной вещи массой более 30 кг, и найти среднюю массу багажа всех пассажиров.
12. Сведения об изделиях, хранящихся на складе, состоят из порядкового номера, наименования и количества. Сделан заказ на некоторые изделия с указанием их наименования и количества. Вывести сведения об изделиях, по которым невозможно выполнение заказа (изделие отсутствует или заказанное количество больше имеющегося на складе).
13. Имеются сведения об экспортируемых товарах: наименование, страна, куда производится экспорт, срок поставки, количество и стоимость товара. Вывести страны, в которые должен быть поставлен данный товар до 1 мая, и общую стоимость указанных поставок.
14. Сведения о заказах некоторого предприятия бытового обслуживания состоят из номера заказа, даты (число, месяц, год) его исполнения и стоимости. Вывести все весенние заказы и их суммарную стоимость.
15. Некоторое обслуживающее предприятие хранит сведения о заказах: наименование заказа и время (часы, минуты, секунды) его поступления. Вывести заказы, которые произошли с 15 ч 10 мин 35 с до 18 ч 50 мин 10 с, и их число.
16. Сведения о горных вершинах состоят из следующих данных: название, координаты (широта, долгота), высота (в метрах над уровнем моря). Вывести сведения о вершинах с высотой более 3000 м, расположенных в Южном полушарии, и их максимальную высоту.
17. По некоторой группе людей собраны следующие медицинские данные: возраст, пол, рост, вес, температура, артериальное давление (два числа: верхнее и нижнее давление). Вывести сведения о мужчинах моложе 25 лет, имеющих верхнее артериальное давление выше 140, и их минимальный возраст.
18. О детях, поступающих в спортивную секцию, собраны следующие данные: фамилия, имя, год рождения, вес, рост. Вывести сведения о детях от 10 до 12 лет, рост которых не менее 155 см, а также их минимальный и максимальный вес.
19. Автоматизированная записная книжка содержит следующую информацию: фамилия, имя, отчество, адрес (город, улица, дом, квартира), телефон (если есть). Вывести фамилии и телефоны всех лиц, проживающих в г. Саратове на улице Солнечной. Определить их число.
20. Имеются сведения о районных библиотеках города: номер, тип (детская, взрослая), район, адрес, часы работы. Вывести адреса и часы работы всех детских библиотек данного района. Определить их количество.
21. Сведения о магазинах города состоят из названия, района, адреса, часов работы. Вывести сведения о книжных магазинах данного района, работающих после 18 ч, и количество таких магазинов.
22. Имеются следующие данные о товарах обувного магазина: наименование (ботинки, сапоги, босоножки и т. п.), тип (мужская, женская или детская обувь), сезон, цвет, размеры, стоимость. Вывести сведения о летней детской обуви и ее среднюю стоимость.
23. Имеются сведения о кошках, участвующих в конкурсе: порода, кличка, окрас, возраст, родители, фамилия хозяина, место в конкурсе. Вывести сведения о кошках сиамской породы, вошедших в призовую десятку. Вычислить средний возраст этих кошек.
24. Сведения о маршрутах городских автобусов содержат: номер маршрута, начальный пункт, конечный пункт, описание маршрута (промежуточные остановки), среднее время движения по маршруту, интервал в часы пик. Вывести номера маршрутов с заданным конечным пунктом и интервалом в часы пик, меньшим 10 мин. Также определить количество таких маршрутов.
25. Имеются сведения о пациентах поликлиники: фамилия, имя, отчество, год рождения, адрес, основное заболевание, дата последнего посещения лечащего врача. Определить количество больных диабетом и вывести сведения о больных диабетом, не посещавших лечащего врача более трех месяцев.
26. Имеются сведения о прохождении детьми прививок: фамилия, имя, год рождения, отметки о прививках против туберкулеза, полиомиелита, кори, коклюша, столбняка. Вывести сведения о детях семи лет, у которых отсутствует хотя бы одна прививка. Определить их число.
27. Сведения о товарах магазина одежды: наименование (костюм, пальто и т. п.), размер, рост, цвет, номер модели, цена. Вывести сведения о костюмах больших размеров (начиная с 52-го) и определить их минимальную и максимальную цену.
28. Имеются сведения о выпускниках учебного заведения: фамилия, имя, отчество, год поступления, год окончания, специальность, отметка о работе по специальности. Определить число лиц, окончивших учебное заведение в течение последних трех лет и не работающих по специальности. Вывести сведения о них.
29. Имеются сведения о программных продуктах: наименование, автор (или коллектив авторов), версия, год создания, модель ЭВМ. Вывести сведения об автоматизированных обучающих системах для заданной модели ЭВМ. Определить, сколько их.
30. О каждой книге имеются следующие сведения: фамилия и инициалы автора, название, год издания и число запросов за последние три года. Вывести фамилии авторов и названия книг, изданных до 2010 г., по которым нет запросов. Определить число таких книг.
Курс Программирование 2/2 (ИДДО П-Б-4/4-2-ЗАО/ЭКЗ).