Лабораторная работа: 5.
Тема: Структурированные типы данных (массивы).
Файл: Lab05_YaP_2019_1S.pdf
Обратите внимание: В файлах Source.cpp, Source.cs и *.pas помимо прочего, так же имеются примечания к программам с различными комментариями и пояснениями.
При оформлении программ в сети Интернет я их удаляю, чтобы не нагромождать эти программы и тем самым не затруднять их восприятие.
Язык: C++.
Среда: Microsoft Visual Studio 2019 v16.3.0.
Платформа: x64.
Задание:
Дан одномерный массив, состоящий из N целочисленных элементов:
1. Ввести массив с клавиатуры.
2. Найти максимальный отрицательный элемент.
3. Вычислить произведение четных элементов массива.
4. Вывести ненулевые элементы на экран в обратном порядке.
5. Отсортировать массив методом выбора элементов и вывести отсортированный массив на экран.
ЛР № 5, задание № 5.1.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
| /*
*Лабораторная работа: 5.
*Тема: Структурированные типы данных (массивы).
*Пункт: 5.1. Одномерные массивы (векторы).
*Файл: Lab05_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 06.01.2020.
*
*Вариант: 13.
*Защита: 18.10.2019.
*Задание: 13. Дан одномерный массив, состоящий из N целочисленных элементов:
*1. Ввести массив с клавиатуры.
*2. Найти максимальный отрицательный элемент.
*3. Вычислить произведение четных элементов массива.
*4. Вывести ненулевые элементы на экран в обратном порядке.
*5. Отсортировать массив методом выбора элементов и вывести отсортированный массив на экран.
*/
#include <iostream> // Треб. для SETLOCATE, PRINTF, CIN, COUT, SYSTEM. //
#include <ctime> // Требуется для TIME. //
using namespace std;
void main () {
setlocale (LC_ALL, "Russian");
const int Dimension = 5;
int MinElement = 0, Counter = 1, Multiplication = 1;
int SourceArray [Dimension];
srand (time (0)); // TIME (0) - иниц. локального времени системы. //
SourceArray [0] = rand () % 199 - 99; // SOURCEARRAY E [-99..99]. //
if (SourceArray [0] < 0) {
MinElement = SourceArray [0];
}
if (SourceArray [0] % 2 == 0) {
Multiplication = SourceArray [0]; // Если SOURCEARRAY [0] четный, тогда произв. равно
} // этому элементу. //
printf ("1. Размерность массива равна: %3d.\n\n2. Элементы массива:\n\n1) A (0) = %3d.", Dimension, SourceArray [0]);
for (int i = 1; i < Dimension; i++) {
SourceArray [i] = rand () % 199 - 99; // Ввод остальных элементов. //
if ((SourceArray [i] < 0) && (SourceArray [i] < MinElement)) { // Вычисляется наибольший отрицательный элемент. //
MinElement = SourceArray [i];
}
if (SourceArray [i] % 2 == 0) { // Если элемент четный, то вычисляется произведение
Multiplication *= SourceArray [i]; // четных элементов. //
}
printf ("\n%d) A (%d) = %3d.", i + 1, i, SourceArray [i]);
}
if (MinElement == 0) {
printf ("\n\n3. Отрицательные элементы в массиве отсутствуют.\n\n"); // Выводится на экран, если в SOURCEARRAY отрицательных
} // элементов нет. //
else {
printf ("\n\n3. Наибольший отрицательный элемент массива: %d.\n\n", MinElement);
}
if (Multiplication == 1) {
printf ("4. Четные элементы в массиве отсутствуют.\n\n"); // Выводится на экран, если в SOURCEARRAYЕ четных
} // элементов нет. //
else {
printf ("4. Произведение четных элементов массива равно: %d.\n\n", Multiplication);
}
printf ("5. Ненулевые элементы массива в обратном порядке:\n\n");
for (int i = Dimension - 1; i >= 0; i--) { // Вывод на экран ненулевых элементов в обратном
if (SourceArray [i] != 0) { // порядке. //
printf ("%d) A (%d) = %3d.\n", Counter++, i, SourceArray [i]);
}
}
for (int i = 0; i < Dimension - 1; i++) { // Упорядочивание элементов методом Выбора. //
MinElement = i; // На каждой итер. MINELEMENT яв. SOURCEARRAY [I]. //
for (int j = i + 1; j < Dimension; j++) { // Поиск MINELEMENT из
if (SourceArray [j] < SourceArray [MinElement]) { // SOURCEARRAY [I + 1..DIMENSION - 1]. //
MinElement = j;
}
}
if (i != MinElement) { // Если MINELEMENT все-таки был найден, то замена их
Counter = SourceArray [i]; // местами. //
SourceArray [i] = SourceArray [MinElement];
SourceArray [MinElement] = Counter; // COUNTER в данном случае временная переменная. //
}
}
printf ("\n6. Элементы массива упорядоченные методом Выбора:\n\n");
for (int i = 0; i < Dimension; i++) { // Вывод на экран упорядоченного SOURCEARRAY. //
printf ("%d) A (%d) = %3d.\n", i + 1, i, SourceArray [i]);
}
cout << endl;
system ("pause");
} |
|
Язык: Pascal.
Среда: PascalABC.NET v3.5.1.
Платформа: отсутствует.
Задание:
Дана матрица А (N, M). Сформировать одномерный массив В (N), элементами которого являются суммы элементов I-ой строки.
ЛР № 5, задание № 5.2.pas
| Pascal | 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
| {*
*Лабораторная работа: 5.
*Тема: Структурированные типы данных (массивы).
*Пункт: 5.2. Многомерные массивы (матрицы).
*Файл: Lab05_YaP_2019_1S.pdf
*
*Язык: Pascal.
*Среда: PascalABC.NET v3.5.1.
*Платформа: отсутствует.
*Изменение: 06.01.2020.
*
*Вариант: 13.
*Защита: 18.10.2019.
*Задание: 13. Дана матрица А (N, M). Сформировать одномерный массив В (N), элементами которого являются суммы элементов I-ой строки.
*}
const
N = 5;
M = 10;
var
i, j, LengthN: integer;
Sum: real;
ExitVariable: char;
SourceArray: array [0..N - 1, 0..M - 1] of integer; // SOURCEARRAY [строки, столбцы]. //
SumArray: array [0..N - 1] of integer;
begin
LengthN := N - 1;
writeln ('1. Двумерный массив A (', N, ', ', M, '):');
writeln;
writeln (' 1 2 3 4 5 6 7 8 9 10');
writeln (' |-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|');
for i := 0 to LengthN do begin
Sum := 0;
write (i + 1);
for j := 0 to (M - 1) do begin
SourceArray [i, j] := random (199) - 99; // SOURCEARRAY E [-99..99]. //
write (' | ', (SourceArray [i, j]):3);
SumArray [i] := SumArray [i] + SourceArray [i, j]
end;
writeln (' | (', (SumArray [i]):4, ')');
writeln (' |-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|')
end;
writeln;
writeln ('2. Одномерный массив B (', N,'):');
writeln;
writeln (' 1 2 3 4 5');
writeln (' |------|------|------|------|------|');
write ('1');
for i := 0 to LengthN do
write (' | ', (SumArray [i]):4);
writeln (' |');
writeln (' |------|------|------|------|------|');
writeln;
write ('Для продолжения нажмите любую клавишу . . . ');
readln (ExitVariable)
end. |
|
Язык: C++.
Среда: Microsoft Visual Studio 2019 v16.3.0.
Платформа: x64.
Задание:
Вычислить сумму заштрихованных элементов матрицы показанных на рисунке.
Примечание:
Рисунок смотрите под спойлером или в Lab05_YaP_2019_1S.pdf.
ЛР № 5, задание № 5.3.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
| /*
*Лабораторная работа: 5.
*Тема: Структурированные типы данных (массивы).
*Пункт: 5.3. Многомерные массивы (матрицы).
*Файл: Lab05_YaP_2019_1S.pdf
*
*Язык: C++.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: x64.
*Изменение: 06.01.2020.
*
*Вариант: 13.
*Защита: 18.10.2019.
*Задание: 3. Вычислить сумму заштрихованных элементов матрицы показанных на рисунке.
*
*Примечание:
*1. Рисунок двумерного массива:
*
* 1 2 3 4 5 6 7
* |---|---|---|---|---|---|---|
* 1 | x | | | | | | x |
* |---|---|---|---|---|---|---|
* 2 | | x | | | | x | |
* |---|---|---|---|---|---|---|
* 3 | | | x | | x | | |
* |---|---|---|---|---|---|---|
* 4 | | | | x | | | |
* |---|---|---|---|---|---|---|
* 5 | | | x | | x | | |
* |---|---|---|---|---|---|---|
* 6 | | x | | | | x | |
* |---|---|---|---|---|---|---|
* 7 | x | | | | | | x |
* |---|---|---|---|---|---|---|
*/
#include <iostream> // Требуется для SETLOCATE, SRAND, PRINTF, RAND, COUT, SYSTEM. //
#include <ctime> // Требуется для TIME. //
using namespace std;
void main () {
setlocale (LC_ALL, "Russian");
const int Dimension = 7;
int Sum = 0, TotalSum = 0;
int SourceArray [Dimension] [Dimension]; // SOURCEARRAY [строки, столбцы]. //
srand (time (0)); // TIME (0) - инициализация локального времени системы. //
printf ("1. Двумерный массив (%d, %d):\n\n 1 2 3 4 5 6 7\n |-----|-----|-----|-----|-----|-----|-----|"
"\n", Dimension, Dimension);
for (int i = 0; i < Dimension; i++) {
Sum = 0;
printf ("%d |", i + 1);
for (int j = 0; j < Dimension; j++) {
SourceArray [i] [j] = rand () % 199 - 99; // SOURCEARRAY E [-99..99]. //
printf (" %3d |", SourceArray [i] [j]);
if ((j == i) || (Dimension - 1 - j == i)) { // (главная диагональ) || (второстепенная диагональ: количество
Sum += SourceArray [i] [j]; // столбиков - текущий столбик = текущая строка). //
}
}
TotalSum += Sum;
printf (" (%3d)\n |-----|-----|-----|-----|-----|-----|-----|\n", Sum);
}
printf ("\n2. Сумма заштрихованных элементов равна: %d.\n\n", TotalSum);
system ("pause");
} |
|
Язык: C Sharp.
Среда: Microsoft Visual Studio 2019 v16.3.0.
Платформа: Any CPU.
Задание:
Дан одномерный массив, получить другой массив той же размерности, каждый элемент которого равен B (I) = A (1) + A (2) + ... + A (I).
ЛР № 5, задание № 6.1.cs
| 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
| /*
*Лабораторная работа: 5.
*Тема: Операторы цикла и передачи управления.
*Пункт: 6.1. Одномерные массивы (векторы).
*Файл: Lab05_YaP_2019_1S.pdf
*
*Язык: C Sharp.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: Any CPU.
*Изменение: 06.01.2020.
*
*Вариант: 13.
*Защита: 18.10.2019.
*Задание: 13. Дан одномерный массив, получить другой массив той же размерности, каждый элемент которого равен
* B (I) = A (1) + A (2) + ... + A (I).
*/
using System;
namespace Program {
class Program {
static void Main () {
int Dimension = 0;
Random Temporary = new Random (); // Объявление TEMPORARY типа RANDOM. //
Console.Write ("1. Введите размерность массивов (от 1 до + oo): ");
Dimension = Convert.ToInt32 (Console.ReadLine ());
int [] SourceArray = new int [Dimension];
int [] ChangeArray = new int [Dimension];
Console.Write ("\n2. Исходный массив A ({0:d}):\n", Dimension);
for (int i = 0; i < Dimension; i++) { // Ввод элементов SOURCEARRAY. //
SourceArray [i] = Temporary.Next (-99, 100); // SOURCEARRAY E [-99..99]. //
Console.Write ("\n{0:d}) A ({1:d}) = {2,3:d}.", i + 1, i, SourceArray [i]);
}
ChangeArray [0] = SourceArray [0];
Console.Write ("\n\n3. Вывод элементов массива B ({0:d}):\n\n1) B (0) = A (0) = {1:d}.", Dimension, ChangeArray [0]);
for (int i = 1; i < Dimension; i++) { // ARRAYB [0] = SOURCEARRAY [0]. //
for (int j = 0; j <= i; j++) {
ChangeArray [i] += SourceArray [j]; // Каждому последующему элементу ARRAYB, присваивается сумма
} // элементов SOURCEARRAY. //
Console.Write ("\n{0:d}) B ({1:d}) = B ({2:d}) + A ({3:d}) = {4,4:d} + {5,4:d} = {6,4:d}.", i + 1, i, i - 1, i,
ChangeArray [i - 1], SourceArray [i], ChangeArray [i]);
}
Console.Write ("\n\nДля продолжения нажмите любую клавишу . . . ");
Console.ReadKey ();
}
}
} |
|
Язык: C Sharp.
Среда: Microsoft Visual Studio 2019 v16.3.0.
Платформа: Any CPU.
Задание:
В каждой строке заданного двухмерного массива размерности (N, M) сменить знак наибольшего по модулю элемента на противоположный.
ЛР № 5, задание № 6.2.cs
| 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
| /*
*Лабораторная работа: 5.
*Тема: Операторы цикла и передачи управления.
*Пункт: 6.1. Одномерные массивы (векторы).
*Файл: Lab05_YaP_2019_1S.pdf
*
*Язык: C Sharp.
*Среда: Microsoft Visual Studio 2019 v16.3.0.
*Платформа: Any CPU.
*Изменение: 06.01.2020.
*
*Вариант: 13.
*Защита: 18.10.2019.
*Задание: 13. В каждой строке заданного двухмерного массива размерности (N, M) сменить знак MAX по модулю элемента на противоположный.
*/
using System;
namespace Program {
class Program {
static void Main () {
int Dimension = 0, Dimension2 = 0, MaxElement = 0, MaxIndex = 0;
Random Temporary = new Random (); // Объявление TEMPORARY типа RANDOM. //
Console.Write ("1. Введите количество строк (от 1 до + oo): ");
Dimension = Convert.ToInt32 (Console.ReadLine ());
Console.Write ("\n2. Введите количество стобцов (от 1 до + oo): ");
Dimension2 = Convert.ToInt32 (Console.ReadLine ());
int [,] SourceArray = new int [Dimension, Dimension2]; // SOURCEARRAY [строки, столбцы]. //
Console.Write ("\n3. Исходный массив:\n");
for (int i = 0; i < Dimension; i++) { // Инициализация SOURCEARRAY. //
SourceArray [i, 0] = Temporary.Next (-99, 100); // Инициализация первого элемента
MaxElement = Math.Abs (SourceArray [i, 0]); // SOURCEARRAY E [-99..99]. //
MaxIndex = 0;
Console.Write ("\n{0:d}) {1,3:d} ", i + 1, SourceArray [i, 0]);
for (int j = 1; j < Dimension2; j++) { // Инициализация остальных элем. J = 1, чтобы не повт. //
SourceArray [i, j] = Temporary.Next (-99, 100); // SOURCEARRAY E [-99..99]. //
if (MaxElement < Math.Abs (SourceArray [i, j])) {
MaxElement = Math.Abs (SourceArray [i, j]); // Поиск MAXELEMENT. //
MaxIndex = j; // Поиск индекса MAXELEMENT. //
}
Console.Write ("{0,3:d} ", SourceArray [i, j]);
}
Console.Write (" ({0,3:d})", SourceArray [i, MaxIndex]);
SourceArray [i, MaxIndex] *= -1; // Замена знака MAXELEMENT на противоположный. //
}
Console.Write ("\n\n4. Массив с измененным наибольшим элементом:\n");
for (int i = 0; i < Dimension; i++) {
Console.Write ("\n{0:d}) ", i + 1);
for (int j = 0; j < Dimension2; j++) {
Console.Write ("{0,3:d} ", SourceArray [i, j]); // Вывод SOURCEARRAY на экран. //
}
}
Console.Write ("\n\nДля продолжения нажмите любую клавишу . . . ");
Console.ReadKey ();
}
}
} |
|
|