Заменить минимальный элемент массива А максимальным элементом массива В - C (СИ)
Формулировка задачи:
Добрый вечер.
Не понимаю как работать с функциями, помогите с программой.
Заменить минимальный элемент массива А (5х8) максимальным элементом массива В (7х6), а минимум массива В - максимальным элементом массива А.
Решение задачи: «Заменить минимальный элемент массива А максимальным элементом массива В»
textual
Листинг программы
#ifdef _MSC_VER #define _CRT_SECURE_NO_WARNINGS #endif #include <stdio.h> #include <stdlib.h> #include <time.h> int** create_matrix(int rows, int cols) { int i = 0; int** matrix = (int**)malloc(sizeof(int*) * rows); for (i = 0; i < rows; i++) matrix[i] = (int*)malloc(sizeof(int) * cols); return matrix; } void fill_matrix(int** matrix, int rows, int cols) { int i = 0, j = 0; for (i = 0; i < rows; i++) for (j = 0; j < cols; j++) matrix[i][j] = rand() % 20; } void destroy_matrix(int** matrix, int rows) { int i = 0; for (i = 0; i < rows; i++) free(matrix[i]); free(matrix); } void print_row(const int* row, int size, const char *elem_fmt, const char *row_separator) { while (size--) printf(elem_fmt, *row++); printf(row_separator); } void print_matrix(const int** matrix, const int rows, const int cols, const char *elem_fmt, const char *row_separator) { int i = rows; while (i--) print_row(*matrix++, cols, elem_fmt, row_separator); } struct point { int x, y; }; struct point matrix_max_element(const int** matrix, int rows, int cols) { struct point max_point = { 0, 0 }; int i = 0, j = 0; for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) if (matrix[i][j] > matrix[max_point.y][max_point.x]) { max_point.x = j; max_point.y = i; } } return max_point; } struct point matrix_min_element(const int** matrix, int rows, int cols) { struct point min_point = { 0, 0 }; int i = 0, j = 0; for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) if (matrix[i][j] < matrix[min_point.y][min_point.x]) { min_point.x = j; min_point.y = i; } } return min_point; } void replace_value_in_matrix(int** matrix, const struct point* p, int value) { matrix[p->y][p->x] = value; } int main(void) { int a_rows = 5, a_cols = 8, b_rows = 7, b_cols = 6; struct point a_min, a_max, b_max, b_min; int **a, **b; srand(time(0)); a = create_matrix(a_rows, a_cols); b = create_matrix(b_rows, b_cols); fill_matrix(a, a_rows, a_cols); fill_matrix(b, b_rows, b_cols); a_min = matrix_min_element(a, a_rows, a_cols); a_max = matrix_max_element(a, a_rows, a_cols); b_min = matrix_min_element(b, b_rows, b_cols); b_max = matrix_max_element(b, b_rows, b_cols); print_matrix(a, a_rows, a_cols, "%4d", "\n"); putchar('\n'); print_matrix(b, b_rows, b_cols, "%4d", "\n"); puts("\n"); replace_value_in_matrix(a, &a_min, b[b_max.y][b_max.x]); replace_value_in_matrix(b, &b_min, a[a_max.y][a_max.x]); print_matrix(a, a_rows, a_cols, "%4d", "\n"); putchar('\n'); print_matrix(b, b_rows, b_cols, "%4d", "\n"); puts("\n"); destroy_matrix(a, a_rows); destroy_matrix(b, b_rows); #ifdef _MSC_VER system("pause"); #endif return 0; }
Объяснение кода листинга программы
- Создание двумерного массива (матрицы) с помощью функции
create_matrix()
. - Заполнение матрицы случайными целыми числами от 0 до 19 с помощью функции
fill_matrix()
. - Поиск минимального элемента в матрице с помощью функции
matrix_min_element()
. - Поиск максимального элемента в матрице с помощью функции
matrix_max_element()
. - Вывод содержимого матрицы на экран с помощью функции
print_matrix()
. - Замена минимального элемента в первой матрице на максимальный элемент из второй матрицы с помощью функции
replace_value_in_matrix()
. - Замена максимального элемента во второй матрице на минимальный элемент из первой матрицы с помощью функции
replace_value_in_matrix()
. - Вывод измененного содержимого матриц на экран с помощью функции
print_matrix()
. - Освобождение памяти, выделенной под матрицы, с помощью функции
destroy_matrix()
. - Приостановка выполнения программы до нажатия клавиши с помощью команды
system(
pause)
. - Возврат значения 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д