Лаба №1 3 семак

Run Settings
LanguageC++
Language Version
Run Command
#include <iostream> #include <string.h> #include <stdlib.h> using namespace std; /* Задание на дом. Лабораторная №1. Связный список, классы - Создать класс Карточка (библиотечная, кадрова и т.п. - тему выбрать самостоятельно). - Создать список (однонаправленный или двунаправленный) из карточек. - Реализовать следующие функции: создание пустого списка создание элемента списка (данные из консоли) добавление карточки в конец списка включение карточки после текущей поиск карточки (по ключу, по имени..) удаление карточки из списка изменение карточки печать карточки (в консоль) печать всего списка загрузка списка из файла сохранение списка в файл При этом карточка обязательно должна содержать данные с типом char. char *title; //Заголовок книги Использовать в функциях передачу параметров с помощью указателей и по ссылке, при этом везде, где не требуется изменять значение, использовать const.*/ /*СТРУКТУРА СТУДЕНТ*/ struct Student { char Name[20]; //Имя char NameLast[30]; //Фамилия int Age; //Возраст char School[30]; //Место учебы void Input(Student &student); //Функция ввода данных в структуру void Show1(); Student *Next, *Prev; //Адрес на следующий элемент }; class List { Student *Head; //Указатель на начало списка public: List():Head(NULL){}; //Конструктор по умолчанию (Head=NULL) ~List();//Деструктор void Add(Student &student); void find(int N); void Show(); }; /*ФУНКЦИЯ ЗАПОЛНЕНИЯ ДАННЫХ ПО СТУДЕНТУ*/ void Student::Input(Student &student) { cout<<endl; //Небольшой разрыв при каждом новом вводе cout<<"Имя: "; cin.getline(Name,20); //Ввод имени cout<<"Фамилия: ";cin.getline(NameLast,30); //Ввод фамилии cout<<"Полных лет ";cin>>Age; //Ввод возраста cin.ignore(); //Игнорируем символ cout<<"Где учится ";cin.getline(School,30); //Ввод места учебы } void Student::Show1() { //Выводим все элементы структуры cout<<this->Name<<"\t"; //Вывод имени cout<<this->NameLast<<"\t"; //Вывод фамилии cout<<Age<<"\t"; //Вывод возраста cout<<this->School<<endl; //Вывод места учебы cout<<endl; } List::~List() //Деструктор класса List { while (Head!=NULL) //Пока по адресу есть хоть что-то { Student *temp=Head->Next; //Сразу запоминаем указатель на адрес следующего элемента структуры delete Head; //Освобождаем память по месту начала списка Head=temp; //Меняем адрес начала списка } } /*ФУНКЦИЯ ДОБАВЛЕНИЯ НОВОЙ СТРУКТУРЫ В СПИСОК*/ void List::Add(Student &student) { student.Next = Head; Head=&student; //Смена адреса начала списка } /*ФУНКЦИЯ ДОБАВЛЕНИЯ НОВОЙ СТРУКТУРЫ В СПИСОК*/ void List::find(int N) { Student *temp=Head; //Объявляем указатель и изначально он указывает на начало while (temp!=NULL) //Пока по адресу на начало хоть что-то есть { if(temp->Age == N) { cout<<"элемент найден "; temp->Show1(); } temp=temp->Next; //Указываем на следующий адрес из списка } } /*ФУНКЦИЯ ПОИСКА ДЛЯ ВСТАВКИ КАРТОЧКИ Student* List::find1(int N) { Student *temp=Head; //Объявляем указатель и изначально он указывает на начало while (temp!=NULL) //Пока по адресу на начало хоть что-то есть { if(temp->Age == N) { cout<<"элемент найден "; temp->Show1(); return temp; } temp=temp->Next; //Указываем на следующий адрес из списка } return NULL; } bool List::vstavka(Student *temp){ } */ /*ФУНКЦИЯ КЛАССА LIST ДЛЯ ВЫВОДА СПИСКА НА ЭКРАН*/ void List::Show() { Student *temp=Head; //Объявляем указатель и изначально он указывает на начало while (temp!=NULL) //Пока по адресу на начало хоть что-то есть { //Выводим все элементы структуры cout<<temp->Name<<"\t"; //Вывод имени cout<<temp->NameLast<<"\t"; //Вывод фамилии cout<<temp->Age<<"\t"; //Вывод возраста cout<<temp->School<<endl; //Вывод места учебы temp=temp->Next; //Указываем на следующий адрес из списка } cout<<endl; } int main () { Student * student; //Обяъвили переменную, тип которой Студент int N; //Объявили переменную - число студентов List lst; //Объявили переменную типа Список. Она выступает как контейнер данных cout<<"N = ";cin>>N; //Ввели число студентов cin.ignore(); //Игнорируем клавишу Enter for (int i=0;i<N;i++) { student = new Student(); student->Input(*student); //Передаем в функцию заполнения переменную студент lst.Add(*student); //Добавляем заполненную структуру в список } cout<<endl; lst.Show(); //Показываем список на экране lst.find(18); }
Editor Settings
Theme
Key bindings
Full width
Lines