27.01.2020, 15:00. Показов 4537. Ответов 0
Решил выложить свои лабораторные работы 1-10 за первый курс, первого семестра (01.09.2019-10.01.2020). Искренне надеюсь, что кому-нибудь пригодится.
Примечания к программе смотрите в исходном файле Source.cpp (архив находится по веб-адресу ниже). Здесь я их удалил, чтобы не нагромождать программу.
Изменение в условии задания:
1. Инициализация массива проводится не пользователем, а методом rand.
1 / 7. 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
| /*
*Лабораторная работа: 8.
*Тема: Указатели и ссылки. Имя массива как указатель. Динамические массивы.
*Пункт: 5.1. Динамические массивы. Имя массива как указатель.
*Файл: Lab08_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 03.01.2020.
*
*Вариант: 13.
*Защита: 29.11.2019.
*Задание: БН. Дан одномерный массив, состоящий из N целочисленных элементов.
*1. Ввести массив с клавиатуры.
*2. Найти максимальный отрицательный элемент.
*3. Вычислить произведение отрицательных элементов массива.
*4. Вывести ненулевые элементы на экран в обратном порядке.
*Написать программу с использованием динамических массивов, вводя размер массива с клавиатуры и используя имя массива как указатель,
* применить адресную арифметику для работы с элементами массива (каждое задание оформить отдельной функцией).
*/
#include <iostream> // Требуется для SETLOCATE, PRINTF, CIN. //
#include "Header.h"
void main () {
setlocale (LC_ALL, "Russian");
int Dimension = 0;
void (*PointerOnFunction []) (int*, int) = {InicializastionArrayFunction, MaxNegativesFunction, MultiplicationFunction,
WriteArrayFunction};
printf ("1. Введите размерность массива: ");
cin >> Dimension;
int *SourceArray = new int [Dimension]; // Объявление SOURCEARRAY. //
printf ("\n2. Элементы массива:\n");
(*PointerOnFunction [0]) (SourceArray, Dimension);
(*PointerOnFunction [1]) (SourceArray, Dimension);
(*PointerOnFunction [2]) (SourceArray, Dimension);
printf ("\n5. Ненулевые элементы в обратном порядке:\n");
(*PointerOnFunction [3]) (SourceArray, Dimension);
delete [] SourceArray; // Деструктор SOURCEARRAY. //
cout << endl << endl;
ExitProgramFunction ();
} |
|
2 / 7. 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
| /*
*Лабораторная работа: 8.
*Тема: Указатели и ссылки. Имя массива как указатель. Динамические массивы.
*Пункт: 5.1. Динамические массивы. Имя массива как указатель.
*Файл: Lab08_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 03.01.2020.
*
*Вариант: 13.
*Защита: 29.11.2019.
*Задание: БН. (...)
*/
using namespace std;
void ExitProgramFunction (); // Объявление EXITPROGRAMFUNCTION. //
void WriteArrayFunction (int *SourceArray, int Dimension); // Объявление WRITEARRAYFUNCTION. //
void MultiplicationFunction (int *SourceArray, int Dimension); // Объявление MULTIPLICATIONFUNCTION. //
void MaxNegativesFunction (int *SourceArray, int Dimension); // Объявление MAXNEGATIVESFUNCTION. //
void InicializastionArrayFunction (int *SourceArray, int Dimension); // Объявление INICIALIZATIONARRAYFUNCTION. // |
|
3 / 7. InicializastionArrayFunction.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
| /*
*Лабораторная работа: 8.
*Тема: Указатели и ссылки. Имя массива как указатель. Динамические массивы.
*Пункт: 5.1. Динамические массивы. Имя массива как указатель.
*Файл: Lab08_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 03.01.2020.
*
*Вариант: 13.
*Защита: 29.11.2019.
*Задание: БН. (...)
*/
#include <iostream> // Требуется для PRINTF, CIN. //
#include <ctime> // Требуется для TIME. //
#include "Header.h"
void InicializastionArrayFunction (int *SourceArray, int Dimension) { // Определение INICIALIZATIONARRAYFUNCTION. //
srand (time (0)); // TIME (0) - инициализация локального времени системы. //
for (int i = 0; i < Dimension; i++) {
*(SourceArray + i) = rand () % 199 - 99; // SOURCEARRAY E [-99..99]. //
printf ("\n%d) А (%d) = %3d.", i + 1, i, *(SourceArray + i));
}
} |
|
4 / 7. MaxNegativesFunction.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
| /*
*Лабораторная работа: 8.
*Тема: Указатели и ссылки. Имя массива как указатель. Динамические массивы.
*Пункт: 5.1. Динамические массивы. Имя массива как указатель.
*Файл: Lab08_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 03.01.2020.
*
*Вариант: 13.
*Защита: 29.11.2019.
*Задание: БН. (...)
*/
#include <iostream> // Требуется для PRINTF. //
#include "Header.h"
void MaxNegativesFunction (int *SourceArray, int Dimension) { // Определение MAXNEGATIVESFUNCTION. //
int MinElement = *(SourceArray);
for (int i = 1; i < Dimension; i++) {
if ((*(SourceArray + i) < 0) && (*(SourceArray + i) < MinElement)) {
MinElement = *(SourceArray + i);
}
}
if (MinElement == *(SourceArray)) {
printf ("\n\n3. Отрицательные элементы в массиве отсутствуют.\n"); // Выводится на экран, если в SOURCEARRAY отрицательных
} // элементов нет. //
else {
printf ("\n\n3. Наибольший отрицательный элемент массива: %d.\n", MinElement);
}
} |
|
5 / 7. MultiplicationFunction.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
| /*
*Лабораторная работа: 8.
*Тема: Указатели и ссылки. Имя массива как указатель. Динамические массивы.
*Пункт: 5.1. Динамические массивы. Имя массива как указатель.
*Файл: Lab08_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 03.01.2020.
*
*Вариант: 13.
*Защита: 29.11.2019.
*Задание: БН. (...)
*/
#include <iostream> // Требуется для PRINTF. //
#include "Header.h"
void MultiplicationFunction (int *SourceArray, int Dimension) { // Определение MULTIPLICATIONFUNCTION. //
int Multiplication = 1;
for (int i = 0; i < Dimension; i++) {
if (*(SourceArray + i) < 0) {
Multiplication *= *(SourceArray + i); // MULTIPLICATION = MULTIPLICATION * SOURCEARRAY [I]. //
}
}
if (Multiplication == 1) {
printf ("\n4. Отрицательные элементы в массиве отсутствуют.\n"); // Выводится на экран, если в SOURCEARRAY отрицательных
} // элементов нет. //
else {
printf ("\n4. Произведение отрицательных элементов массива равно: %d.\n", Multiplication);
}
} |
|
6 / 7. WriteArrayFunction.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
| /*
*Лабораторная работа: 8.
*Тема: Указатели и ссылки. Имя массива как указатель. Динамические массивы.
*Пункт: 5.1. Динамические массивы. Имя массива как указатель.
*Файл: Lab08_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 03.01.2020.
*
*Вариант: 13.
*Защита: 29.11.2019.
*Задание: БН. (...)
*/
#include <iostream> // Требуется для PRINTF. //
#include "Header.h"
void WriteArrayFunction (int *SourceArray, int Dimension) { // Определение WRITEARRAYFUNCTION. //
int Counter = 1;
bool NullElementsBoolean = true;
for (int i = (Dimension - 1); i >= 0; i--) {
if (*(SourceArray + i) != 0) {
printf ("\n%d) А (%d) = %3d.", Counter++, i, *(SourceArray + i));
NullElementsBoolean = false;
}
}
if (NullElementsBoolean == true) {
printf ("\nНенулевые элементы в массиве отсутствуют.\n"); // Выводится на экран, если все элементы SOURCEARRAY равны
} // нулю. //
} |
|
7 / 7. 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
| /*
*Лабораторная работа: 8.
*Тема: Указатели и ссылки. Имя массива как указатель. Динамические массивы.
*Пункт: 5.1. Динамические массивы. Имя массива как указатель.
*Файл: Lab08_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 03.01.2020.
*
*Вариант: 13.
*Защита: 29.11.2019.
*Задание: БН. (...)
*/
#include <iostream> // Требуется для SYSTEM, EXIT. //
#include "Header.h"
void ExitProgramFunction () { // Определение EXITPROGRAMFUNCTION. //
system ("pause");
exit (true);
} |
|
Архив с исходными файлами (Cyberforum.ru, 11 MB)