|
||||
Методы системы программирования»
Кафедра информатики и информационных технологий
ОТЧЕТ по дисциплине: «Методы системы программирования» Лабораторная работа № 4 ВАРИАНТ № 20
Выполнил: студент группы 121591 факультета математики, физики и информатики Сидоров М.Д.
Тула – 2020
Общие задания: 2)Создать шаблон класса для работы с двусвязным списком. Применить шаблон класса для решения задачи. Элемент списка содержит информацию о заявке на авиабилет: пункт назначения, номер рейса, фамилию и инициалы пассажира, желаемую дату вылета. Программа должна обеспечивать: хранение всех заявок в виде списка, добавление заявок в список, удаление заявок, вывод заявок по заданному номеру рейса и дате вылета, вывод всех заявок. Код программы: #include <iostream> #include <string>
#include <iostream> #include <fstream> #include <cstringt.h> using namespace std; struct a { int s; char p[256]; char nom[256]; char f[256]; char in[256]; char data[256]; bool ud; a* next;
}; //, typename T2, typename T3, typename T4, typename T5 template <typename T1> class cl { public:
void sozdanie(a* s) { if (s == NULL) {
s = new a; begin = s; } else { (s)->next = new a; (s) = (s)->next; } cout << "Введите пункт назначения\n"; cin >> t; //s->s = t; strcpy(s->p, t); cout << "Введите номер рейса\n"; cin >> t; strcpy(s->nom, t); cout << "Введите фамилию\n"; cin >> t; strcpy(s->f, t); cout << "Введите инициалы\n"; cin >> t; strcpy(s->in, t); cout << "Введите дату вылета\n"; cin >> t; strcpy(s->data, t); (s)->next = NULL; s->ud = 0; }
void proch(a* s) { while (s) { if (s->ud == 0) cout << (s)->p << "\n" << (s)->nom << "\n" << (s)->f << "\n" << (s)->in << "\n" << (s)->data << "\n" << "\n\n"; (s) = (s)->next; } } void nomer(a* s) { cout << "Ищем по номеру\n"; char nom[256]; bool sec = 0; cin >> nom; while (s) { if ((strcmp(nom, (s)->nom) == 0) && s->ud == 0) { cout << (s)->p << "\n" << (s)->nom << "\n" << (s)->f << "\n" << (s)->in << "\n" << (s)->data << "\n"; sec = 1; } (s) = (s)->next; } if (sec == 0) cout << "Таких нет\n"; }
void data(a* s) { cout << "Ищем по дате вылета\n"; char data[256]; bool sec = 0; cin >> data; while (s) { if ((strcmp(data, (s)->data) == 0) && s->ud == 0) { cout << (s)->p << "\n" << (s)->nom << "\n" << (s)->f << "\n" << (s)->in << "\n" << (s)->data << "\n"; sec = 1; } (s) = (s)->next; } if (sec == 0) cout << "Таких нет\n"; } void udal(a* s) { cout << "Ищем по номеру\n"; char nom[256]; bool sec = 0; cin >> nom; while (s) { if ((strcmp(nom, (s)->nom) == 0) && s->ud == 0) { cout << (s)->p << "\n" << (s)->nom << "\n" << (s)->f << "\n" << (s)->in << "\n" << (s)->data << "\n"; sec = 1; s->ud = 1; } (s) = (s)->next; } if (sec == 0) cout << "Таких нет\n";
}
a* begin = NULL; private: T1 t; };
int main() { a* s = NULL; system("chcp 1251"); cl<char[256]> cl; int a; do { cout << "Введите\n1)Для ввода данных\n2)Распечатать\n3)Поиск по номеру рейса\n4)Поиск по дате вылета\n5)Удалить\n0)Выход\n"; cin >> a; if (a == 1) { cl.sozdanie(s); s = cl.begin; } if (a == 2) { cl.proch(s); s = cl.begin; } if (a == 3) { cl.nomer(s); s = cl.begin; } if (a == 4) { cl.data(s); s = cl.begin; } if (a == 5) { cl.udal(s); s = cl.begin; } cout << "\n"; } while (a != 0);
} Контрольные примеры: Пример №1
Пример №2
20.Индивидуальное задание: Создать шаблон класса для работы с одномерным массивом. Выполнить тестирование путем создания и обработки массивов, содержащих элементы различных типов (например, сортировка элементов массивов различными методами). Код программы: #include <iostream> #include <algorithm> using namespace std; template <typename T> class My { public:
void soq() {
cout << "Введите размер\n"; cin >> q; z = new T[q]; for (int i = 0; i < q; i++) { cin >> z[i]; } cout << "\n"; } void vivod() { for (int i = 0; i < q; i++) { cout << z[i] << "\t"; } cout << "\n"; } void sort() {
for (int i = 0; i < q; i++) { for (int j = 0; j < q; j++) { if (z[i] < z[j])swap(z[i], z[j]); } } cout << "\n"; } private: int q; T* z; };
int main() { int a; system("chcp 1251"); cout << "Введите тип данных 1-Целый 2-Дробные 3-Буквы\n"; cin >> a; if (a == 1) { My<int> s; s.soq(); s.vivod(); s.sort(); s.vivod(); } if (a == 2) { My<double> s; s.soq(); s.vivod(); s.sort(); s.vivod(); } if (a == 3) { My<char> s; s.soq(); s.vivod(); s.sort(); s.vivod(); } } Контрольные примеры: Пример №1 Пример №2
|
||||
|