/*
Составить список участников соревнований, указав разряд, возраст, пол. Сделать
прогноз исхода соревнований, учитывая, что будет иметь успех участник, который:
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.