Лабораторная работа: 9.
Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
Файл: Lab09_YaP_2019_1S.pdf
Обратите внимание:
В файлах Source.cpp, Source.cs и *.pas помимо прочего, так же имеются примечания к программам с различными комментариями и пояснениями.
При оформлении программ в сети Интернет я их удаляю, чтобы не нагромождать эти программы и тем самым не затруднять их восприятие.
Язык: C++.
Среда: Microsoft Visual Studio 2019 v16.3.0.
Платформа: x64.
Задание:
Описать структуру "время" (часы, минуты, секунды). Определить функцию "раньше" для проверки, предшествует ли время T1 времени T2 (в рамках суток).
Все функции, используемые в программах, должны иметь независимый интерфейс. Стандартные функции работы со стеком и очередью не использовать. Все функции, используемые в проекте должны содержаться в отдельном модуле.
Примечание:
Я сделал программу более функциональной: пользователю предоставлен выбор - вводить время самостоятельно или указать текущее время компьютера (так называемое локальное время системы).
ЛР № 9, задание № 5.1
1/8. Source.cpp:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.1. Структуры.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 03.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. Описать структуру "время" (часы, минуты, секунды). Определить функцию "раньше" для проверки, предшествует ли время T1
* времени T2 (в рамках суток).
*Все функции, используемые в программах, должны иметь независимый интерфейс. Стандартные функции работы со стеком и очередью не
* использовать. Все функции, используемые в проекте должны содержаться в отдельном модуле.
*/
#include <iostream> // Требуется для SETLOCATE, PRINTF, CIN, COUT. //
#include "Header.h"
int main () {
setlocale (LC_ALL, "Russian");
int Choice = 0;
TimeStruct *T1Struct = new TimeStruct; // Объявление T1STRUCT типа TIMESTRUCT. //
TimeStruct *T2Struct = new TimeStruct; // Объявление T2STRUCT типа TIMESTRUCT. //
void (*PointerOnFunction []) (TimeStruct*) = {T1UserFunction, T1AutoFunction, T2UserFunction, T2AutoFunction};
printf ("1. Каким способом вы хотите ввести время T1?\n\n1) Самостоятельно..........................1\n2) Локальное время системы..."
"..............2\n\nВаш выбор: ");
cin >> Choice;
if ((Choice < 1) || (Choice > 2)) {
MessageFunction ();
}
(*PointerOnFunction [Choice - 1]) (T1Struct);
printf ("\n\n2. Каким способом вы хотите ввести время T2?\n\n1) Самостоятельно..........................1\n2) Локальное время систем"
"ы.................2\n\nВаш выбор: ");
cin >> Choice;
if ((Choice < 1) || (Choice > 2)) {
MessageFunction ();
}
(*PointerOnFunction [Choice + 1]) (T2Struct);
printf ("\n\n3. Время T1 времени T2: ");
cout << ComparisonFunction (T1Struct, T2Struct) << endl << endl;
ExitProgramFunction ();
} |
|
2/8. Header.h:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.1. Структуры.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 04.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
using namespace std;
struct AnswerStruct { // Объявление RESULTSTRUCT. //
char Before [8], Now [15], Last [8]; // [0]..[6] = 1..7 (для ввода с клавиатуры), [7] = 8
}; // (для "\0"). //
struct TimeStruct { // Объявление TIMESTRUCT. //
int Hours, Minutes, Seconds;
};
void ExitProgramFunction (); // Объявление EXITPROGRAMFUNCTION.//
string ComparisonFunction (TimeStruct *T1Struct, TimeStruct *T2Struct); // Объявление COMPARISONFUNCTION. //
void T2AutoFunction (TimeStruct *T2Struct); // Объявление T2AUTOFUNCTION. //
void T2UserFunction (TimeStruct *T2Struct); // Объявление T2USERFUNCTION. //
void T1AutoFunction (TimeStruct *T1Struct); // Объявление T2AUTOFUNCTION. //
void T1UserFunction (TimeStruct *T1Struct); // Объявление T1USERFUNCTION. //
void MessageFunction (); // Объявление MESSAGEFUNCTION. // |
|
3/8. T1UserFunction.cpp:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.1. Структуры.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 05.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
#include <iostream> // Требуется для PRINTF, CIN. //
#include "Header.h"
void T1UserFunction (TimeStruct *T1Struct) { // Определение T1USERFUNCTION. //
printf ("\n1) Введите час T1 (от 0 до 23, включительно).......");
cin >> T1Struct->Hours;
if ((T1Struct->Hours < 0) || (T1Struct->Hours > 23)) {
MessageFunction ();
}
printf ("2) Введите минуту T1 (от 0 до 59, включительно)....");
cin >> T1Struct->Minutes;
if ((T1Struct->Minutes < 0) || (T1Struct->Minutes > 59)) {
MessageFunction ();
}
printf ("3) Введите секунду T1 (от 0 до 59, включительно)...");
cin >> T1Struct->Seconds;
if ((T1Struct->Seconds < 0) || (T1Struct->Seconds > 59)) {
MessageFunction ();
}
} |
|
4/8. T1AutoFunction.cpp:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.1. Структуры.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 05.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
#include <iostream> // Требуется для PRINTF. //
#include <windows.h> // Требуется для SYSTEMTIME, GETLOCALTIME. //
#include "Header.h"
void T1AutoFunction (TimeStruct *T1Struct) { // Определение T1AUTOFUNCTION. //
SYSTEMTIME TemporaryStruct; // Объявление TEMPORARYSTRUCT типа SYSTEMTIME. //
GetLocalTime (&TemporaryStruct); // Инициализация TEMPORARYSTRUCT. //
T1Struct->Hours = TemporaryStruct.wHour;
T1Struct->Minutes = TemporaryStruct.wMinute;
T1Struct->Seconds = TemporaryStruct.wSecond;
printf ("\nВремя Т1: %02d:%02d:%02d.\n", T1Struct->Hours, T1Struct->Minutes, T1Struct->Seconds);
} |
|
5/8. T2UserFunction.cpp:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.1. Структуры.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 05.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
#include <iostream> // Требуется для PRINTF, CIN. //
#include "Header.h"
void T2UserFunction (TimeStruct *T2Struct) { // Определение T2USERFUNCTION. //
printf ("\n1) Введите час T2 (от 0 до 23, включительно).......");
cin >> T2Struct->Hours;
if ((T2Struct->Hours < 0) || (T2Struct->Hours > 23)) {
MessageFunction ();
}
printf ("2) Введите минуту T2 (от 0 до 59, включительно)....");
cin >> T2Struct->Minutes;
if ((T2Struct->Minutes < 0) || (T2Struct->Minutes > 59)) {
MessageFunction ();
}
printf ("3) Введите секунду T2 (от 0 до 59, включительно)...");
cin >> T2Struct->Seconds;
if ((T2Struct->Seconds < 0) || (T2Struct->Seconds > 59)) {
MessageFunction ();
}
} |
|
6/8. T2AutoFunction.cpp:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.1. Структуры.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 05.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
#include <iostream> // Требуется для PRINTF. //
#include <windows.h> // Требуется для SYSTEMTIME, GETLOCALTIME. //
#include "Header.h"
void T2AutoFunction (TimeStruct *T2Struct) { // Определение T2AUTOFUNCTION. //
SYSTEMTIME TemporaryStruct; // Объявление TEMPORARYSTRUCT типа SYSTEMTIME. //
GetLocalTime (&TemporaryStruct); // Инициализация TEMPORARYSTRUCT. //
T2Struct->Hours = TemporaryStruct.wHour;
T2Struct->Minutes = TemporaryStruct.wMinute;
T2Struct->Seconds = TemporaryStruct.wSecond;
printf ("\nВремя Т2: %02d:%02d:%02d.\n", T2Struct->Hours, T2Struct->Minutes, T2Struct->Seconds);
} |
|
7/8. ComparisonFunction.cpp:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.1. Структуры.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 05.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
#include <iostream> // Требуется для PRINTF, CIN. //
#include <windows.h> // Требуется для SYSTEMTIME, GETLOCALTIME. //
#include "Header.h"
string ComparisonFunction (TimeStruct *T1Struct, TimeStruct *T2Struct) { // Определение COMPARISONFUNCTION. //
int T1Sum = (T1Struct->Hours * 60 + T1Struct->Minutes) * 60 + T1Struct->Seconds;
int T2Sum = (T2Struct->Hours * 60 + T2Struct->Minutes) * 60 + T2Struct->Seconds;
AnswerStruct TemporaryStruct = {"меньше.", "соответствует.", "больше."}; // Объявление и инициализация TEMPORARYSTRUCT типа
if (T1Sum < T2Sum) { // ANSWERSTRUCT. //
return (TemporaryStruct.Before);
}
if (T1Sum > T2Sum) {
return (TemporaryStruct.Last);
}
else {
return (TemporaryStruct.Now);
}
} |
|
8/8. ExitProgramFunction.cpp:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.1. Структуры.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 05.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
#include <iostream> // Требуется для SYSTEM, EXIT, PRINTF. //
#include "Header.h"
void ExitProgramFunction () { // Определение EXITPROGRAMFUNCTION. //
system ("pause");
exit (true);
}
void MessageFunction () { // Определение MESSAGEFUNCTION. //
printf ("\nОшибка ввода. Программа завершает свою работу.\n\n");
ExitProgramFunction (); // Выводится на экран, если введен отсутствующий ответ. //
} |
|
Язык: C++.
Среда: Microsoft Visual Studio 2019 v16.3.0.
Платформа: x64.
Задание:
1. Создать запись для хранения следующей информации:
1) ФИО студента;
2) Факультет;
3) Курс;
4) Дата рождения;
5) Место рождения.
2. Предусмотреть возможность добавления, изменения и удаление записи и отображения данных на экран. Для хранения данных использовать стек.
3. Получить список студентов, возраст которых меньше среднего.
4. Найти максимальный и минимальный возраст студентов по каждому из встречающихся факультетов. Для группировки данных использовать очередь.
5. Найти количество студентов для каждого из встречающихся мест рождения.
Примечание:
1. ExtremumAllFunction.cpp - дополнительная функция к программе, которая не входит в условия задания. Добавил просто ради разнообразия.
2. QuantityFunction.cpp работает не совсем так, как требуется в условии задания, поскольку считает общее количество студентов по всем факультетам (всему учебному заведению), а не по факультетам. Как сделать по факультетам, я догадаться не смог.
3. Во вложении находится скриншот главного меню программы.
ЛР № 9, задание № 5.3
1/11. Source.cpp:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.3. Динамические структуры данных.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 06.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13.
*1. Создать запись для хранения следующей информации:
*1) ФИО студента;
*2) Факультет;
*3) Курс;
*4) Дата рождения;
*5) Место рождения.
*2. Предусмотреть возможность добавления, изменения и удаление записи и отображения данных на экран. Для хранения данных использовать
* стек.
*3. Получить список студентов, возраст которых меньше среднего.
*4. Найти максимальный и минимальный возраст студентов по каждому из встречающихся факультетов. Для группировки данных использовать
* очередь.
*5. Найти количество студентов для каждого из встречающихся мест рождения.
*/
#include <iostream> // Требуется для SETLOCATE, PRINTF, CIN, COUT. //
#include "Header.h"
int main () {
setlocale (LC_ALL, "Russian");
int Choice = 0;
void (*PointerOnFunction []) (ElementStruct*) = {AddRecordFunction, ChangeRecordFunction, DeleteRecordFunction,
WriteStackFunction, MiddleAgeFunction, ExtremumFacultyFunction, QuantityFunction, ExtremumAllFunction};
ElementStruct *SourceStruct = new ElementStruct; // Объявление SOURCESTRUCT типа ELEMENTSTRUCT. //
SourceStruct->Head = NULL; // Инициализация SOURCESTRUCT (вершины). //
while (Choice != 9) {
printf ("--------------------------------------------------------\n ГЛАВНОЕ МЕНЮ\n------------------------"
"--------------------------------\n1) Добавление записи о студенте........................1\n2) Изменение ПОСЛЕДНЕЙ записи"
" о студенте...............2\n3) Удаление ПОСЛЕДНЕЙ записи о студенте................3\n4) Список студентов в ОБРАТНОМ пор"
"ядке.................4\n5) Список студентов, возраст которых меньше среднего...5\n6) Список старших и младших студентов.."
"................6\n7) Количество студентов................................7\n8) Самый старший и младший студенты........."
"...........8\n9) Выход из программы..................................9\n\nВаш выбор: ");
cin >> Choice;
if ((Choice > 0) && (Choice < 9)) {
(*PointerOnFunction [Choice - 1]) (SourceStruct);
cout << endl;
}
}
DestructorFunction (SourceStruct); // Деструктор SOURCEARRAY. //
cout << endl << endl;
ExitProgramFunction ();
} |
|
2/11. Header.h:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.3. Динамические структуры данных.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 06.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
using namespace std;
struct ElementStruct { // Объявление ELEMENTSTRUCT. //
int CourseOfStudies, Date, Month, Years;
char Name [16], Faculty [16], PlaceOfBirth [16]; // [0]..[15] = 1..16 (для ввода с клавиатуры), [16] = 17
ElementStruct *Head, *Tail; // (для "\0"). //
};
void ExitProgramFunction (); // Объявление EXITPROGRAMFUNCTION. //
void DestructorFunction (ElementStruct *SourceStruct); // Объявление DESTRUCTORFUNCTION. //
void ExtremumAllFunction (ElementStruct *SourceStruct); // Объявление EXTREMUMALLFUNCTION. //
void QuantityFunction (ElementStruct *SourceStruct); // Объявление QUANTITYFUNCTION. //
void ExtremumFacultyFunction (ElementStruct *SourceStruct); // Объявление EXTREMUMFACULTYFUNCTION. //
void MiddleAgeFunction (ElementStruct *SourceStruct); // Объявление MIDDLEAGEFUNCTION. //
void WriteStackFunction (ElementStruct *SourceStruct); // Объявление WRITESTACKFUNCTION. //
void DeleteRecordFunction (ElementStruct *SourceStruct); // Объявление DELETERECORDFUNCTION. //
void ChangeRecordFunction (ElementStruct *SourceStruct); // Объявление CHANGERECORDFUNCTION. //
void AddRecordFunction (ElementStruct *SourceStruct); // Объявление ADDRECORDFUNCTION. // |
|
3/11. AddRecordFunction.cpp:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.3. Динамические структуры данных.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 06.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
#include <iostream> // Требуется для PRINTF, CIN, COUT. //
#include "Header.h"
void AddRecordFunction (ElementStruct *SourceStruct) { // Определение ADDRECORDFUNCTION. //
int Choice = 0;
while (Choice != 2) {
ElementStruct *TemporaryStruct = new ElementStruct; // Объявление TEMPORARYSTRUCT типа ELEMENTSTRUCT. //
printf ("\n\n---------------------------------------------------------------------------------------\n "
" ДОБАВЛЕНИЕ ЗАПИСИ О СТУДЕНТЕ\n--------------------------------------------------------------------------------------"
"- \n");
printf ("1) Введите ФИО студента (до 15 символов включительно, без пробелов).....");
cin >> TemporaryStruct->Name; // GETLINE, GET и READ со STRUCT не работают. Нулевому элементу
printf ("2) Введите факультет (до 15 символов включительно, без пробелов)........");
cin >> TemporaryStruct->Faculty; // присваивается нуль-символ ("\0"). //
printf ("3) Введите курс (от 1 до 5).............................................");
cin >> TemporaryStruct->CourseOfStudies;
if ((TemporaryStruct->CourseOfStudies < 1) || (TemporaryStruct->CourseOfStudies > 5)) {
printf ("\nТакого номера учебного курса в Российской Федерации не существует.\nПовторите ввод данных заново.\n");
break;
}
printf ("4) Введите дату рождения (от 1 до 31)...................................");
cin >> TemporaryStruct->Date;
if ((TemporaryStruct->Date < 1) || (TemporaryStruct->Date > 31)) {
printf ("\nТакого календарного числа не существует.\nПовторите ввод данных заново.\n");
break;
}
printf ("5) Введите месяц рождения (от 1 до 12)..................................");
cin >> TemporaryStruct->Month;
if ((TemporaryStruct->Month < 1) || (TemporaryStruct->Month > 12)) {
printf ("\nТакого календарного месяца не существует.\nПовторите ввод данных заново.\n");
break;
}
printf ("6) Введите год рождения (от 1970 до 2003)...............................");
cin >> TemporaryStruct->Years;
if ((TemporaryStruct->Years < 1970) || (TemporaryStruct->Years > 2003)) {
printf ("\nСтудента с таким возрастом не существует.\nПовторите ввод данных заново.\n");
break;
}
printf ("7) Введите место рождения (до 15 символов включительно, без пробелов)...");
cin >> TemporaryStruct->PlaceOfBirth;
TemporaryStruct->Tail = SourceStruct->Head; // В *TAIL текущего элемента присваивается адрес памяти предыдущего
SourceStruct->Head = TemporaryStruct; // элемента (вершины) (таким образом соблюдается метод LIFO). //
printf ("\nХотите добавить еще одну запись о студенте?\n\n1) Да.....................................1\n2) Нет (выход в меню)..."
"..................2\n\nВаш выбор: "); // В *HEAD присваивается адрес памяти вершины. //
cin >> Choice;
}
cout << endl;
} |
|
4/11. ChangeRecordFunction.cpp:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.3. Динамические структуры данных.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 06.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
#include <iostream> // Требуется для PRINTF, CIN, COUT. //
#include "Header.h"
void ChangePlaceOfBirth (ElementStruct *TemporaryStruct) { // Объявление и определение CHANGEPLACEOFBIRTH. //
printf ("\n\n------------------------------------------------------------------------------------\n ИЗМЕНЕНИЕ МЕСТА Р"
"ОЖДЕНИЯ ПОСЛЕДНИЕЙ ЗАПИСИ О СТУДЕНТЕ\n------------------------------------------------------------------------------------\nВв"
"едите место рождения (до 15 символов включительно, без пробелов)...");
cin >> TemporaryStruct->PlaceOfBirth;
cout << endl;
}
void ChangeDateOfBirth (ElementStruct *TemporaryStruct) { // Объявление и определение CHANGEDATEOFBIRTH. //
printf ("\n\n--------------------------------------------------------\n ИЗМЕНЕНИЕ ДАТЫ РОЖДЕНИЯ ПОСЛЕДНИЕЙ ЗАПИСИ О СТУДЕНТЕ\n-----"
"---------------------------------------------------\n1) Введите дату рождения (от 1 до 31)...............");
cin >> TemporaryStruct->Date;
if ((TemporaryStruct->Date < 1) || (TemporaryStruct->Date > 31)) {
printf ("\nТакого календарного числа не существует.\nПовторите ввод данных заново.\n");
return;
}
printf ("2) Введите месяц рождения (от 1 до 12)..............");
cin >> TemporaryStruct->Month;
if ((TemporaryStruct->Month < 1) || (TemporaryStruct->Month > 12)) {
printf ("\nТакого календарного месяца не существует.\nПовторите ввод данных заново.\n");
return;
}
printf ("3) Введите год рождения (от 1970 до 2003)...........");
cin >> TemporaryStruct->Years;
if ((TemporaryStruct->Years < 1970) || (TemporaryStruct->Years > 2003)) {
printf ("\nСтудента с таким возрастом не существует.\nПовторите ввод данных заново.\n");
return;
}
cout << endl;
}
void ChangeCourseOfStudies (ElementStruct *TemporaryStruct) { // Объявление и определение CHANGECOURCEOFSTUDIES. //
printf ("\n\n--------------------------------------------------------\n ИЗМЕНЕНИЕ КУРСА ПОСЛЕДНИЕЙ ЗАПИСИ О СТУДЕНТЕ\n---------"
"-----------------------------------------------\nВведите курс (от 1 до 5)...............................");
cin >> TemporaryStruct->CourseOfStudies;
if ((TemporaryStruct->CourseOfStudies < 1) || (TemporaryStruct->CourseOfStudies > 5)) {
printf ("\nТакого номера учебного курса в Российской Федерации не существует.\nПовторите ввод данных заново.\n");
return;
}
cout << endl;
}
void ChangeFaculty (ElementStruct *TemporaryStruct) { // Объявление и определение CHANGEFACULTY. //
printf ("\n\n------------------------------------------------------------------------------------\n ИЗМЕНЕНИЕ ФАКУЛ"
"ЬТЕТА ПОСЛЕДНИЕЙ ЗАПИСИ О СТУДЕНТЕ\n------------------------------------------------------------------------------------\nВвед"
"ите факультет (до 15 символов включительно, без пробелов)........");
cin >> TemporaryStruct->Faculty;
cout << endl;
}
void ChangeName (ElementStruct *TemporaryStruct) { // Объявление и определение CHANGENAME. //
printf ("\n\n------------------------------------------------------------------------------------\n ИЗМЕНЕНИЕ ФИ"
"О ПОСЛЕДНИЕЙ ЗАПИСИ О СТУДЕНТЕ\n------------------------------------------------------------------------------------\nВведите "
"ФИО студента (до 15 символов включительно, без пробелов).....");
cin >> TemporaryStruct->Name;
cout << endl;
}
void ChangeRecordFunction (ElementStruct *SourceStruct) { // Определение CHANGERECORDFUNCTION. //
int Choice = 0;
void (*PointerOnFunction []) (ElementStruct*) = {ChangeName, ChangeFaculty, ChangeCourseOfStudies, ChangeDateOfBirth,
ChangePlaceOfBirth};
ElementStruct *TemporaryStruct = SourceStruct->Head; // Объявление и инициализация TEMPORARYSTRUCT. Присваивается адрес
printf ("\n\n--------------------------------------------------------\n ИЗМЕНЕНИЕ ПОСЛЕДНИЕЙ ЗАПИСИ О СТУДЕНТЕ\n------------"
"--------------------------------------------\n"); // памяти вершины. //
if (TemporaryStruct == NULL) {
printf ("Записи о студентах отсутствуют.\n\n");
return;
}
while (Choice != 6) {
printf ("Какую графу вы хотите изменить?\n\n1) ФИО студента........................................1\n2) Название факультета..."
"..............................2\n3) Номер курса.........................................3\n4) Дату рождения.............."
".........................4\n5) Место рождения......................................5\n6) Никакую (выход в меню).........."
"....................6\n\nВаш выбор: ");
cin >> Choice;
if ((Choice > 0) && (Choice < 6)) {
(*PointerOnFunction [Choice - 1]) (TemporaryStruct);
}
}
cout << endl;
} |
|
5/11. DeleteRecordFunction.cpp:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.3. Динамические структуры данных.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 06.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
#include <iostream> // Требуется для PRINTF, COUT. //
#include "Header.h"
void DeleteRecordFunction (ElementStruct *SourceStruct) { // Определение DELETERECORDFUNCTION. //
int Choice = 0, Counter = 1;
if (SourceStruct->Head == NULL) {
printf ("\n\n----------------------------------------------------------------------------------\n УДАЛЕН"
"ИЕ ПОСЛЕДНЕЙ ЗАПИСИ О СТУДЕНТЕ\n----------------------------------------------------------------------------------\nНОМЕР"
" | ФИО | ФАКУЛЬТЕТ | КУРС | ДАТА РОЖДЕНИЯ | МЕСТО РОЖДЕНИЯ \n------------------------------------------"
"----------------------------------------\n");
printf ("Записи о студентах отсутствуют.\n\n");
return;
}
do {
if (SourceStruct->Head == NULL) {
printf ("Записи о студентах отсутствуют.\n\n");
break;
}
ElementStruct *TemporaryStruct = SourceStruct->Head; // Объявление и инициализация TEMPORARYSTRUCT. //
ElementStruct *DeleteStruct = SourceStruct->Head->Tail; // Объявление и инициализация DELETESTRUCT. Присваиваются
printf ("\n\n----------------------------------------------------------------------------------\n УДАЛЕН"
"Е ПОСЛЕДНЕЙ ЗАПИСИ О СТУДЕНТЕ\n----------------------------------------------------------------------------------\nНОМЕР "
"| ФИО | ФАКУЛЬТЕТ | КУРС | ДАТА РОЖДЕНИЯ | МЕСТО РОЖДЕНИЯ \n-------------------------------------------"
"---------------------------------------\n");
printf ("%5d | %-15s | %-15s | %4d | %02d.%02d.%04d | %-15s\n", Counter++, TemporaryStruct->Name, TemporaryStruct->Faculty,
TemporaryStruct->CourseOfStudies, TemporaryStruct->Date, TemporaryStruct->Month, TemporaryStruct->Years,
TemporaryStruct->PlaceOfBirth); // адреса памяти вершины и предпоследнего элементов. //
TemporaryStruct = TemporaryStruct->Tail;
delete SourceStruct->Head; // Удаляется адрес памяти вершины. //
SourceStruct->Head = DeleteStruct; // В HEAD присваивается адрес памяти предпоследнего элемента
printf ("\nПоследняя запись о студенте удалена.\n\nХотите удалить еще одну запись о студенте?\n\n1) Да........................."
"...........1\n2) Нет (выход в меню)....................2\n\nВаш выбор: ");
cin >> Choice; // (TAIL). //
} while (Choice != 2);
cout << endl;
} |
|
6/11. WriteStackFunction.cpp:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.3. Динамические структуры данных.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 06.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
#include <iostream> // Требуется для PRINTF, COUT. //
#include "Header.h"
void WriteStackFunction (ElementStruct *SourceStruct) { // Объявление и определение WRITESTACKFUNCTION. //
int Counter = 1;
ElementStruct *TemporaryStruct = SourceStruct->Head; // Объявление и инициализация TEMPORARYSTRUCT. Присваивается адрес
printf ("\n\n----------------------------------------------------------------------------------\n СПИСОК СТУД"
"ЕНТОВ В ОБРАТНОМ ПОРЯДКЕ\n----------------------------------------------------------------------------------\nНОМЕР | ФИ"
"О | ФАКУЛЬТЕТ | КУРС | ДАТА РОЖДЕНИЯ | МЕСТО РОЖДЕНИЯ \n----------------------------------------------------------"
"------------------------\n"); // памяти последнего элемента. //
if (TemporaryStruct == NULL) {
printf ("Записи о студентах отсутствуют.\n");
}
while (TemporaryStruct != NULL) {
printf ("%5d | %-15s | %-15s | %4d | %02d.%02d.%04d | %-15s\n", Counter++, TemporaryStruct->Name, TemporaryStruct->Faculty,
TemporaryStruct->CourseOfStudies, TemporaryStruct->Date, TemporaryStruct->Month, TemporaryStruct->Years,
TemporaryStruct->PlaceOfBirth); // Выводятся на экран все элементы. //
TemporaryStruct = TemporaryStruct->Tail; // Вершине присваивается адрес памяти предыдущего элемента.//
}
cout << endl;
} |
|
7/11. MiddleAgeFunction.cpp
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.3. Динамические структуры данных.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 06.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
#include <iostream> // Требуется для PRINTF. //
#include <windows.h> // Требуется для SYSTEMTIME, GETLOCALTIME. //
#include "Header.h"
void MiddleAgeFunction (ElementStruct *SourceStruct) { // Определение MIDDLEAGEFUNCTION. //
int Counter = 0, Sum = 0, AgeOfStudent = 0; // Дробная часть SUM не имеет знач., поэтому INT. //
ElementStruct *TemporaryStruct = SourceStruct->Head; // Объявление и инициализация TEMPORARYSTRUCT. //
SYSTEMTIME TemporaryTimeStruct; // Объявление TEMPORARYSTRUCT типа SYSTEMTIME. //
GetLocalTime (&TemporaryTimeStruct); // Инициализация TEMPORARYSTRUCT. //
printf ("\n\n----------------------------------------------------------------------------------\n СПИСОК СТУДЕНТОВ, "
"ВОЗРАСТ КОТОРЫХ МЕНЬШЕ СРЕДНЕГО\n----------------------------------------------------------------------------------\nНОМЕР | "
" ФИО | ФАКУЛЬТЕТ | КУРС | ДАТА РОЖДЕНИЯ | МЕСТО РОЖДЕНИЯ \n---------------------------------------------------"
"-------------------------------\n");
while (TemporaryStruct != NULL) {
Sum += (TemporaryTimeStruct.wYear - TemporaryStruct->Years); // Вычисляется сумма лет всех элементов (студентов). //
Counter++; // Вычисляется количество элементов. //
TemporaryStruct = TemporaryStruct->Tail; // Вершине присваивается адрес памяти предыдущего
} // элемента. //
if (Counter < 2) { // Если элементов меньше двух или они вообще отсутствуют,
printf ("Записей о студентах меньше двух.\n\n"); // то сравнивать не с чем.//
return;
}
Sum = Sum / Counter; // Вычисляется средний возраст всех студентов. //
Counter = 1;
TemporaryStruct = SourceStruct->Head; // В *HEAD присваивается адрес памяти вершины. //
while (TemporaryStruct != NULL) {
AgeOfStudent = TemporaryTimeStruct.wYear - TemporaryStruct->Years; // Вычисляется возраст текущего элемента. //
if (AgeOfStudent < Sum) { // Если возраст веришны меньше среднего, то он выводится
printf ("%5d | %-15s | %-15s | %4d | %02d.%02d.%04d | %-15s\n", Counter++, TemporaryStruct->Name,
TemporaryStruct->Faculty, TemporaryStruct->CourseOfStudies, TemporaryStruct->Date, TemporaryStruct->Month,
TemporaryStruct->Years, TemporaryStruct->PlaceOfBirth); // на экран.//
}
TemporaryStruct = TemporaryStruct->Tail; // Вершине присваивается адрес памяти предыдущего
} // элемента. //
printf ("\nСредний возраст студентов: %d лет.\n\n", Sum);
} |
|
8/11. ExtremumFacultyFunction.cpp:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.3. Динамические структуры данных.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 06.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
#include <iostream> // Требуется для PRINTF, COUT. //
#include <queue> // Требуется для PRIORITY_QUEUE. //
#include <string> // Требуется для TO_STRING. //
#include "Header.h"
void ExtremumFacultyFunction (ElementStruct *SourceStruct) { // Определение EXTREMUMFACULTYFUNCTION. //
int Counter = 1;
string FacultyDate = " ";
ElementStruct *TemporaryStruct = SourceStruct->Head; // Объявление и инициализация TEMPORARYSTRUCT. //
priority_queue <string> QueueMetod;
printf ("\n\n--------------------------------------------------------\n СПИСОК СТАРШИХ И МЛАДШИХ СТУДЕНТОВ\n--------------"
"------------------------------------------\nНОМЕР | ФАКУЛЬТЕТ | ГОД РОЖДЕНИЯ\n------------------------------------------"
"--------------\n");
if (TemporaryStruct == NULL) {
printf ("Записи о студентах отсутствуют.\n\n");
return;
}
while (TemporaryStruct != NULL) {
FacultyDate = TemporaryStruct->Faculty + (" | " + to_string (TemporaryStruct->Years));
QueueMetod.push (FacultyDate); // Преобразует FACULTY и YEARS в STRING, причем упорядочивает вначале
TemporaryStruct = TemporaryStruct->Tail; // по FACULTY, а затем внутри него по YEARS. //
}
while (!QueueMetod.empty ()) {
printf ("%5d | ", Counter++);
cout << QueueMetod.top ();
QueueMetod.pop ();
cout << endl;
}
cout << endl;
} |
|
9/11. QuantityFunction.cpp:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.3. Динамические структуры данных.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 06.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
#include <iostream> // Требуется для PRINTF, COUT. //
#include "Header.h"
void QuantityFunction (ElementStruct *SourceStruct) { // Определение QUANTITYFUNCTION. //
int Counter = 0;
ElementStruct *TemporaryStruct = SourceStruct->Head;
printf ("\n\n--------------------------------------------------------\n КОЛИЧЕСТВО СТУДЕНТОВ\n---------------------"
"-----------------------------------\n");
if (TemporaryStruct == NULL) {
printf ("Записи о студентах отсутствуют.\n\n");
return;
}
while (TemporaryStruct != NULL) {
Counter++;
TemporaryStruct = TemporaryStruct->Tail;
}
printf ("Количество студентов: %d.\n", Counter);
cout << endl;
} |
|
10/11. ExtremumAllFunction.cpp:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.3. Динамические структуры данных.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 06.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
#include <iostream> // Требуется для PRINTF, STRCPY_S, COUT. //
#include "Header.h"
void ExtremumAllFunction (ElementStruct *SourceStruct) { // Определение EXTREMUMALLFUNCTION. //
const int Dimension = 2;
ElementStruct *TemporaryStruct = SourceStruct->Head; // Объявление и инициализация TEMPORARYSTRUCT. //
ElementStruct *ArrayStruct = new ElementStruct [Dimension]; // Объявление ARRAYSTRUCT типа ELEMENTSTRUCT. //
printf ("\n\n----------------------------------------------------------------------------------\n САМЫЙ СТАР"
"ШИЙ И МЛАДШИЙ СТУДЕНТЫ\n----------------------------------------------------------------------------------\nНОМЕР | ФИО "
" | ФАКУЛЬТЕТ | КУРС | ДАТА РОЖДЕНИЯ | МЕСТО РОЖДЕНИЯ \n------------------------------------------------------------"
"----------------------\n");
if (TemporaryStruct == NULL) {
printf ("Записи о студентах отсутствуют.\n\n");
return;
}
int MaxSumDate = (TemporaryStruct->Years * 12 + TemporaryStruct->Month) * 30 + TemporaryStruct->Date;
int MinSumDate = (TemporaryStruct->Years * 12 + TemporaryStruct->Month) * 30 + TemporaryStruct->Date;
while (TemporaryStruct != NULL) {
if (((TemporaryStruct->Years * 12 + TemporaryStruct->Month) * 30 + TemporaryStruct->Date) <= MaxSumDate) {
strcpy_s ((*(ArrayStruct + 0)).Name, TemporaryStruct->Name);
strcpy_s ((*(ArrayStruct + 0)).Faculty, TemporaryStruct->Faculty);
(*(ArrayStruct + 0)).CourseOfStudies = TemporaryStruct->CourseOfStudies;
(*(ArrayStruct + 0)).Date = TemporaryStruct->Date;
(*(ArrayStruct + 0)).Month = TemporaryStruct->Month;
(*(ArrayStruct + 0)).Years = TemporaryStruct->Years;
strcpy_s ((*(ArrayStruct + 0)).PlaceOfBirth, TemporaryStruct->PlaceOfBirth);
MaxSumDate = (TemporaryStruct->Years * 12 + TemporaryStruct->Month) * 30 + TemporaryStruct->Date;
}
if (((TemporaryStruct->Years * 12 + TemporaryStruct->Month) * 30 + TemporaryStruct->Date) >= MinSumDate) {
strcpy_s ((*(ArrayStruct + 1)).Name, TemporaryStruct->Name);
strcpy_s ((*(ArrayStruct + 1)).Faculty, TemporaryStruct->Faculty);
(*(ArrayStruct + 1)).CourseOfStudies = TemporaryStruct->CourseOfStudies;
(*(ArrayStruct + 1)).Date = TemporaryStruct->Date;
(*(ArrayStruct + 1)).Month = TemporaryStruct->Month;
(*(ArrayStruct + 1)).Years = TemporaryStruct->Years;
strcpy_s ((*(ArrayStruct + 0)).PlaceOfBirth, TemporaryStruct->PlaceOfBirth);
MinSumDate = (TemporaryStruct->Years * 12 + TemporaryStruct->Month) * 30 + TemporaryStruct->Date;
}
TemporaryStruct = TemporaryStruct->Tail;
}
printf(" СТАРШИЙ СТУДЕНТ\n-------------------------------------------------------------------------"
"---------\n 1 | %-15s | %-15s | %4d | %02d.%02d.%04d | %-15s\n----------------------------------------------------------"
"------------------------\n МЛАДШИЙ СТУДЕНТ\n-------------------------------------------------"
"---------------------------------\n 2 | %-15s | %-15s | %4d | %02d.%02d.%04d | %-15s\n",
(*(ArrayStruct + 0)).Name, (*(ArrayStruct + 0)).Faculty, (*(ArrayStruct + 0)).CourseOfStudies, (*(ArrayStruct + 0)).Date,
(*(ArrayStruct + 0)).Month, (*(ArrayStruct + 0)).Years, (*(ArrayStruct + 0)).PlaceOfBirth, (*(ArrayStruct + 1)).Name,
(*(ArrayStruct + 1)).Faculty, (*(ArrayStruct + 1)).CourseOfStudies, (*(ArrayStruct + 1)).Date, (*(ArrayStruct + 1)).Month,
(*(ArrayStruct + 1)).Years, (*(ArrayStruct + 0)).PlaceOfBirth);
cout << endl;
delete [] ArrayStruct; // Удаление ARRAYSTRUCT. //
} |
|
11/11. ExitProgramFunction.cpp:
| 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
| /*
*Лабораторная работа: 9.
*Тема: Типы данных, определяемые пользователем. Структуры и объединения. Многофайловые проекты.
*Пункт: 5.3. Динамические структуры данных.
*Файл: Lab09_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 06.01.2020.
*
*Вариант: 13.
*Защита: 27.12.2019.
*Задание: 13. (...)
*/
#include <iostream> // Требуется для SYSTEM, EXIT. //
#include "Header.h"
void ExitProgramFunction () { // Определение EXITPROGRAMFUNCTION. //
system ("pause");
exit (true);
}
void DestructorFunction (ElementStruct *SourceStruct) { // Определение DESTRUCTORFUNCTION. //
while (SourceStruct->Head != NULL) {
ElementStruct *TemporaryStruct = SourceStruct->Head->Tail;
delete SourceStruct->Head; // Удаление вершины. //
SourceStruct->Head = TemporaryStruct; // В *HEAD присваевается адрес памяти предыдущего элемента. //
}
delete SourceStruct->Head; // Удаление первого элемента. //
delete SourceStruct; // Удаление SOURCESTRUCT. //
} |
|
|