Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 37
1

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

17.07.2014, 19:03. Показов 1440. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.07.2014, 19:03
Ответы с готовыми решениями:

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

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

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

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

15
Модератор
Эксперт С++
 Аватар для zss
13727 / 10923 / 6480
Регистрация: 18.12.2011
Сообщений: 29,157
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
Модератор
Эксперт С++
 Аватар для zss
13727 / 10923 / 6480
Регистрация: 18.12.2011
Сообщений: 29,157
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
Модератор
Эксперт С++
 Аватар для zss
13727 / 10923 / 6480
Регистрация: 18.12.2011
Сообщений: 29,157
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
Модератор
Эксперт С++
 Аватар для zss
13727 / 10923 / 6480
Регистрация: 18.12.2011
Сообщений: 29,157
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
Модератор
Эксперт С++
 Аватар для zss
13727 / 10923 / 6480
Регистрация: 18.12.2011
Сообщений: 29,157
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
Модератор
Эксперт С++
 Аватар для zss
13727 / 10923 / 6480
Регистрация: 18.12.2011
Сообщений: 29,157
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
Модератор
Эксперт С++
 Аватар для zss
13727 / 10923 / 6480
Регистрация: 18.12.2011
Сообщений: 29,157
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
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
Ответ Создать тему
Новые блоги и статьи
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru