C/C++

Программирование в C++

структуры и массивы структур
2.1 Сформировать массив из элементов структурного типа. Структурный тип определен в варианте. Ввести данные для десяти элементов массива.
2.2 Вывести массив на экран.
2.3 Выполнить поиск элементов в массиве, удовлетворяющих заданному в варианте условию. Вывести найденные элементы на экран. В случае отсутствия таких элементов, вывести сообщение об этом.
Определить структурный тип для представления анкеты студента, состоящей из его фамилии, года рождения, месяца рождения, дня в месяце, пола. Вывести фамилию самого старшего мальчика из группы.
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;

struct student
{
string sname;
uint16_t year;
uint16_t mounth;
uint16_t day;
bool ismale;
};

void print(vector<student>& vec)
{
for (auto& i : vec)
cout << i.year << "-" << i.mounth << "-" << i.day << "\t" << setw(15) << i.sname << setw(15) << (i.ismale ? "male" : "female") << endl;
}

student generator()
{
bool male;
string f;
const char* f1 = "PoMoDoVeZaFeNiReKoMeKo"; //11*2
const char* f2 = "memakolosanidebastvane"; //11*2
const char* f3 = "va\0\0\0vich\0ko\0\0\0"; //3*5
const char* m3 = "v\0\0\0\0vich\0ev\0\0\0"; //3*5
f.append(f1, rand() % 11 * 2, 2);
for (int i = 0; i < 1+rand() % 2; i++) f.append(f2, rand() % 11 * 2, 2);
(male = rand() % 2) ? f.append(m3 + rand() % 3 * 5) : f.append(f3 + rand() % 3 * 5);
uint16_t year = 1990 + rand() % 14;
uint16_t month = 1 + rand() % 12;
uint16_t day = 1 + month == 2 ? rand() % 28 : rand() % 30;
student res({ f,year,month,day,male });
return res;
}
int main()
{
srand(time(nullptr));
size_t size;
cout << "Enter students count:\n";
cin >> size;
vector<student>sudents(size);
for (auto& i : sudents) i = generator();
student finde = sudents[0];
print(sudents);
auto solver = [](student& l, student& r) {if (l.year == r.year)if (l.mounth == r.mounth) return l.day < r.day; else return l.mounth < r.mounth; else return l.year < r.year; };
for (auto& i : sudents)
{
if (!finde.ismale && i.ismale) {
finde = i; continue;
}
if (i.ismale&&solver(i, finde)) finde = i;
}
if (finde.ismale) {
cout << "older male:\n";
cout << finde.sname << " " << finde.year << "/" << finde.mounth << "/" << finde.day;
}
else cout << "Not find male student!";
}
Наумко Юра
Наумко Юра
51 416
Лучший ответ
Yanis Kuchinskiy Помогите пожалуйста мне ещё! У меня в профиле последний вопрос
Аслан Сисингалиев пишет не самого старшего студента и так же не пишет его пол