|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.04.2018, 11:37 | #1 |
Регистрация: 16.04.2018
Сообщений: 4
|
Помогите пожалуйста осуществить поиск (5-ый пункт)
Само задание выглядит так:
Создать класс «Список группы», в котором список реализован как циклический. По каждому человеку в группе должна быть следующая информация: фамилия, имя, отчество, год рождения, пол. Методы класса должны позволять: 1) создавать список 2) добавлять элемент перед i-тым элементом 3) выводить информацию об i-том члене группы 4) удалять i-тый элемент 5) осуществлять поиск всех членов группы женского пола. Программа: https://cloud.mail.ru/public/GP18/DH2YvrYSj #include <iostream> #include <cstring> #include <conio.h> #include <clocale> using namespace std; struct Element // структура { string name; string surname; string twoname; int god; string pol; Element *next; // указатель на следующий элемент Element *prev; // указатель на предыдущий элемент }; class SpisokGrup { private: Element *List; // первый элемент списка public: SpisokGrup(); // конструктор без параметров SpisokGrup(string n, string s, string t, int g, string p); // конструктор с параметрами ~SpisokGrup(); void Add_a(); void Add(string n, string s, string t, int g, string p, int any); // добавление элемента в список void WriteList(); // выводим значения всех элементов списка void GetName(int g); // вывод значения по индексу void delete_Element (int d); // удаление эллемента // void Poisk(); }; SpisokGrup::~SpisokGrup() { Element *current = List; Element *tmp; if (current) { do { tmp=current->next; delete current; current=tmp; } while (current != List); List = NULL; } } SpisokGrup::SpisokGrup() //конструктор без параметров { List=NULL; } SpisokGrup::SpisokGrup(string n, string s, string t, int g, string p) //конструктор создания списка { Element *tmp = new Element; tmp->name=n; tmp->surname=s; tmp->twoname=t; tmp->god=g; tmp->pol=p; tmp->next=tmp; tmp->prev=tmp; List=tmp; } void SpisokGrup::Add_a() { cout << "добавление элементов\n"<<endl; } void SpisokGrup::Add(string n, string s, string t, int g, string p, int any) // метод добавления элемента { Element *current = List; Element *tmp; int count = 0; // счетчик if (current) { do { if (count==any) break; current = current->next; count++; } while (current != List); if (count == any) { Element *tmp = new Element; // tmp - переменная для записи данных tmp->name=n; tmp->surname=s; tmp->twoname=t; tmp->god=g; tmp->pol=p; tmp->next=current; // current - элемент списка на котором я нахожусь tmp->prev=current->prev; tmp->prev->next=tmp; current->prev=tmp; if (current->next == current) current->next = tmp; if (count == 0) List = tmp; } } } void SpisokGrup::WriteList() // функция вывода на экран всего списка { Element *current = List; // текущий элемент делаем первым Element *tmp; if (current) { do { cout << current -> name.c_str() << endl; // печатаем данные последнего элемента cout << current -> surname.c_str() << endl; cout << current -> twoname.c_str() << endl; cout << current -> god << endl; cout << current -> pol.c_str() << endl; current = current->next; } while (current != List); } } void SpisokGrup::GetName(int g) { int count = 0; // счетчик Element *current = List; if (current) { cout << "Index = " << g << endl; do { if (count == g) { cout << current->name.c_str() << endl; // печатаем данные последнего списка cout << current->surname.c_str() << endl; cout << current->twoname.c_str() << endl; cout << current->god << endl; cout << current->pol.c_str() << endl; break; } else { count++; current = current->next; } } while (current != List); if ((current == List) && (g != 0)) cout << "Index out of range" << endl; } else cout << "Empty list" << endl; } void SpisokGrup:elete_Element(int d)// метод удаление элемента { int count = 0; // счетчик Element *current = List; while (count==d) { current=current->next; count++; } current->next=current->next->next; } /*void SpisokGrup::Poisk() { int count = 0; // счетчик Element *current = List; while (current != List) { current=current->next; count++; } if (current->pol=="ж") { cout << current->pol<< endl; } } */ int main() { setlocale(LC_CTYPE, "rus"); SpisokGrup *objCreat = new SpisokGrup("Иванов","Иван","Иванови ч",1996,"м"); objCreat -> Add_a(); objCreat -> Add("Петров","Петр","Петрович",1998 ,"м",1); objCreat -> Add("Сидоров","Михаил","Алексеевич" ,1990,"м",2); objCreat -> Add("Кукушкина","Валентина","Петров на",1991,"ж",3); objCreat -> WriteList(); objCreat -> GetName(1); // вызываем метод вывода i-того элемента objCreat -> delete_Element(1); objCreat -> WriteList(); // objCreat -> Poisk(); getch(); return 0; } Последний раз редактировалось с787ан; 21.04.2018 в 11:45. |
21.04.2018, 19:35 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,726
|
Взять вашу функцию
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите пожалуйста доделать программу. Нужно сделать метод, который выводить информацию об элементе (3-й пункт) | с787ан | Помощь студентам | 0 | 18.04.2018 16:25 |
Помогите пожалуйста решить две задачки - поиск минимального значения в векторе и поиск/перестановка положительных элементов в матрице | Ruslan Rutkovsky | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 12.05.2017 23:43 |
Осуществить циклический сдвиг элементов квадратной матрицы(Помогите пожалуйста!!! ) | Челобег | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 21.05.2016 01:11 |
Помогите, срочно пожалуйста, проболел из-за весны много, а на завтра сдать нужно Осуществить сдвиг элементов массива Y (m) в напра | FYNZIK | Помощь студентам | 2 | 26.03.2015 00:12 |
Помогите пожалуйста осуществить индексацию каталога с подкаталогами | ArtUrlWWW | Помощь студентам | 2 | 26.08.2008 21:42 |