Составить список участников соревнований указав разряд возраст пол Сде

  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
/*
Составить список участников соревнований, указав разряд, возраст, пол. Сделать
прогноз исхода соревнований, учитывая, что будет иметь успех участник, который:
1) имеет высший разряд;
2) моложе.
Отдельно сделать прогноз на мужчин и женщин.
*/
#include "stdafx.h"//Забей
#define N 9 //Константа для определения кол-ва полей массива
using namespace std;//Забей
struct Person // Имя структуры
{
string Name; //Поля структуры
int Class;
int Age;
string Sex;
};
struct Winner
{
string Name;
int Class;
int Age;
string Sex;
};
//Функция заполнения ФИО случайными символами с большой буквы
string creator_fio(string str1)//Функция типа string, входные данные: str типа string
{
for (int i = 0; i < 6; i++) //Цикл For от i = 0 до i < 6, у тебя будет от 1 до <= 6, а вообще сама выбирай
//Это количество букв в имени
{
int x = rand() % (122 - 97 + 1) + 97; //Случайный x от 97 до 122. По таблице ASCII
//буквы строчного латинского алфавита
str1[i] = char(x); //Присваиваем i-тому символу строки str1 преобразованную букву. У вас это ord что ли
//в общем переводим число x в букву
str1 += str1[i]; //Приписываем эту букву к строке и в цикле получаем слово
str1[0] = char(x - 32); //В таблице ASCII прописная буква отличается от такой же строчной на 32 символа
//Присваиваем первому символу строки полученный случайный х - 32, получаем из этой буквы заглавную.
}
return str1; // Возвращаем полученную строку в программу
};
//Генерация случайного пола
string creator_sex() //Функция типа string без входных данных
{
int randsex = rand() % 2; // Присваиваем переменной randsex случайное значенеи 0 или 1
if (randsex == 0) //Если rand sex равно 0, то
return "Female"; //Возвращаем "Женщина"
else //Иначе
return "Male"; // Возвращаем "Мужчина"
}
int _tmain(int argc, _TCHAR* argv[]) //Начало программы
{
setlocale(LC_ALL, "Rus");//Забей
//Инициализируем переменные типа структуры
Person Person[N];
Winner MWinner;
Winner FWinner;
string Name;
srand(time(NULL));//Функция, которая делает так, шоб случайно сгенерированные числа не повторялись.
//Заполение структуры
for (int i = 0; i < N; i++) //Цикл For для i = 0 до i < N
{
Person[i].Name = creator_fio(Name); //Присваивание полю Name стркутуры Person случайное имя из функции creator_fio. Передаем
//Переменную Name типа string
Person[i].Class = 1 + rand() % 5; // Присваиваем полю Class случайное число от 1 до 5
Person[i].Sex = creator_sex(); //Из функции присваиваем случайный пол полю Sex
Person[i].Age = (rand() % (25 - 16 + 1) + 16); //Полю Age присваиваем случайное число от 16 до 25
}
//Вывод структуры
for (int i = 0; i < N; i++)
{
cout << Person[i].Name << " Class: " << Person[i].Class << " Age: " << Person[i].Age << " Sex: " << Person[i].Sex << '\n';
}
//Присваиваем структурам FWinner/MWinner первоначальные значения для последующего сравнения
if (Person[0].Sex == "Female") //Если Переменная Person с индексом 0 равна "Женщина"
{
FWinner.Age = Person[0].Age; //Думаюпоймешь
FWinner.Class = Person[0].Class;
FWinner.Sex = Person[0].Sex;
MWinner.Age = 99;
MWinner.Class = 99;
MWinner.Sex = "Male";
}
else //Иначе
{
MWinner.Age = Person[0].Age; //Думаюпоймешь
MWinner.Class = Person[0].Class;
MWinner.Sex = Person[0].Sex;
FWinner.Age = 99;
FWinner.Class = 99;
FWinner.Sex = "Female";
}
for (int i = 0; i < N; i++) //Цикл в цикле, бегинэнд не пропусти
{
for (int j = 0; j < N; j++)
{
//Если поле Sex в структуре Person[i] равно "Мужчина" И поле Sex в структуре Person[j] равно "Мужчина" И
// Поле sex в структуре MWinner не равно "женщина"
if ((Person[i].Sex == "Male") && (Person[j].Sex == "Male") && (MWinner.Sex != "Female"))
{
if (Person[i].Class == MWinner.Class) //Думаюпоймешь
{
if (Person[i].Age < MWinner.Age)
{
MWinner.Name = Person[i].Name;
MWinner.Class = Person[i].Class;
MWinner.Age = Person[i].Age;
}
}
else if (Person[i].Class < MWinner.Class) //Думаюпоймешь
{
MWinner.Name = Person[i].Name;
MWinner.Class = Person[i].Class;
MWinner.Age = Person[i].Age;
}
}
else if (Person[j].Sex == FWinner.Sex) //Думаюпоймешь
{
if (Person[j].Class == FWinner.Class)
{
if (Person[j].Age < FWinner.Age)
{
FWinner.Name = Person[j].Name;
FWinner.Class = Person[j].Class;
FWinner.Age = Person[j].Age;
}
}
else if (Person[j].Class < FWinner.Class) //Думаюпоймешь
{
FWinner.Name = Person[j].Name;
FWinner.Class = Person[j].Class;
FWinner.Age = Person[j].Age;
}
}
}
}
//Вывод MWinner.Name - Имя структуры мальчика победителя и так же для FWinner -Девочка
cout << '\n' << "Winner Male: " << MWinner.Name << '\n' << '\n' << "Winner Female: " << FWinner.Name << '\n';
_getch(); //Забей
return 0; //Забей
} //END.