0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 37
1

Дерево структур "семья" - Найти и вывести имя младшего ребенка у Иванова И. И

17.07.2014, 19:03. Показов 1375. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Помогите, пожалуйста. У меня возникли проблемы. Вот задание:
Описать массив записей "семья".
--------------------------------------------------------------
Отец ! Мать ! Ребенок ! ! Ребенок!
--------------------------------------- -----------
Ф.И.О.!дата !Ф.И.О.!дата ! Имя !дата ! ...... ! Имя !дата !
!рожд.! !рожд.! !рожд.! ! !рожд.!
---------------------------------------------------------------
!__________________ ________________!
не более 5 детей

Найти и вывести имя младшего ребенка у Иванова И.И. по форме
_______________________________
имя ребенка ! дата рождения !
-------------------------------
Программа должна вывести массив записей в виде дерева структур.
Я практически сделал, но у меня выходят ошибки (описание ошибок в скриншоте). Может, я что-то не так сделал? Заранее спасибо. Среда c++ visual studio 2010. Компилятор консольный CLR.
 Комментарий модератора 
Тексты должны быть вставлены в сообщение!!!

C++
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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
// laba 12-1.cpp: главный файл проекта.
#include "stdafx.h"
#include "iostream"
#include "conio.h"
 
using namespace std;
 
struct Date         
{
    unsigned day;       
    unsigned month;     
    unsigned year;
};
 
struct Children
{
    char name_of_child[30];
    Date d_birth_child;
};
 
struct T_family 
{
    char fio_father[30];
    Date d_birth_father;
    char fio_mother[30];
    Date d_birth_mother;
    Children ch[5];
    int k;
 
}; 
 
struct TreeNode
{
    int k;
    T_family family;
    Children ch[5];
    TreeNode *next;
    TreeNode *child;
};
 
class date_of_birth
{
private:
    TreeNode *head;
public:
date_of_birth()
    {
        head = new TreeNode;
        TreeNode *node1 = new TreeNode;
        node1->k = 1;
        node1->child = NULL;
        node1->next = NULL;
        head->child = node1;
        TreeNode *node2 = new TreeNode;
        node2->k = 2;
        node2->child = NULL;
        node2->next = NULL;
        node1->next = node2;
        TreeNode *node3 = new TreeNode;
        node3->k = 3;
        node3->child = NULL;
        node3->next = NULL;
        node2->next = node3;
        T_family a = {"Ivanov I. I.", 21,5,1965,"Ivanova E.G.",13,2,1967,"Oleg",19,7,1994,"Olga",13,8,1996};
        TreeNode *nodeA = new TreeNode;
        nodeA->family = a;
        nodeA->child = NULL;
        nodeA->next = NULL;
        node1->child = nodeA;
        T_family b = {"Petrov P. P.", 12,4,1962,"Petrova E.O.",8,12,1965,"Pavel",12,4,1988,"Ekaterina",24,8,1992};
        TreeNode *nodeB = new TreeNode;
        nodeB->family = b;
        nodeB->child = NULL;
        nodeB->next = NULL;
        node2->child = nodeB;
}
 
void add_node(int i)
    {
    int count;      
    T_family a; 
    char c;
    cout << endl << " Enter data of" << i+1 << "person\n ";
    cout << " fio of father ";
    cin.getline (a.fio_father, 30);
    cout << "Enter date of father's birthday: \n";
    cout << " day (1-31) ";
    cin >> a.d_birth_father.day;
    cin.get(c);
    cout << " month (1-12)";
    cin >> a.d_birth_father.month;
    cin.get(c);
    cout << " year ";
    cin >> a.d_birth_father.year;
    cin.get(c);
    cout << " fio of mother ";
    cin.getline (a.fio_mother, 30);
    cout << endl <<"Enter date of mother's birthday: \n";
    cout <<" day (1-31) ";
    cin >> a.d_birth_mother.day;
    cin.get(c);
    cout << " month (1-12)";
    cin >> a.d_birth_mother.month;
    cin.get(c);
    cout << " year ";
    cin >> a.d_birth_mother.year;
    cin.get(c);
    //запросить кол-во детей и запомнить в count
    cout << "Enter count of children" << endl;
    cin >> count;
    cin.get(c);
    if ((count > 5) && (count < 0)) cout << " Fatal error " << endl;
    a.k = count;
    for (int k=0; k < count; k++) {
        cout << endl << " Name of " " " << k+1 << " " " child ";
        cin.getline (a.ch[k].name_of_child, 30);
        cout << endl << "Enter date of" " "<< k+1 << " " "child's birthday: \n";
        cout <<" day (1-31) ";
        cin >> a.ch[k].d_birth_child.day;
        cin.get(c);
        cout << " month (1-12)";
        cin >> a.ch[k].d_birth_child.month;
        cin.get(c);
        cout << " year ";
        cin >> a.ch[k].d_birth_child.year;
        cin.get(c); 
    }
 
        TreeNode *node = head->child;
        while(true)
        {
            if(node->k == a.k)
            {
                TreeNode *newNode = new TreeNode;
                newNode->family = a;
                newNode->child = NULL;
                newNode->next = NULL;
                if(node->child == NULL)
                    node->child = newNode;
                else    
                {
                    TreeNode *elem = node->child;
                    while(elem->next != NULL)
                        elem = elem->next;
                    elem->next = newNode;
                }
                return;
            }
            if(node->next == NULL)
                break;
            node = node->next;
        }
 
        TreeNode *newNode = new TreeNode;
        newNode->k = a.k;
        newNode->child = NULL;
        newNode->next = NULL;
        node->next = newNode;
        TreeNode *nodeA = new TreeNode;
        nodeA->family = a;
        nodeA->child = NULL;
        nodeA->next = NULL;
        newNode->child = nodeA;
    }
 
void print_tree()
    {
        printf("[ \n");
        TreeNode *node = head->child;
        while(node != NULL)
        {
            cout << " --> " << node->k << endl;
            if(node->child != NULL)
            {
                TreeNode *child = node->child;
                while(child != NULL)
                {
                printf("! %10s ! %2d.%2d.%4d !",child->family.fio_father, child->family.d_birth_father.day, child->family.d_birth_father.month, child->family.d_birth_father.year);
                printf("! %10s ! %2d.%2d.%4d !",child->family.fio_mother, child->family.d_birth_mother.day, child->family.d_birth_father.month, child->family.d_birth_father.year);
                for (int k = 0; k < child->family.k ; k++) {
                printf("! %10s ! %2d.%2d.%4d!", child->family.ch[k].name_of_child, child->family.ch[k].d_birth_child.day, child->family.ch[k].d_birth_child.month, child->family.ch[k].d_birth_child.year);
                printf("\n");
    }
                    child = child->next;
                }
            }
            node = node->next;
        }
        printf("]\n");
    }
 
void find_min()
    {
        TreeNode *node = head->child;
        TreeNode *young = node->child;
        while(node != NULL)
        {
            if(node->k < young->k && node->child != NULL)
                young = node->child;
            node = node->next;
        }
printf("!  %10s  ! %2d.%2d.%4d !\n", young->family.ch[k_min].name_of_child, young->family.ch[k_min].d_birth_child.day, young->family.ch[k_min].d_birth_child.month, young->family.ch[k_min].d_birth_child.year);
    }
};
 
int main()
{
    date_of_birth d;
    for(int i = 2; i < 4; i++)
    {   
        d.add_node(int i);
    };
    cout << "\nlist of structs\n!       father        !       mother        !        child        !\n";
    d.print_tree();
    d.find_min();
    _getch();
    return 0;
}
Миниатюры
Дерево структур "семья" - Найти и вывести имя младшего ребенка у Иванова И. И  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.07.2014, 19:03
Ответы с готовыми решениями:

Вывести три целых числа возраст младшего ребенка, среднего и старшего
Есть три ребенка, их возраст - целые неотрицательные числа от 1 до 1000000 включительно. Они нам...

Составить описание класса ребенок (Child), в котором задается имя ребенка, имена родителей, дата рождения ребенка
Добрый день. Очень нужна помощь по Объектно-ориентированному программированию! Вот собственно сама...

Массив структур: найти самого младшего и самого старшего школьника
Кароч , я хз как работать со структурами, помогите плиз, желательно со объяснением. Заранее...

Массив структур: вывести самое популярное мужское имя
При запуске программы после заполнения массива данными необходимо вывести в файле и на консоли...

15
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
17.07.2014, 19:14 2
Так вроде по русски написано:
В 202 строке забыли объявить переменную k_min
В 211 строке в функции add_node забыли параметры.
0
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 37
17.07.2014, 19:27  [ТС] 3
Вот мне это и непонятно. Может быть, я вывод младшего ребенка у Иванова И.И. неправильно сделал, и переменная k_min вовсе не нужна. Насчет второго замечания тоже непонятка. Вроде не забыл параметры.
Код
78 void add_node(int i)
211 d.add_node(int i)
Параметры совпали вроде. Мне не понятно, в чем конкретно ошибка?
0
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
17.07.2014, 19:32 4
2. Здесь вызов, а не объявление!
C++
1
2
3
4
for(int i = 2; i < 4; i++)
    {   
        d.add_node(i);
    }
1
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 37
17.07.2014, 19:36  [ТС] 5
Спасибо. Осталось ликвидировать ошибки в 202 строке. Я не знаю, чем заменить эту строку, ведь k_min, как оказалось, не нужна. Может быть, неправильно выполнен поиск младшего ребенка?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
 void find_min()
    {
        TreeNode *node = head->child;
        TreeNode *young = node->child;
        while(node != NULL)
        {
            if(node->k < young->k && node->child != NULL)
                young = node->child;
            node = node->next;
        }
printf("!  %10s  ! %2d.%2d.%4d !\n", young->family.ch[k_min].name_of_child, young->family.ch[k_min].d_birth_child.day, young->family.ch[k_min].d_birth_child.month, young->family.ch[k_min].d_birth_child.year);
    }
};
Заранее благодарю.
0
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
17.07.2014, 19:39 6
printf("! %10s ! %2d.%2d.%4d !\n", young->family.ch[k_min].name_of_child, young->family.ch[k_min].d_birth_child.day, young->family.ch[k_min].d_birth_child.month, young->family.ch[k_min].d_birth_child.year);
ch - у Вас массив детей - до 5 шт. Определитесь, какого именно ребенка (k-min) хотели вывести.
0
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 37
17.07.2014, 19:43  [ТС] 7
Того ребенка, который родился позже всех. Как я говорил, k_min может быть и не нужна. Чем заменить эту переменную, если есть чем?
0
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
17.07.2014, 22:12 8
Цитата Сообщение от TLandertinger Посмотреть сообщение
Чем заменить эту переменную
Номером того ребенка, который родился позже всех
0
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 37
18.07.2014, 13:12  [ТС] 9
Если убрать k_min, то появляются такие ошибки:
Код
 1>------ Построение начато: проект: laba 12-1, Конфигурация: Debug Win32 ------
1>  laba 12-1.cpp
1>laba 12-1.cpp(202): error C2228: выражение слева от ".name_of_child" должно представлять класс, структуру или объединение
1>          тип: Children [5]
1>laba 12-1.cpp(202): error C2228: выражение слева от ".d_birth_child" должно представлять класс, структуру или объединение
1>          тип: Children [5]
1>laba 12-1.cpp(202): error C2228: выражение слева от ".day" должно представлять класс, структуру или объединение
1>laba 12-1.cpp(202): error C2228: выражение слева от ".d_birth_child" должно представлять класс, структуру или объединение
1>          тип: Children [5]
1>laba 12-1.cpp(202): error C2228: выражение слева от ".month" должно представлять класс, структуру или объединение
1>laba 12-1.cpp(202): error C2228: выражение слева от ".d_birth_child" должно представлять класс, структуру или объединение
1>          тип: Children [5]
1>laba 12-1.cpp(202): error C2228: выражение слева от ".year" должно представлять класс, структуру или объединение
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
, а если оставить переменную, то выходят те ошибки, которые описаны в скриншоте (за исключением последних 3, т.к. я исправил их с вашей помощью). Чем заменить строку?
0
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
18.07.2014, 13:37 10
k_min нельзя убрать. Надо ее объявить и присвоить значение равное номеру самого молодого ребенка
(т.е. того, у которого самое большое значение d_birth_child).
0
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 37
18.07.2014, 13:46  [ТС] 11
Теперь пишет:
Код
 1>------ Построение начато: проект: laba 12-1, Конфигурация: Debug Win32 ------
1>  laba 12-1.cpp
1>laba 12-1.cpp(202): error C2065: k: необъявленный идентификатор
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Вот фрагмент кода:
Код
 void find_min()
	{
		int k_min = 0;
		TreeNode *node = head->child;
		TreeNode *young = node->child;
		while(node != NULL)
		{
			if(node-> k < young-> k && node->child != NULL)
				young = node->child;
			node = node->next;
			k_min = k;
		}
Может, где-нибудь я накосячил?
0
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
18.07.2014, 13:59 12
node->k
надо писать node-> слитно с k
0
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 37
18.07.2014, 14:04  [ТС] 13
Это сути не меняет: тот же необъявленный идентификатор k, хотя я объявлял его в структуре T_family
C++
1
2
3
4
5
6
7
8
9
struct T_family 
{
    char fio_father[30];
    Date d_birth_father;
    char fio_mother[30];
    Date d_birth_mother;
    Children ch[5];
    int k;
};
и в структуре TreeNode
C++
1
2
3
4
5
6
7
8
struct TreeNode
{
    int k;
    T_family family;
    Children ch[5];
    TreeNode *next;
    TreeNode *child;
};
0
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
18.07.2014, 14:05 14
В обоих случаях исправили?
Кстати
C++
1
2
3
4
if(node->k < young->k && node->child != NULL)
                young = node->child;
            node = node->next;
            k_min = young->k;// здесь было потеряно young->
1
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 37
18.07.2014, 14:23  [ТС] 15
У меня не вывелось имя младшего ребенка и дерево не очень правильно составлено (-->1 -- 1 семья, -->2 -- 2 семья, и т.д., хотя структура правильная), вдобавок необработанное исключение появилось. Может быть, я неправильно конструктор составил?
C++
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
date_of_birth()
    {
        head = new TreeNode;
        TreeNode *node1 = new TreeNode;
        node1->k = 1;
        node1->child = NULL;
        node1->next = NULL;
        head->child = node1;
        TreeNode *node2 = new TreeNode;
        node2->k = 2;
        node2->child = NULL;
        node2->next = NULL;
        node1->next = node2;
        TreeNode *node3 = new TreeNode;
        node3->k = 3;
        node3->child = NULL;
        node3->next = NULL;
        node2->next = node3;
        T_family a = {"Ivanov I. I.", 21,5,1965,"Ivanova E.G.",13,2,1967,{"Oleg",19,7,1994,"Olga",13,8,1996},2};
        TreeNode *nodeA = new TreeNode;
        nodeA->family = a;
        nodeA->child = NULL;
        nodeA->next = NULL;
        node1->child = nodeA;
        T_family b = {"Petrov P. P.", 12,4,1962,"Petrova E.O.",8,12,1965,{"Pavel",12,4,1988,"Ekaterina",24,8,1992},2};
        TreeNode *nodeB = new TreeNode;
        nodeB->family = b;
        nodeB->child = NULL;
        nodeB->next = NULL;
        node2->child = nodeB;
}
Миниатюры
Дерево структур "семья" - Найти и вывести имя младшего ребенка у Иванова И. И   Дерево структур "семья" - Найти и вывести имя младшего ребенка у Иванова И. И  
0
0 / 0 / 0
Регистрация: 31.10.2015
Сообщений: 1
08.06.2016, 17:23 16
C++
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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
// lab10_1.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <stdlib.h>
 
using namespace std;
 
struct Data //структура даты рождения
{
    unsigned day; //день рождения
    unsigned month;//месяц рождения
    unsigned year;//год рождения
};
struct anketa
{
    char lastname[20];
    char firstname[20];
    char otchestvo[20];
};
 
struct chel //структура данных человека
{
    anketa fio;//ФИО человека
    Data b_date;//дата рождения человека
 
};
 
struct T_family //структура данных семьи
{
    chel otetc; //данные отца
    chel mat; //данные матери
    int k;//количество детей
    chel deti[5];//массив данных из детей(5 максимум)
};
 
T_family in_family(short);//прототип функции добавления семьи
void show_family(T_family);//прототип функции добавления семьи
 
int main()
{
    SetConsoleOutputCP(1251);//корректные ввод-вывод 
    SetConsoleCP(1251);//кириллицы в консоль
    
    cout << "Программа описывает массив записей 'семья'." << endl;
 
    unsigned min_birth = 3000; //год рождения ребенка для поиска минимального
    int k_min = 0;
    T_family *p;
    T_family list[300] = {
        "Аронов", "Иван", "Германович", 07, 03, 1987,
        "Аронова", "Юлия", "Александровна", 05, 12, 1987,
        2,
        "", "Сергей", "", 01, 01, 2019, "", "Андрей", "", 02, 02, 2018
    };//массив семья с одной уже введенной вручную
    p = list + 1;
    short size = 1;//счетчик (количество введенных семей)
 
    //Добавим семью Иванова И.И. с тремя детьми
    strncpy_s(p->otetc.fio.lastname, "Иванов", 20);//_s потому что так безопасней сказал VS
    strncpy_s(p->otetc.fio.firstname, "И.", 20);
    strncpy_s(p->otetc.fio.otchestvo, "И.", 20);
    p->otetc.b_date.day = 02;           // через переменную-указатель
    p->otetc.b_date.month = 02;
    p->otetc.b_date.year = 1980;
    strncpy_s(p->mat.fio.lastname, "Иванова", 20);//
    strncpy_s(p->mat.fio.firstname, "А.", 20);//
    strncpy_s(p->mat.fio.otchestvo, "А.", 20);
    p->mat.b_date.day = 03;             
    p->mat.b_date.month = 03;
    p->mat.b_date.year = 1982;
    p->k = 3;
    strncpy_s(p->deti[0].fio.firstname, "Алексей", 20);
    p->deti[0].b_date.day = 01;
    p->deti[0].b_date.month = 02;
    p->deti[0].b_date.year = 2005;
    strncpy_s(p->deti[1].fio.firstname, "Борис", 20);
    p->deti[1].b_date.day = 01;
    p->deti[1].b_date.month = 02;
    p->deti[1].b_date.year = 2002;
    strncpy_s(p->deti[2].fio.firstname, "Владимир", 20);
    p->deti[2].b_date.day = 01;
    p->deti[2].b_date.month = 02;
    p->deti[2].b_date.year = 2004;
 
    size++;
    short sem = 5;//количество семей которые будут введены
    for (short i = size; i < sem; i++) // до 5
    {
        list[i] = in_family(i);//вводим данные семьи
        size++;//увеличиваем счетчик
    }
    for (int i = 0; i < size; i++)//цикл по всем введенным семьям
    {
        show_family(list[i]);//вызываем функцию вывода на экран всех семей
        printf_s("\n");
        char s2[20] = "Иванов";//интересующий нас человек
        int k;//переменная для перебора детей
        if (strcmp(list[i].otetc.fio.lastname, s2) == 0)//если совпали строки с фамилиями
        {
            
            for (k = 0; k < list[i].k; k++) //перебираем детей
            {
                if (list[i].deti[k].b_date.year < min_birth)//если год рождения ребенка меньше
                {
                    //по идеи еще проверить бы месяц и день рождения
                    min_birth = list[i].deti[k].b_date.year;//запоминаем его
                    k_min = k;//и присваевыем его индекс k_min
                }
            }
            printf_s("У отца %s %s %s %d детей, а младший ребенок:\n", list[i].otetc.fio.lastname, list[i].otetc.fio.firstname, list[i].otetc.fio.otchestvo, list[i].k);
            printf_s("Имя ребенка !Дата рождения\n");
            printf_s("%11s ! %d.%d.%d\n", list[i].deti[k_min].fio.firstname, list[i].deti[k_min].b_date.day, list[i].deti[k_min].b_date.month, list[i].deti[k_min].b_date.year);
        }
    }
    _getch();
    return 0;
}
 
T_family in_family(short i)//функция добавления семьи
{
    T_family f;//инициализируем новый экземпляр f структуры семья
    int count;//счетчик (количество детей)
    char c;//служебная переменная
    cout << endl << "Введите данные " << i + 1 << " семьи\n ";
    cout << "Введите фамилию отца: ";
    cin.getline(f.otetc.fio.lastname, 20);
    cout << "Введите имя отца: ";
    cin.getline(f.otetc.fio.firstname, 20);
    cout << "Введите отчество отца: ";
    cin.getline(f.otetc.fio.otchestvo, 20);
    cout << "Введите день рождения отца (1-31): ";
    cin >> f.otetc.b_date.day;
    //нужна проверка что ввели именно число и запрашивать от пользователя ввести его, пока не введет
    cin.get(c);//очищаем буфер от символа ввода, который добавился в буфер при нажатии клавиши ENTER
    cout << "Введите месяц рождения отца (1-12): ";
    cin >> f.otetc.b_date.month;
    cin.get(c);
    cout << "Введите год рождения отца: ";
    cin >> f.otetc.b_date.year;
    cin.get(c);
    cout << "Введите фамилию матери: ";
    cin.getline(f.mat.fio.lastname, 20);
    cout << "Введите имя матери: ";
    cin.getline(f.mat.fio.firstname, 20);
    cout << "Введите отчество матери: ";
    cin.getline(f.mat.fio.otchestvo, 20);
    cout << "Введите день рождения матери (1-31): ";
    cin >> f.mat.b_date.day;
    cin.get(c);
    cout << "Введите месяц рождения матери(1-12): ";
    cin >> f.mat.b_date.month;
    cin.get(c);
    cout << "Введите год рождения матери: ";
    cin >> f.mat.b_date.year;
    cin.get(c);
    //запросить кол-во детей и запомнить в count
    cout << "Введите количество детей" << endl;
    cin >> count;
    cin.get(c);
    if ((count > 5) && (count < 0))
    {
        cout << "Не верно введено количество детей " << endl;
    }
    f.k = count;
    for (int k = 0; k < count; k++)
    {
        cout << endl << "Введите имя " << k + 1 << " ребенка: ";
        cin.getline(f.deti[k].fio.firstname, 20);
        cout << endl << "Введите дату рождения " << k + 1 << " ребенка: \n";
        cout << "день (1-31): ";
        cin >> f.deti[k].b_date.day;
        cin.get(c);
        cout << "месяц (1-12): ";
        cin >> f.deti[k].b_date.month;
        cin.get(c);
        cout << "год: ";
        cin >> f.deti[k].b_date.year;
        cin.get(c);
    }
 
    return f;
 
};
void show_family(T_family f)
{
    //printf_s("                  Семья с %d детьми\n", f.k);
    printf_s("           Отец            !            Мать              !");
    for (int k = 0; k < f.k; k++)
    {
        printf_s("        Ребенок       !");
    }
    printf_s("\n");
    printf_s("         Ф.И.О.! дата рожд.!            Ф.И.О.! дата рожд.!");
    for (int k = 0; k < f.k; k++)
    {
        printf_s("        Имя!дата рожд.!");
    }
    printf_s("\n");
    printf_s("%14s !%2d.%2d.%4d !%15s   !%2d.%2d.%4d !\n", f.otetc.fio.lastname, f.otetc.b_date.day, f.otetc.b_date.month, f.otetc.b_date.year, f.mat.fio.lastname, f.mat.b_date.day, f.mat.b_date.month, f.mat.b_date.year);
    printf_s("%14s !           !%15s   !           !\n", f.otetc.fio.firstname, f.mat.fio.firstname);
    printf_s("%14s !           !%15s   !           !", f.otetc.fio.otchestvo, f.mat.fio.otchestvo);
    for (int k = 0; k < f.k; k++)
    {
        printf_s("%10s !%2d.%2d.%4d!", f.deti[k].fio.firstname, f.deti[k].b_date.day, f.deti[k].b_date.month, f.deti[k].b_date.year);
    }
    printf_s("\n");
};
0
08.06.2016, 17:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.06.2016, 17:23
Помогаю со студенческими работами здесь

Найти целую часть и вывести значение младшего бита целой части числа a
Дано действительное число x (x&lt;10) и генерируемого случайное действительное число y (y&lt;10). Найти...

Вывести людей с фамилией Иванов и Иванова
Вот программа var s:arrayof string; s1,s2:string; i,n:integer; begin write('vvedite kolichestvo...

Массив структур: вывести три элемента Имя Фамилия Возраст (со значениями)
Не пойму, в чем ошибка. masm model small .stack 100h worker struc ...

Данные из массива структур Date передать в бинарное дерево поиска и вывести его при помощи обратного обхода
Доброго времени суток! Задание:Данные из массива структур Date передать в бинарное дерево поиска и...

Найти самое популярное мужское имя (без структур)
Входной файл сохраняет Следующий информацию о студентах: &lt;Фамилия&gt;, &lt;имя &quot;,&quot; отчество &quot;,&quot; год...

Массив структур метит информацию о 17 людях: фамилия; имя; пол; рост; вес. Прочитать данные из файла и вывести на экран
Массив структур метит информацию о 17 людях: фамилия; имя; пол; рост; вес. Прочитать данные из...

Массив структур метит информацию о 17 людях: фамилия; имя; пол; рост; вес. Прочитать данные из файла и вывести на экран
Массив структур метит информацию о 17 людях: фамилия; имя; пол; рост; вес. Прочитать данные из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru