Содержание
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Цель лабораторной работы
Получить практические навыки разработки программ на языке С++ с использованием динамических одномерных и двумерных массивов.
Задача №1
Варианты заданий
№ | Условие |
1 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Заполнить одномерный массив, найдя сумму положительных элементов в каждом столбце матрицы. |
2 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Заполнить одномерный массив, найдя произведение положительных элементов в каждом столбце матрицы. |
3 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Найти минимальный элемент в каждой строке матрицы. Затем каждую строку матрицы разделить на минимальный элемент строки. |
4 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Найти минимальный элемент в каждой строке матрицы среди положительных элементов. |
5 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Заполнить одномерный массив, найдя количество положительных элементов в каждом столбце матрицы. |
6 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Найти минимальный элемент в каждой строке матрицы среди отрицательных элементов. |
7 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Заполнить одномерный массив, найдя среднее арифметическое положительных элементов в каждом столбце матрицы. |
8 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Найти минимальный элемент в каждой строке матрицы. Затем каждую строку матрицы умножить на минимальный элемент строки. |
9 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Заполнить одномерный массив, найдя среднее геометрическое положительных элементов в каждом столбце матрицы. |
10 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Найти минимальный элемент в каждой строке матрицы. Затем к каждому элементу каждой строки прибавить минимальный элемент строки. |
11 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Найти минимальный элемент и его номер в каждой строке матрицы. Затем из каждого элемента каждой строки вычесть номер минимального элемента строки. |
12 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Заполнить одномерный массив, найдя сумму отрицательных элементов в каждом столбце матрицы. |
13 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Найти номер минимального элемента в каждой строке матрицы. Затем к каждому элементу каждой строки прибавить номер минимального элемента строки. |
14 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Заполнить одномерный массив, найдя произведение отрицательных элементов в каждом столбце матрицы. |
15 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Заполнить одномерный массив, найдя количество отрицательных элементов в каждом столбце матрицы. |
Образец выполнения (вариант №5)
Условие задачи
Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Заполнить одномерный массив, найдя количество положительных элементов в каждом столбце матрицы.
Реализация задачи на языке С++
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 | #include <iostream> #include <time.h> #include <iomanip> using namespace std; void main(void) { int **a; // динамический двумерный массив целых чисел int n, m; // габариты двумерного массива а (n - количество строк, m - количество колонок) // руссификация диалогов программы setlocale(LC_ALL, "Russian"); // предлагаем пользователю ввести размеры двумерного массива cout << "Введите через пробел 2 натуральных числа (n, m) - размеры двумерного массива: "; cin >> n >> m; // выделяем память под элементы массива a = new int*[n]; for(int i = 0; i < n; i++) a[i] = new int[m]; // предлагаем пользователю выбрать способ заполнения элементов массива int select; do { cout << "\nВЫБЕРИТЕ СПОСОБ ЗАПОЛНЕНИЯ ЭЛЕМЕНТОВ МАССИВА" << endl; cout << "1 - ввод с клавиатуры" << endl; cout << "2 - случайными числами из отрезка [-25; +25]" << endl; cout << "\tВЫБОР: "; cin >> select; } while((select < 1) || (select > 2)); // если пользователь хочет вводить значения элементов с клавиатуры if(select == 1) { cout << endl << "Вам предстоит ввести с клавиатуры " << n * m << " элем. целого типа" << endl; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { cout << "\t- введите значение элемента A[" << (i + 1) << "][" << (j + 1) << "]: "; cin >> a[i][j]; } } } else // пользователь выбрал заполнение элементов массива случайными числами { srand(time(NULL)); for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) a[i][j] = -25 + rand() % 51; // случайное число из отрезка [-25; +25] } // выводим значения элементов исходного двумерного массива а на экран в табличном формате cout << "\nЭлементы двумерного массива(a) имеют вид:" << endl; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) cout << setw(8) << a[i][j]; cout << endl << endl; } // определяем одномерный динамический массив целых чисел, отвечающий за количество положительных элементов в каждом столбце матрицы int *v = new int[m]; // находим количество положительных элементов в каждом столбце матрицы int plus_count; // хранит количество положительных элементов в текущем столбце матрицы for(int j = 0; j < m; j++) { plus_count = 0; for(int i = 0; i < n; i++) if(a[i][j] > 0) // если текущий элемент положительный, то plus_count++; // увеличиваем счетчик положительных элементов в колонке №j на +1 // запоминаем количество положительных элементов в колонке №j в соо-щем элементе выходного одномерного массива v[j] = plus_count; } // выводим на экран количество положительных элементов в каждой столбце матрицы cout << "Количество положительных элементов в каждом столбце матрицы:" << endl; for(int i = 0; i < m; i++) cout << setw(8) << v[i]; // удаляем динамическую память из-под элементов двумерного массива for(int i = 0; i < n; i++) delete []a[i]; delete []a; // удаляем память из-под одномерного массива delete []v; // задержка программы, чтобы у пользователя была возможность просмотреть результат cout << endl << endl << endl << "Для завершения работы программы нажмите ENTER..."; fflush(stdin); cin.get(); } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Задача №2
Варианты заданий
№ | Условие |
1 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$) (или квадратная матрица $a$). Найти количество элементов, равных заданному числу $x$ и расположенных в верхней треугольной матрице, расположенной выше побочной диагонали, исключая саму побочную диагональ. |
2 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$) (или квадратная матрица $a$). Найти номер минимального элемента ее побочной диагонали. |
3 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$) (или квадратная матрица $a$). Найти количество и сумму отрицательных элементов, нижней треугольной матрицы, расположенной ниже побочной диагонали, исключая саму побочную диагональ. |
4 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$) (или квадратная матрица $a$). Найти сумму номеров минимального и максимального элементов ее побочной диагонали. |
5 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$) (или квадратная матрица $a$). Найти количество нулевых элементов, расположенных в верхней треугольной матрице, расположенной выше побочной диагонали, включая саму побочную диагональ. |
6 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$) (или квадратная матрица $a$). Найти сумму номеров минимального и максимального элементов ее главной диагонали. |
7 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$) (или квадратная матрица $a$). Найти произведение минимального и максимального элементов ее главной диагонали. Затем умножить побочную диагональ на максимальный элемент главной диагонали. |
8 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$) (или квадратная матрица $a$). Найти среднее арифметическое положительных элементов, верхней треугольной матрицы, расположенной выше главной диагонали. |
9 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$) (или квадратная матрица $a$). Найти произведение элементов, расположенных в верхней треугольной матрице, расположенной выше побочной диагонали, включая саму побочную диагональ. |
10 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$) (или квадратная матрица $a$). Найти количество положительных элементов ее главной диагонали. Затем умножить побочную диагональ на найденное количество. |
11 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$) (или квадратная матрица $a$). Найти среднее арифметическое положительных элементов ее побочной диагонали. |
12 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$) (или квадратная матрица $a$). Найти произведение элементов, расположенных в верхней треугольной матрице, расположенной выше побочной диагонали, включая саму побочную диагональ. |
13 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$) (или квадратная матрица $a$). Найти среднее геометрическое положительных элементов ее побочной диагонали. |
14 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$) (или квадратная матрица $a$). Найти среднее арифметическое положительных элементов, параллели главной диагонали расположенной выше над диагональю. |
Образец выполнения (вариант №10)
Условие задачи
Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$) (или квадратная матрица $a$). Найти количество положительных элементов ее главной диагонали. Затем умножить побочную диагональ на найденное количество.
Реализация задачи на языке С++
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 | #include <iostream> #include <time.h> #include <iomanip> using namespace std; void main(void) { int **a; // динамическая матрица целых чисел int n; // порядок матрицы // руссификация диалогов программы setlocale(LC_ALL, "Russian"); cout << "Введите порядок матрицы n (натуральное число): "; cin >> n; // выделяем память под элементы матрицы a = new int*[n]; for(int i = 0; i < n; i++) a[i] = new int[n]; // предлагаем пользователю выбрать способ заполнения элементов массива int select; do { cout << "\nВЫБЕРИТЕ СПОСОБ ЗАПОЛНЕНИЯ ЭЛЕМЕНТОВ МАССИВА" << endl; cout << "1 - ввод с клавиатуры" << endl; cout << "2 - случайными числами из отрезка [-25; +25]" << endl; cout << "\tВЫБОР: "; cin >> select; } while((select < 1) || (select > 2)); // если пользователь хочет вводить значения элементов с клавиатуры if(select == 1) { cout << endl << "Вам предстоит ввести с клавиатуры " << n * n << " элем. целого типа" << endl; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { cout << "\t- введите значение элемента A[" << (i + 1) << "][" << (j + 1) << "]: "; cin >> a[i][j]; } } } else // пользователь выбрал заполнение элементов массива случайными числами { srand(time(NULL)); for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) a[i][j] = -25 + rand() % 51; // случайное число из отрезка [-25; +25] } // выводим значения элементов исходного двумерного массива а на экран в табличном формате cout << "\nЭлементы матрицы(a) имеют вид:" << endl; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) cout << setw(7) << a[i][j]; cout << endl << endl; } int plus_count = 0; // количество положительных элементов главной диагонали // считаем кол-во положительных элементов главной диагонали // у элементов, расположенных на главной диагонали №строки = №колонки for(int i = 0; i < n; i++) if(a[i][i] > 0) // если элемент главной диагонали положителен, то plus_count++; // увеличиваем счетчик положительных чисел на +1 cout << "Количество положительных элементов главной диагонали: " << plus_count << endl; // умножаем каждый элемент побочной диагонали на кол-во положительных элементов главной диагонали for(int i = 0; i < n; i++) a[i][n - i - 1] *= plus_count; // выводим преобразованную матрицу на экран cout << "\nЭлементы преобразованной матрицы(a) имеют вид:" << endl; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) cout << setw(7) << a[i][j]; cout << endl << endl; } // удаляем динамическую память из-под элементов двумерного массива for(int i = 0; i < n; i++) delete []a[i]; delete []a; // задержка программы, чтобы у пользователя была возможность просмотреть результат cout << endl << endl << endl << "Для завершения работы программы нажмите ENTER..."; fflush(stdin); cin.get(); } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Задача №3
Варианты заданий
№ | Условие |
1 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию первую строку матрицы. |
2 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию последнюю строку матрицы. |
3 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию пятую строку матрицы. |
4 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию первый столбец матрицы. |
5 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию последний столбец матрицы. |
6 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию третий столбец матрицы. |
7 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по убыванию первую строку матрицы. |
8 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по убыванию последнюю строку матрицы. |
9 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Найти сумму положительных элементов в каждой строке матрицы. Затем упорядочить по убыванию созданный массив. |
10 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Найти сумму положительных элементов в каждом столбце матрицы. Затем упорядочить по убыванию созданный массив. |
11 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Найти среднее арифметическое положительных элементов в каждом столбце матрицы. Затем упорядочить по убыванию созданный массив. |
12 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Найти среднее геометрическое положительных элементов в каждой строке матрицы. Затем упорядочить по убыванию созданный массив. |
13 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Упорядочить по убыванию последний столбец матрицы. А также далее упорядочить по возрастанию первую строку матрицы. |
14 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Упорядочить по убыванию третий столбец матрицы. А также далее упорядочить по возрастанию пятую строку матрицы. |
15 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot m$). Переставить третий и пятый столбец. Затем упорядочить по убыванию первый столбец матрицы. |
Образец выполнения (вариант №2)
Условие задачи
Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию последнюю строку матрицы.
Реализация задачи на языке С++
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 | #include <iostream> #include <time.h> #include <iomanip> using namespace std; // главная функция программы (точка входа) void main(void) { int **a; // динамическая матрица целых чисел int n; // порядок матрицы // руссификация диалогов программы setlocale(LC_ALL, "Russian"); cout << "Введите порядок матрицы n (натуральное число): "; cin >> n; // выделяем память под элементы матрицы a = new int*[n]; for(int i = 0; i < n; i++) a[i] = new int[n]; // предлагаем пользователю выбрать способ заполнения элементов массива int select; do { cout << "\nВЫБЕРИТЕ СПОСОБ ЗАПОЛНЕНИЯ ЭЛЕМЕНТОВ МАССИВА" << endl; cout << "1 - ввод с клавиатуры" << endl; cout << "2 - случайными числами из отрезка [-25; +25]" << endl; cout << "\tВЫБОР: "; cin >> select; } while((select < 1) || (select > 2)); // если пользователь хочет вводить значения элементов с клавиатуры if(select == 1) { cout << endl << "Вам предстоит ввести с клавиатуры " << n * n << " элем. целого типа" << endl; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { cout << "\t- введите значение элемента A[" << (i + 1) << "][" << (j + 1) << "]: "; cin >> a[i][j]; } } } else // пользователь выбрал заполнение элементов массива случайными числами { srand(time(NULL)); for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) a[i][j] = -25 + rand() % 51; // случайное число из отрезка [-25; +25] } // выводим значения элементов исходного двумерного массива а на экран в табличном формате cout << "\nЭлементы матрицы(a) имеют вид:" << endl; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) cout << setw(7) << a[i][j]; cout << endl; } // упорядочиваем последнюю строку матрицу (ее номер n-1) по возрастанию методом выбора for(int i = 0; i < (n - 1); i++) { int index_min = i; for(int j = (i + 1); j < n; j++) if(a[n - 1][j] < a[n - 1][index_min]) index_min = j; // вставляем минимальный элемент текущей итерации в позицию i if(index_min != i) { int swap = a[n - 1][i]; a[n - 1][i] = a[n - 1][index_min]; a[n - 1][index_min] = swap; } } // выводим преобразованную матрицу на экран cout << "\nЭлементы преобразованной матрицы(a) имеют вид:" << endl; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) cout << setw(7) << a[i][j]; cout << endl; } // удаляем динамическую память из-под элементов двумерного массива for(int i = 0; i < n; i++) delete []a[i]; delete []a; // задержка программы, чтобы у пользователя была возможность просмотреть результат cout << endl << "Для завершения работы программы нажмите ENTER..."; fflush(stdin); cin.get(); } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Задача №4
Варианты заданий
№ | Условие |
1 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию главную диагональ. |
2 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию паралелль побочной диагонали расположенной под диагональю. |
3 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию паралелль главной диагонали расположенной над диагональю. |
4 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по убыванию главную диагональ. |
5 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по убыванию паралелль побочной диагонали расположенной под диагональю. |
6 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по убыванию паралелль главной диагонали расположенной над диагональю. |
7 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию паралелль главной диагонали расположенной под диагональю. |
8 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию паралелль побочной диагонали расположенной над диагональю. |
9 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по убыванию побочную диагональ. |
10 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по убыванию паралелль главной диагонали расположенной под диагональю. |
11 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по убыванию паралелль побочной диагонали расположенной над диагональю. |
12 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию побочную диагональ. |
13 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию паралелль побочной диагонали расположенной под диагональю. |
14 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию параллель главной диагонали. |
15 | Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию побочную диагональ. |
Образец выполнения (вариант №12)
Условие задачи
Создать динамические массивы, используя указатели. Дан двумерный массив $a$, размером ($n \cdot n$). Упорядочить по возрастанию побочную диагональ.
Реализация задачи на языке С++
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 | #include <iostream> #include <time.h> #include <iomanip> using namespace std; // главная функция программы (точка входа) void main(void) { int **a; // динамическая матрица целых чисел int n; // порядок матрицы // руссификация диалогов программы setlocale(LC_ALL, "Russian"); cout << "Введите порядок матрицы n (натуральное число): "; cin >> n; // выделяем память под элементы матрицы a = new int*[n]; for(int i = 0; i < n; i++) a[i] = new int[n]; // предлагаем пользователю выбрать способ заполнения элементов массива int select; do { cout << "\nВЫБЕРИТЕ СПОСОБ ЗАПОЛНЕНИЯ ЭЛЕМЕНТОВ МАССИВА" << endl; cout << "1 - ввод с клавиатуры" << endl; cout << "2 - случайными числами из отрезка [-25; +25]" << endl; cout << "\tВЫБОР: "; cin >> select; } while((select < 1) || (select > 2)); // если пользователь хочет вводить значения элементов с клавиатуры if(select == 1) { cout << endl << "Вам предстоит ввести с клавиатуры " << n * n << " элем. целого типа" << endl; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { cout << "\t- введите значение элемента A[" << (i + 1) << "][" << (j + 1) << "]: "; cin >> a[i][j]; } } } else // пользователь выбрал заполнение элементов массива случайными числами { srand(time(NULL)); for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) a[i][j] = -25 + rand() % 51; // случайное число из отрезка [-25; +25] } // выводим значения элементов исходного двумерного массива а на экран в табличном формате cout << "\nЭлементы исходной матрицы(a) имеют вид:" << endl; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) cout << setw(7) << a[i][j]; cout << endl; } // упорядочиваем элементы побочной диагонали по возрастанию методом выбора // побочная диагональ выходит из нижнего левого угла матрицы в правый верхний угол for(int i = 0; i < (n - 1); i++) { int index_max = i; for(int j = (i + 1); j < n; j++) if(a[j][n - j - 1] > a[index_max][n - index_max - 1]) index_max = j; // вставляем максимальный элемент текущей итерации в позицию i побочной диагонали if(index_max != i) { int swap = a[i][n - i - 1]; a[i][n - i - 1] = a[index_max][n - index_max - 1]; a[index_max][n - index_max - 1] = swap; } } // выводим преобразованную матрицу на экран cout << "\nЭлементы преобразованной матрицы(a) имеют вид:" << endl; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) cout << setw(7) << a[i][j]; cout << endl; } // удаляем динамическую память из-под элементов двумерного массива for(int i = 0; i < n; i++) delete []a[i]; delete []a; // задержка программы, чтобы у пользователя была возможность просмотреть результат cout << endl << "Для завершения работы программы нажмите ENTER..."; fflush(stdin); cin.get(); } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Добавить комментарий