include iostream include fstream struct ad дополнительный условия bool

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#include <iostream>
#include <fstream>
struct ad//дополнительный условия
{
bool house,
childrens,
bad_habit;
};
struct req//требования
{
bool education;
char nation[64];
int old,
money;
ad *addition;
};
struct client//клиент службы знакомств
{
char surname[64],
name[64],
second_name[64],
nation[64];
bool education;
int old,
money;
ad *addition;
req *requirements;
} **clients;
int num_of_clients;//кол-во клиентов
bool read_file(char *filename)//чтение данных о клиентах из файла
{
std::ifstream file;//объект файл
file.open(filename);//открываем файл с именем filename
if (file.fail()) return false;//не смогли открыть - возвращаем false
file>>num_of_clients;
clients = new client*[num_of_clients];
bool isaddit;//есть ли доплнительные условия?
for (int i=0; i<num_of_clients; i++)//считываем данные о клиентах
{
clients[i]=new client;
file>>clients[i]->surname
>>clients[i]->name
>>clients[i]->second_name
>>clients[i]->old
>>clients[i]->nation
>>clients[i]->education
>>clients[i]->money;
file>>isaddit;
if (isaddit)//есть ли у клиента дополнительные условия
{
clients[i]->addition=new ad;//если да, то заполняем
file>>clients[i]->addition->house
>>clients[i]->addition->childrens
>>clients[i]->addition->bad_habit;
}
else clients[i]->addition=NULL;//иначе обнуляем указатель с условиями
clients[i]->requirements=new req;//создаём и заполняем требования клиента
file>>clients[i]->requirements->education
>>clients[i]->requirements->old
>>clients[i]->requirements->nation
>>clients[i]->requirements->money;
file>>isaddit;
if (isaddit)//есть ли в требованиях дополнительные условия к партнёру
{
clients[i]->requirements->addition=new ad;
file>>clients[i]->requirements->addition->house
>>clients[i]->requirements->addition->childrens
>>clients[i]->requirements->addition->bad_habit;
}
else clients[i]->requirements->addition=NULL;
}
file.close();//закрываем файл
return true;
}
int main()
{
std::cout<<"Enter filename with clients: ";//просим ввести имя файла с описанием кассет
char temp[64];//строка для хранения имени файла
std::cin>>temp;//считываем строку
if (!read_file(temp))//если не удалось открыть файл с таким именем, то
{
std::cout<<"ERROR!"<<std::endl;//выведем сообщение об ошибке
return -1;//и выйдем из программы
}
int choice=0;//здесь будет храниться выбор пункта меню
while (choice!=6)//выводить меню, пока не выбран пункт 6
{
std::cout<<"1. Find all clients for whom the partner with higher education and with the specified level of the income approaches."<<std::endl
<<"2. Find all clients at whom additional conditions are not specified."<<std::endl
<<"3. Find all clients is more younger the specified age."<<std::endl
<<"4. Find the client to whom the youngest partner is required."<<std::endl
<<"5. Find all clients who do not have children."<<std::endl
<<"6. Exit."<<std::endl
<<"Enter number: ";
std::cin>>choice;
int t;//вспомогательная переменная
switch (choice)//оператор выбора действия в зависимости от выбора пользователя
{
case 1://Найти всех клиентов, для которых подходит партнёр с высшим образованием и с указанным уровнем дохода
std::cout<<"Enter level of the income approaches: ";
std::cin>>t;
std::cout<<"Peoples: "<<std::endl;
for (int i=0; i<num_of_clients; i++)
if (clients[i]->requirements->education && clients[i]->requirements->money>=t)
std::cout<<clients[i]->surname<<" "
<<clients[i]->name<<" "
<<clients[i]->second_name<<std::endl;
break;
case 2://Найти всех клиентов, у которых не указаны дополнительные условия
std::cout<<"Peoples: "<<std::endl;
for (int i=0; i<num_of_clients; i++)
if (!clients[i]->addition)
std::cout<<clients[i]->surname<<" "
<<clients[i]->name<<" "
<<clients[i]->second_name<<std::endl;
break;
case 3://Найти всех клиентов младше указанного возраста
std::cout<<"Enter age: ";
std::cin>>t;
std::cout<<"Peoples: "<<std::endl;
for (int i=0; i<num_of_clients; i++)
if (clients[i]->old<t)
std::cout<<clients[i]->surname<<" "
<<clients[i]->name<<" "
<<clients[i]->second_name<<std::endl;
break;
case 4://Найти клиента, которому требуется самый молодой партнёр
t=0;
for (int i=0; i<num_of_clients; i++)
{
if (clients[i]->requirements->old<clients[t]->requirements->old) t=i;
}
std::cout<<clients[t]->surname<<" "
<<clients[t]->name<<" "
<<clients[t]->second_name<<std::endl;
break;
case 5:// Найти всех клиентов, у которых нет детей
std::cout<<"Peoples: "<<std::endl;
for (int i=0; i<num_of_clients; i++)
if (clients[i]->addition)
if (!clients[i]->addition->childrens)
std::cout<<clients[i]->surname<<" "
<<clients[i]->name<<" "
<<clients[i]->second_name<<std::endl;
break;
case 6:
break;
default:
std::cout<<"Error! No such menu!"<<std::endl;
break;
}
}
return 0;//успешный выход из программы
}