Проектирование и реализация класса «Почтовый адрес»
Автор: cvappela • Май 13, 2023 • Практическая работа • 5,013 Слов (21 Страниц) • 184 Просмотры
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Чувашский государственный университет имени И.Н.Ульянова»
Факультет информатики и вычислительной техники
Кафедра математического и аппаратного обеспечения
информационных систем
Расчетно-графическая работа по дисциплине «Языки программирования»
на тему:
Проектирование и реализация класса «Почтовый адрес»
Выполнил:
Проверил:
Оценка_____________
Дата________________
Чебоксары 20
Оглавление
Введение 3
Постановка задачи 4
5
6
Класс 6
Функция main 6
Функция сортировки 8
Подключенные библиотеки 9
Заключение 11
Список использованной литературы 12
Приложение 1 13
Приложение 2 28
Приложение 3 29
Практическая часть
Класс
Создаю класс «Square». В модификатор доступа private создаю переменные:
int index, dom;
long telephone;
char organiz[100], gor[100], ul[100];.
В модификатор доступа public создаю итератор вектора типа класса Square: void in(vector <Square> &v, int& x); //для чтения из файла в вектор
void udal(vector <Square> &v); //для удаления отделььных записей
void Vvod(vector <Square> &v);//для добавления записей
void izmenorg(vector <Square> &v);//для изменения огранизации
void izmenindex(vector <Square> &v);//для изменения индекса
void izmengor(vector <Square> &v);//для изменения города
void izmenul(vector <Square> &v);//для изменения улицы
void izmendom(vector <Square> &v);//для изменения дома
void izmentelephon(vector <Square> &v);//для изменения телефона
void sortirovka(vector<Square>&v); //для сортировки по разным полям
void out(vector<Square>&v, int& x); //для вывода результата на экран
friend ostream &operator <<(ostream &stream, Square ob); //перегруженный оператор вывода
friend istream &operator >>(istream &stream, Square &ob); //перегруженный оператор ввода
Функция main
(Рис.1)В функцию передаем в качестве параметров вектор v и количество строк в файле x (x инициализируем равной нулю). Открываем файл для чтения (файл dat). Объявляем переменную str типа string. В цикле с помощью Getline проверяем сколько у нас записей в файле. (Количество записываем в x, то есть каждый раз прибавляем).
[pic 1]
(Рис.1 «Функция Main»)
Заканчиваем цикл, закрываем файл и вызываем функцию in, которая читает из файла(* ниже представлена функция in)
[pic 2]
(Рис.* «функция in»)
Далее (411-412) мы выводим наш вектор, который мы только что записали.
[pic 3]
(рис.2 «Продолжение функции main»)
Далее создаём переменную типа int vybor
[pic 4]
(рис.3 «Продолжение функции main »)
С помощью цикла do while выводим сообщение (строки 416-419). Вводим наш выбор. И в зависимости от того, что мы выбрали, выполняется та или иная функция.
Если вводим 11, завершается весь цикл и прекращается работа программы.
Функция сортировки
В ней передаём ссылку на вектор v, которая хранит объекты класса Square.
Объявляем переменную e типа int;
Выводим сообщение (по всем полям):
[pic 5]
(рис.4 «Начало функции сортировки»)
Вводим е. Если е равняется 1, то:
[pic 6]
(рис.5 «Продолжение функции сортировки»)
(Объяснение 304 строчки: sort – стандартный алгоритм из библиотеки #include <algorithm>; v.begin() - итератор начала(то есть откуда сортируем), v.end() – итератор конца(докуда сортируем). Далее «[]» (лямбда и всё, что после лямбда является компаратором) - это лямбда выражение Это сокращенная функция, она вписана в функцию sort. Мы можем отделить её при желании, но для этого нужно написать ещё 1 функцию bool типа и передать в неё параметры) В лямбду выражение мы передаем ссылку на объекты класса Square “a” и “b”. Если вкратце, то лямбда — это функция внутри функции. В лямбду выражение мы передаём параметры объект класса a и ссылку на объект класcа b; {return strcmp(a.organiz, b.organiz)<0;} – c помощью этого мы и сортируем. Если строка a меньше, чем строка b, то есть она идёт раньше чем b(по фалфавиту), то мы её возвращаем, то есть сортируем, то есть мы меняем их местами и так весь вектор от начала до конца)
...