Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2018, 11:37   #1
с787ан
 
Регистрация: 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.
с787ан вне форума Ответить с цитированием
Старый 21.04.2018, 19:35   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Взять вашу функцию
Код:
void SpisokGrup::WriteList()
и добавить один иф на проверку пола.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста доделать программу. Нужно сделать метод, который выводить информацию об элементе (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