Содержание
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Варианты заданий
№ | Условие |
1 | Дана целочисленная прямоугольная матрица. Определить:
|
2 | Дана целочисленная прямоугольная матрица. Определить количество столбцов, не содержащих ни одного нулевого элемента. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик. |
3 | Дана целочисленная прямоугольная матрица. Определить:
|
4 | Дана целочисленная квадратная матрица. Определить:
|
5 | Дана целочисленная квадратная матрица. Определить:
|
6 | Дана целочисленная прямоугольная матрица. Определить:
➡ Матрица $A$ имеет седловую точку $A_{ij}$, если $A_{ij}$ является минимальным элементом в $i$-й строке и максимальным в $j$-м столбце. |
7 | Для заданной матрицы размером $8 \cdot 8$ найти такие $k$, что $k$-я строка матрицы совпадает с $k$-м столбцом. Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент. |
8 | Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик. Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент. |
9 | Соседями элемента $A_{ij}$ в матрице назовем элементы $A_{kl}$ с $i\ -\ 1 \leq k \leq i\ +\ 1,\ j\ +\ 1 \leq l \leq j\ +\ 1,\ (k,\ l) \neq (i,\ j)$. Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Построить результат сглаживания заданной вещественной матрицы размером $10 \cdot 10$. В сглаженной матрице найти сумму модулей элементов, расположенных ниже главной диагонали. |
10 | Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы размером $10 \cdot 10$. Найти сумму модулей элементов, расположенных выше главной диагонали. |
11 | Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы. С помощью допустимых преобразований привести систему к треугольному виду. Найти количество строк, среднее арифметическое элементов которых меньше заданной величины. |
12 | Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями. Найти номер первой из строк, содержащих хотя бы один положительный элемент. |
13 | Осуществить циклический сдвиг элементов прямоугольной матрицы на $n$ элементов вправо и вниз (в зависимости от введенного режима). $n$ может быть больше количества элементов в строке или столбце. |
14 | Осуществить циклический сдвиг элементов квадратной матрицы размерности $M \cdot N$ вправо на $k$ элементов таким образом: элементы $1$-й строки сдвигаются в последний столбец сверху вниз, из него — в последнюю строку справа налево, из нее — в первый столбец снизу вверх, из него — в первую строку; для остальных элементов — аналогично. |
15 | Дана целочисленная прямоугольная матрица. Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент. Характеристикой строки целочисленной матрицы назовем сумму ее отрицательных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с убыванием характеристик. |
16 | Упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества одинаковых элементов в каждой строке. Найти номер первого из столбцов, не содержащих ни одного отрицательного элемента. |
17 | Путем перестановки элементов квадратной вещественной матрицы добиться того, чтобы ее максимальный элемент находился в левом верхнем углу, следующий по величине — в позиции $(2,\ 2)$, следующий по величине — в позиции $(3,\ 3)$ и т.д., заполнив таким образом всю главную диагональ. Найти номер первой из строк, не содержащих ни одного положительного элемента. |
18 | Дана целочисленная прямоугольная матрица. Определить:
|
19 | Дана целочисленная квадратная матрица. Определить:
|
20 | Дана целочисленная прямоугольная матрица. Определить:
➡ Матрица $A$ имеет седловую точку $A_{ij}$, если $A_{ij}$ является минимальным элементом в $i$-й строке и максимальным в $j$-м столбце. |
Образец выполнения (вариант №1)
Условие задачи
Дана целочисленная прямоугольная матрица. Определить:
|
Реализация задачи на языке С++
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 | #include <iostream> // для консольного ввода-вывода #include <iomanip> // для форматированного вывода // подключаем стандартное пространство имен using namespace std; // выделяем память под динамическую целочисленную матрицу размером n x m int** Create_matrix( const size_t n, const size_t m ) { int** matrix = new int*[ n ]; for ( size_t i = 0; i < n; i++ ) matrix[ i ] = new int[ m ]; return matrix; } // уничтожение памяти из-под динамической целочисленной матрицы размером n x m int** Destroy_matrix( int** a, const size_t n ) { for ( size_t i = 0; i < n; i++ ) delete[] a[ i ]; delete[] a; a = nullptr; return a; } // заполнение элементов матрицы вводом с клавиатуры void Fill_matrix( int** const a, const size_t n, const size_t m ) { cout << endl << "Вам предстоит ввести " << ( n * m ) << " целых чисел с клавиатуры." << endl; for ( size_t i = 0; i < n; i++ ) for ( size_t j = 0; j < m; j++ ) { cout << "\t- введите A[ " << ( i + 1 ) << " ][ " << ( j + 1 ) << " ]: "; cin >> a[ i ][ j ]; //a[ i ][ j ] = rand() % 11 - 5; } } // вывод содержимого матрицы на экран в табличном виде void Print_matrix( int** const a, const size_t n, const size_t m ) { cout << endl << "Матрица размером " << n << " x " << m << " имеет вид: " << endl; for ( size_t i = 0; i < n; i++ ) { for ( size_t j = 0; j < m; j++ ) cout << setw( 8 ) << a[ i ][ j ]; cout << endl << endl; } } // проверка строки матрицы на содержание хотя бы одного нулевого элемента bool Is_row_contain_zero( const int* const row, const size_t n ) { // изначально предполагаем, что в строке нет ни одного нулевого элемента // а затем пытаемся это опровергнуть bool is_zero = false; for ( size_t i = 0; i < n; i++ ) if ( row[ i ] == 0 ) { is_zero = true; break; } return is_zero; } // получаем количество строк, не содержащих ни одного нулевого элемента size_t Get_count_rows_without_zeros( int** a, const size_t n, const size_t m ) { // хранит количество строк, не содержащих ни одного нулевого элемента size_t count_rows = 0; // проверяем каждую строку заданной матрицы на включение хотя бы 0 нулевого элемента for ( size_t irow = 0; irow < n; irow++ ) // если текущая строка не содержит ни одного нулевого элемента, то if ( Is_row_contain_zero( a[ irow ], m ) == false ) // увеличиваем счетчик подходящих строк матрицы на +1 count_rows++; return count_rows; } // получение максимального из чисел, встречающихся в заданной матрице более одного раза int Get_not_unique_max_value( int** const a, const size_t n, const size_t m ) { // максимальный элемент, встречающихся в заданной матрице более одного раза int max_element = INT_MIN; // элемент, который проверяется на масимальность свыше одного раза int current_element; // сколько раз встречается элемент в матрице size_t count; // счетчики для внешнего перебора всех элементов матрицы size_t i, j; // счетчики для внутреннего перебора всех элементов матрицы size_t k, l; for ( i = 0; i < n; i++ ) for ( j = 0; j < m; j++ ) { current_element = a[ i ][ j ]; count = 0; for ( k = 0; k < n; k++ ) for ( l = 0; l < m; l++ ) if ( a[ k ][ l ] == current_element ) count++; // пытаемся понять, является ли текущий элемент максимальным, который встречается более одного раза if ( ( count > 1 ) && ( current_element > max_element ) ) max_element = current_element; } return max_element; } // главная функция программы (точка входа) int main( void ) { // отвечает за максимальное из чисел, встречающихся в заданной матрице более одного раза int max_element; // русификация диалогов программы setlocale( LC_ALL, "Russian" ); srand( time( NULL ) ); // количество строк и колонок целочисленной матрицы size_t n, m; // запрашиваем с клавиатуры габариты матрицы cout << "Введите количество строк матрицы : "; cin >> n; cout << "Введите количество колонок матрицы: "; cin >> m; // создаем динамическую матрицу размером n x m int** a = Create_matrix( n, m ); // заполняем матрицу вводом с клавиатуры Fill_matrix( a, n, m ); // выводим заданную матрицу на экран в табличном представлении Print_matrix( a, n, m ); // выводим на экран количество строк заданной матрицы, которые не содержат ни одного нулевого элемента cout << endl << "Количество строк матрицы, не содержащих ни одного нулевого элемента: " << Get_count_rows_without_zeros( a, n, m ) << endl; // определение макс.числа среди чисел, встречающихся более одного раза max_element = Get_not_unique_max_value( a, n, m ); if ( max_element == INT_MIN ) cout << endl << "Все значения заданной матрицы - уникальные значения. Поиск максимального невозможен." << endl; else cout << endl << "Максимальное из чисел, встречающихся в заданной матрице более одного раза: " << max_element << endl; // при выходе из программы нужно удалить динамическую память из-под элементов матрицы a = Destroy_matrix( a, n ); // задержка работы программы, чтобы у пользователя была возможность просмотреть результат cout << endl << endl; return EXIT_SUCCESS; } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Добавить комментарий