банке данных получении пособий на детей находятся три поля 1-ое поле Ф

  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
/*В банке данных о получении пособий на детей находятся три поля:
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;
}