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