/*В банке данных о получении пособий на детей находятся три поля: 1-ое поле: ФИО рабочих 2-ое поле: количество детей 3-е поле: даты рождения (год, месяц, число) детей. Найти сколько пособий на своих детей получает каждый рабочий. (Дети старше 18 лет пособие не получают).*/ #include "stdafx.h" #define N 3 using namespace std; struct idk { string name; string surname; string fth; }; struct Date { int year; int mth; int day; }; //Структура из 3 полей из условия задачи. struct Person { struct idk fio; int ChildAmount; string ChildBrth[5]; }; //Функция заполнения ФИО случайными символами с большой буквы string creator_fio(string str1) { for (int i = 0; i < 6; i++) { int x = rand() % (122 - 97 + 1) + 97; str1[i] = char(x); str1 += str1[i]; str1[0] = char(x - 32); } return str1; }; //Функция создания даты с учетом весокосного года string creator_date(string str1) { Date idk; int year, mth, day; year = (rand() % (2013 - 1990 + 1) + 1990); mth = (1 + rand() % 12); if ((mth == 2) && (year % 4 == 0)) day = (1 + rand() % 28); else if ((mth % 2 == 0) && (mth != 2)) day = (1 + rand() % 30); else day = (1 + rand() % 31); str1 = to_string(idk.year = year) + '.'; str1 += to_string(idk.mth = mth) + '.'; str1 += to_string(idk.day = day); return str1; }; //Перевод даты класса string к типу int и проверка на совершеннолетие относительно заданной даты int calculator(string str1) { int i = 0, date[3], cnt = 0; while ((str1[i] <= '.') && (i < 3)) { //Условие на поиск точки date[i] = atoi(str1.c_str()); i++; } if ((date[0] <= 1996) && (date[1] <= 12) && (date[2] <= 12)) cnt++; return cnt; }; int _tmain() { setlocale(LC_ALL, "Rus"); string str, date; Person a[N]; srand(time(NULL)); //Заполение структуры из функций for (int i = 0; i < N; i++) { int counter = 0; int x = (1 + rand() % 5); //Определение кол-ва детей a[i].fio.name = creator_fio(str); a[i].fio.surname = creator_fio(str); a[i].fio.fth = creator_fio(str); a[i].ChildAmount = x; //Присвоение даты рождения детям из функции и подсчет количества пособий for (int j = 0; j < x; j++) { a[i].ChildBrth[j] += creator_date(date); counter += calculator(a[i].ChildBrth[j]); } cout << "Рабочий "<< a[i].fio.name << " " << a[i].fio.surname << "\tполучает " << counter << " пособие(я);\n"; counter = 0; } _getch(); return 0; }