Лабораторные и контрольные работы ОАиП (6 вариант) - 1 семестр
.pdf28:#include <iostream>
29:#include <vector>
30:using namespace std;
31:
32:int main(int argc, char* argv[])
33:{
34:unsigned N=5;
35:
36:// объявление вектора дробных чисел
37:vector<double> a;
38:
39:for(unsigned i=0;i<N;i++) {
40:double x;
41:// считываем дробное число с клавиатуры
42:cout << "a[" << i << "] = ";
43:cin >> x;
44:// и добавляем его в конец вектора
45:a.push_back(x);
46:}
47:
48:// вывод вектора на экран
49:for(unsigned i=0;i<a.size();i++) {
50:cout << "a[" << i << "] = " << a[i] << endl;
51:}
52:return 0;
53:}
22
Лабораторная работа №18
Задание 1. Дана последовательность действительных чисел. Необходимо вычислить: сумму элементов последовательности от начала до последнего положительного элемента (включительно).
Задание 2. Дана последовательность действительных чисел. Необходимо используя алгоритм сортировки вставками сформировать новую последовательность, упорядоченную: а) по возрастанию; б) по убыванию.
Указания.
1.Для представления последовательности необходимо использовать библиотечный шаблон vector.
2.Для доступа к элементам последовательности необходимо использовать
итераторы.
3.Ввод, вывод и обработку последовательностей реализуйте в отдельных функциях.
Пример. Ввод-вывод вектора из дробных чисел с помощью итераторов.
23
54: #include <iostream> 55: #include <vector> 56: #include <iterator> 57: #include <windows.h> 58: using namespace std;
59:
60: int main(int argc, char* argv[]) { 61: SetConsoleCP(1251);
62: SetConsoleOutputCP(1251);
63:
64: // объявление вектора дробных чисел
65: vector<double> v;
66:
67: /*******************************************************************
68: * считывание вектора из потока с помощью итераторов *
69: *******************************************************************/
70:
71: cout<<"Введите последовательность дробных чисел (конец ввода - Ctrl+Z)\n";
72:
73: // объявление итератора для чтения дробных чисел из потока (cin)
74: istream_iterator<double> cin_iter(cin);
75: // итератор - конец потока (любого) дробных чисел
76: istream_iterator<double> cin_end;
77:
78: while(cin_iter!=cin_end) { // дошли до конца потока?
79: double x=*cin_iter; // взять текущий элемент из потока 80: v.push_back(x); // добавить его в вектор
81: cin_iter++; // перейти к следующему элементу потока
82: }
83:
84: /*******************************************************************
85: * вывод вектора в поток с помощью итераторов *
86: *******************************************************************/
87:
88: cout<<"Последовательность дробных чисел:\n";
89:
90: // объявление итератора - указателя на элемент вектора
91: vector<double>::iterator iter;
92:
93: iter=v.begin(); // начинаем с начала вектора
94: while(iter<v.end()) { // дошли до конца вектора?
95: cout << *iter << endl; // обработка текущего элемента
96: iter++; // перейти к следующему элементу вектора
97: }
98:
99: system("pause");
100:
101: return 0;
102: }
24
Лабораторная работа №19
Задание 1. Изучите реализации информационной системы на основе стандартных контейнеров и алгоритмов.
Задание 2. Разработайте информационную систему в соответствии с вариантом задания. Реализуйте функции для ввода, вывода данных, упорядочения по некоторому признаку, формирования нового списка.
Ящик электронной ПОЧТЫ: отправитель СООБЩЕНИЯ, текст сообщения, даты отправления. Упорядочьте по убыванию даты отправления. Сформируйте все сообщения указанного отправителя.
25
Лабораторная работа №20
Создать консольное приложение, удовлетворяющее следующим требованиям:
1.Использовать возможности ООП: классы, наследование, полиморфизм, инкапсуляция, абстракцию. Обязательно создать абстрактный класс!!!!
2.Каждый класс должен иметь исчерпывающее смысл название и информативный состав.
3.Работа с консолью или консольное меню должно быть минимальным.
4.Для хранения параметров инициализации использовать файлы.
Камни. Определить иерархию драгоценных и полудрагоценных камней. Отобрать камни для ожерелья. Посчитать общий вес (в каратах) и стоимость. Провести сортировку камней ожерелья на основе ценности. Найти камни в ожерелье, соответствующие заданному диапазону параметров прозрачности.
26
Лабораторная работа №21
1. Написать программу «Англо-русский и русско-английский словарь».
«База данных» словаря должна содержать синонимичные варианты перевода слов.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
•Загрузка «базы данных» словаря (из файла).
•Выбор режима работы: англо-русский, русско-английский.
•Вывод вариантов перевода заданного английского слова.
•Вывод вариантов перевода заданного русского слова.
Базу данных словаря реализовать в виде двух контейнеров типа set
2.Написать программу «Автоматизированная информационная система на железнодорожном вокзале».
Информационная система содержит сведения об отправлении поездов дальнего следования. Для каждого поезда указывается: номер, станция назначения, время отправления. Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
– первоначальный ввод данных в информационную систему (с клавиатуры или из файла);
– вывод сведений по всем поездам;
– вывод сведений по поезду с запрошенным номером;
– вывод сведений по тем поездам, которые следуют до запрошенной станции назначения.
Хранение данных организовать с применением контейнерного класса set.
3.Написать программу учета заявок на обмен квартир и поиска вариантов обмена.
Каждая заявка содержит фамилию и инициалы заявителя, а также сведения о двух квартирах: требуемой (искомой) и имеющейся. Сведения о каждой квартире содержат: количество комнат, площадь, этаж, район. Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
– ввод заявки на обмен;
– поиск в картотеке подходящего варианта: при совпадении требований и предложений по количеству комнат и этажности, и различии по показателю «площадь» в пределах 10% выводится соответствующая карточка и удаляется из списка, в противном случае поступившая заявка включается в картотеку;
– вывод всей картотеки.
Хранение данных организовать с применением контейнерного класса set.
4.Написать программу «Моя записная книжка».
Предусмотреть возможность работы с произвольным числом записей, поиска записи по какому-либо признаку (например, по фамилии, дате рождения или
27
номеру телефона), добавления и удаления записей, сортировки по разным полям. Хранение данных организовать с применением контейнерного класса set.
5. Составить программу учета заявок на авиабилеты.
Каждая заявка содержит: пункт назначения, номер рейса, фамилию и инициалы пассажира, желаемую дату вылета. Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
–добавление заявок в список;
–удаление заявок;
–вывод заявок по заданному номеру рейса и дате вылета;
–вывод всех заявок, упорядоченных по пунктам назначения;
–вывод всех заявок, упорядоченных по датам вылета.
Хранение данных организовать с применением контейнерного класса multlmap, в качестве ключа использовать «пункт назначения».
6.Составить программу моделирования работы автобусного парка.
Сведения о каждом автобусе содержат: номер автобуса, фамилию и инициалы водителя, номер маршрута. Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
– начальное формирование данных о всех автобусах в парке в виде списка (ввод с клавиатуры или из файла);
– имитация выезда автобуса из парка: вводится номер автобуса; программа удаляет данные об этом автобусе из списка автобусов, находящихся
в парке, и записывает эти данные в список автобусов, находящихся на маршруте;
– имитация въезда автобуса в парк: вводится номер автобуса; программа удаляет данные об этом автобусе из списка автобусов, находящихся на маршруте, и записывает эти данные в список автобусов, находящихся в парке;
– вывод сведений об автобусах, находящихся в парке, и об автобусах, находящихся на маршруте, упорядоченных по номерам автобусов;
– вывод сведений об автобусах, находящихся в парке, и об автобусах, находящихся на маршруте, упорядоченных по номерам маршрутов. Хранение всех необходимых списков организовать с применением контейнерного класса mар, в качестве ключа использовать «номер автобуса».
7.Написать программу «Англо-русский и русско-английский словарь». «База данных» словаря должна содержать синонимичные варианты перевода слов. Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
– Загрузка «базы данных» словаря (из файла).
– Выбор режима работы: англо-русский, русско-английский.
– Вывод вариантов перевода заданного английского слова.
28
– Вывод вариантов перевода заданного русского слова.
Базу данных словаря реализовать в виде двух контейнеров типа mар.
8. Написать программу «Моя записная книжка».
Предусмотреть возможность работы с произвольным числом записей, поиска записи по какому-либо признаку (например, по фамилии, дате рождения или номеру телефона), добавления и удаления записей, сортировки по разным полям. Хранение данных организовать с применением контейнерного класса map или multimap.
9. Написать программу учета книг в библиотеке.
Сведения о книгах содержат: фамилию и инициалы автора, название, год издания, количество экземпляров данной книги в библиотеке. Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
–добавление данных о книгах, вновь поступающих в библиотеку;
–удаление данных о списываемых книгах;
–выдача сведений о всех книгах, упорядоченных по фамилиям авторов;
–выдача сведений о всех книгах, упорядоченных по годам издания. Хранение данных организовать с применением контейнерного класса multimap, в качестве ключа использовать «фамилию и инициалы автора».
29