poi_labs
.pdfколичеством экземпляров больше 100 с выводом найденных записей на
экран.
3)Структура записей: Номер рейса (строка 5 символов), Пункт отправления
(строка 10 символов), Пункт назначения (строка 10 символов), Дни полетов (от 1 до 7). Запрос: Поиск рейсов, вылетающих из города
"Барнаул" в среду(3день) с выводом найденных записей на экран.
4)Структура записей: Ф.И.О. (строка 15 символов), Домашний адрес (строка
20 символов), Номер участка (целое число), Год рождения (1910..2010).
Запрос: Поиск всех граждан из списка, родившихся до 1980 года и номером участка = 55 с выводом найденных записей на экран.
5)Структура записей: Шифр товара (строка 5 символов), Наименование товара (строка 20 символов), Цена в руб. (вещественное число), Признак наличия или отсутствия. Запрос: Поиск всех товаров, имеющихся в наличии и цена которых не превышает 1500 руб., с выводом найденных записей на экран.
6)Структура записей: Ф.И.О. (строка 20 символов), Факультет (строка 5
символов), Группа (строка 6 символов), Год рождения(целое число).
Запрос: Поиск всех студентов, группы "ПОИ91", родившихся в 1992 году с выводом найденных записей на экран.
7)Структура записей: Ф.И.О. авторов (строка 20 символов), Название
(строка 20 символов), Год издания (целое число), Шифр (строка 8
символов). Запрос: Поиск книг, названия которых начинаются с буквы ‗П‘ и изданных до 1990 года с выводом найденных записей на экран.
8)Структура записей: Ф.И.О. авторов (строка 20 символов), Название
(строка 20 символов), Год издания (целое число), Шифр (строка 8
символов). Запрос: Поиск книг, поле шифр которых начинаются с буквы
‗Т‘ и изданных после 1990 года с выводом найденных записей на экран.
9)Структура записей: Номер рейса (целое число), Пункт полетов (строка 20
символов), Пункт назначения (строка 10 символов), Дни полетов (от 1 до
61
7). Запрос: Поиск всех рейсов с номерами большими, чем 50, и
вылетающими в "Краснодар", с выводом найденных записей на экран.
10)Структура записей: Ф.И.О. (строка 15 символов), Домашний адрес
(строка 30 символов), Номер участка (целое число), Год рождения
(1910..2010). Запрос: Поиск всех граждан, родившихся до 1970 года и фамилия которых начинается с буквы ‗П‘ с выводом найденных записей на экран.
11)Структура записей: Шифр книги (строка 5 символов), Ф.И.О. авторов
(строка 20 символов), Название (строка 15 символов), Год издания (целое число). Запрос: Поиск книг, изданных до 1950 году и шифром "СС11" с
выводом найденных записей на экран.
12)Структура записей: Шифр товара (строка 5 символов), Наименование
(строка 20 символов), Цена в руб. (вещественное число), Количество экземпляров (целое число). Запрос: Поиск товаров, имеющих цену не меньше 20000 руб. и количеством экземпляров больше 180 с выводом найденных записей на экран.
13) Структура записей: Номер рейса (строка 5 символов), Пункт отправления (строка 12 символов), Пункт назначения (строка 10
символов), Дни полетов (от 1 до 7). Запрос: Поиск рейсов, вылетающих из города "Барнаул" в 1 или 3 день недели с выводом найденных записей на экран.
14)Структура записей: Ф.И.О. (строка 15 символов), Домашний адрес
(строка 20 символов), Номер участка (целое число), Год рождения
(1910..2010). Запрос: Поиск всех граждан из списка , родившихся до 1980
года и номером участка не более 100 с выводом найденных записей на экран.
15) Структура записей: Шифр товара (строка 5 символов), Наименование товара (строка 20 символов), Цена в руб. (вещественное число), Признак наличия или отсутствия. Запрос: Поиск всех товаров , которых нет в
62
наличии и имеющих цену, не меньше 5000 руб.с выводом найденных
записей на экран.
16)Структура записей: Ф.И.О. (строка 20 символов), Факультет (строка 5
символов), Группа (строка 6 символов), Год рождения(целое число).
Запрос: Поиск всех студентов, группы "ПОИ91", родившихся до 1990 с
выводом найденных записей на экран.
17)Структура записей: Ф.И.О. авторов (строка 20 символов), Название
(строка 20 символов), Год издания (целое число), Шифр (строка 8
символов). Запрос: Поиск книг, фамилии авторов которых начинаются с буквы ‗В‘, и изданных после 1990 года с выводом найденных записей на
экран.
18)Структура записей: Ф.И.О. авторов (строка 20 символов), Название
(строка 20 символов), Год издания (целое число), Шифр (строка 8
символов). Запрос: Поиск книг, поле шифр которых начинаются с буквы
‗И‘ и изданных до 1990 года с выводом найденных записей на экран.
19)Структура записей: Номер рейса (целое число), Пункт полетов (строка
20 символов), Пункт назначения (строка 10 символов), Дни полетов (от 1
до 7). Запрос: Поиск всех рейсов с номерами меньшими, чем 100 и
вылетающими в из пункта "Адлер" с выводом найденных записей на экран.
20)Структура записей: Ф.И.О. (строка 15 символов), Домашний адрес
(строка 30 символов), Номер участка (целое число), Год рождения
(1910..2010). Запрос: Поиск всех граждан, родившихся после 1970 года и фамилия которых начинается с буквы ‗А‘ с выводом найденных записей на экран.
Контрольные вопросы
1.Дайте определение структуры.
2.Какие бывают способы объявления структуры?
63
3.Какие бывают способы определения структурных переменных?
4.Как получить доступ к члену структуры?
5.Какие операции можно выполнять над структурами?
64
Лабораторная работа № 9
Работа с файлами
Цель работы
Изучить работу с файлами в языке С++:
Задачи занятия:
Изучить понятие файловых переменных и синтаксис их описания в языка С++;
Изучить организацию данных в виде файлов;
Изучить функции обработки данных в файлах в языка С++;
Проработать примеры программ с использованием файлов;
Разработать алгоритмы с использованием файлов по индивидуальному варианту;
Написать и отладить программы, реализующие разработанные алгоритмы;
Составить и защитить отчет.
Задания
1. Изучите функции открытия и закрытия файлов, используя следующий
фрагмент программы:
#include <iostream.h> #include <fstream.h> #include <stdlib.h> #include <conio.h> int main()
{
ifstream in_stream; ofstream out_stream;
in_stream.open( "Lecture.txt" ); if ( in_stream.fail() )
{
65
cout << "Извините, открыть файл не удалось!\n"; getch();
exit(1);
}
in_stream.close(); return 0;
}
В программе подключен заголовочном файле "fstream.h", т.к. в нем хранится список функций для работы с файловыми потоками. Операторы ifstream in_stream; ofstream out_stream; создают файловый поток ввода с именем
"in_stream", и файловый поток вывода с именем "out_stream", Для подключения потока к файлу используется функция open (например in_stream.open( "Lecture.txt"). Для закрытия файла надо вызвать функцию close(). Простейший способ проверки ошибок файловых операций заключается в вызове функции fail(), которая возвращает True, если последняя операция соответствующего потока привела к ошибке.
2.Написать программу, которая определяет, встречается ли в заданном текстовом файле заданная последовательность символов. Длина строки текста не превышает 80 символов, текст не содержит переносов слов, При
написании используйте следующий пример.
#include <fstream.h> #include <iostream.h> #include <string.h> #include <conio.h> int main(){
const int len = 81:
char word[len], line[len];
cout << "Введите словo для поиска: "; cin >> word;
ifstream fin; fin.open( "Text.txt" ); if ( fin.fail() ) {
cout << "Ошибка открытия файла." ; getch();
return 1;
66
}
while (fin.getline( line, len)) { if (strstr(line, word)) {
cout << "Присутствует!" ; getch();
return 0;
}
}
cout << "Отсутствует!"; getch();
return 0;
}
3.Измените программу так, чтобы она подсчитывала количество вхождений слова в текст.
4.Выполнить задание на файлы в соответствии с указанным преподавателем
вариантом.
Варианты №21. Написать программу, которая считывает из текстового файла три
предложения и выводит их в обратном порядке.
№22. Написать программу, которая считывает текст из файла и выводит на экран только предложения, содержащие введенное с клавиатуры слово.
№23. Написать программу, которая считывает текст из файла и выводит на экран только строки, содержащие двузначные числа.
№24. Написать программу, которая считывает английский текст из файла и выводит на экран слова, начинающиеся с гласных букв.
№25. Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова.
№26. Написать программу, которая считывает текст из файла и выводит на экран только предложения, не содержащие запятых.
№27. Написать программу, которая считывает текст из файла и определяет, сколько в нем слов, состоящих из не более чем четырех букв.
67
№28. Написать программу, которая считывает текст из файла и выводит на экран только цитаты, то есть предложения, заключенные в кавычки.
№29. Написать программу, которая считывает текст из файла и выводит на экран только предложения, состоящие из заданного количества слов.
№30. Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы.
№31. Написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных чисел.
№32. Написать программу, которая считывает текст из файла и выводит на экран только предложения, начинающиеся с тире, перед которым могут находиться только пробельные символы.
№33. Написать программу, которая считывает английский текст из файла и выводит его на экран, заменив каждую первую букву слов, начинающихся с гласной буквы, на прописную.
№34. Написать программу, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова «ноль», «один», ..., «девять», начиная каждое предложение с новой строки.
№35. Написать программу, которая считывает текст из файла, находит самое длинное слово и определяет, сколько раз оно встретилось в тексте.
№36. Написать программу, которая считывает текст из файла и выводит на экран сначала вопросительные, а затем восклицательные предложения.
№37. Написать программу, которая считывает текст из файла и выводит его на экран, после каждого предложения добавляя, сколько раз встретилось в нем введенное с клавиатуры слово.
№38. Написать программу, которая считывает текст из файла и выводит на экран все его предложения в обратном порядке.
68
№39. Написать программу, которая считывает текст из файла и выводит на экран сначала предложения, начинающиеся с однобуквенных слов, а затем все остальные.
№40. Написать программу, которая считывает текст из файла и выводит на экран предложения, содержащие максимальное количество знаков пунктуации.
Контрольные вопросы
6.Дайте определение файла.
7.Объясните понятие потока ввода/вывода.
8.Какие бывают виды потоков ввода/вывода?
9.Какие действия необходимо выполнить до начала работы с файлом?
10.Какие операции можно выполнять над файлами?
11.Какие функции можно использовать при работе с файлами?
69
Список использованных источников
1.Керниган, Б. Язык программирования С(Си). / Б. Керниган, Д. Ритчи,
А. Фьюэр. -М.: Издательский дом «Вильямс», 2008. - 304с.
2.Павловская, Т. С/С++. Структурное и объектно-ориентированное программирование. Практикум. / Т. Павловская, Ю. Щупак. – СПб.:
Питер, 2010. - 352с.
3.Шилдт, Г. Полный справочник по C [Текст] / Г. Шилдт. – М. : Вильямс,
2008. – 704 с. : ил.
4.Павловская, Т.А. С/С++. Программирование на языке высокого уровня.
/ Т.А. Павловская – СПб: Питер, 2010. - 461с.
5.Боровский, А.Н. С++ и Borland C++ Builder. Самоучитель. / А.Н.
Боровский. – СПб.: Питер, 2005. – 256 с.
6.Пахомов, Б.И. С/С++ и MS Visual C++ 2008 для начинающих. / Б.И.
Пахомов - СПб.: БХВ-Петербург, 2008. - 624 с.
70