Найти все седловые точки матрицы - C (СИ) (69971)
Формулировка задачи:
#include "stdafx.h" #include "locale.h" #include "math.h" #include "stdio.h" #include "conio.h" #include "time.h" #include "stdlib.h" int main(void) { setlocale(LC_ALL, "rus"); int i, p, j, L, L2, pch, t = 0, min, min2, max, max2, k, k2; double srar = 0, sum = 0; int mas[3][3] = { { 5, 6, 4 }, { 3, 1, 2 }, { 3, 3, 3 } }; printf("Исходный массив:\n"); for (int i = 0; i < 3; ++i)// Вывод массива { for (int j = 0; j < 3; ++j) { printf(" %d", mas[i][j]); } printf("\n\n"); } printf("\n"); for (i = 0; i<3; i++)//Вычисление седловых точек { min = mas[i][0];//минимум в строке max2 = mas[i][0];//максимум в строке k = 0;//записываем значения для сравнения с минимумом k2 = 0;//записываем значения для сравнения с максимумом for (j = 1; j<3; j++) { if (mas[i][j] < min) { min = mas[i][j]; k = j; } if (mas[i][j] > max2) { max2 = mas[i][j]; k2 = j; } } max = mas[i][k]; L = 0;//записываем значения для сравнения с максимумом min2 = mas[i][k2]; L2 = 0;//записываем значения для сравнения с минимумом for (j = 1; j<3; j++){ if (mas[j][k] > max) { max = mas[j][k]; L = j; } if (mas[j][k] < min2) { min2 = mas[j][k2]; L2 = j; } } if ((mas[L][k] == min && mas[L][k] == max)) { printf("Седловая точка в строке %d = %d\n", i, max); } if (mas[L2][k2] == min2 && mas[L2][k2] == max2) { printf("Седловая точка в строке %d = %d\n", i, max2); } }
Решение задачи: «Найти все седловые точки матрицы»
int** Create(int n,int m) { int i; int** M=(int**)malloc(n*sizeof(int*)); for(i=0;i<n;i++) { M[i]=(int*)malloc(m*sizeof(int)); } return M; } //---------------------------- void Free(int** M,int n) { int i; for(i=0;i<n;i++) free(M[i]); free(M); }
Объяснение кода листинга программы
В данном коде определены две функции: Create и Free. Функция Create принимает два аргумента типа int: n и m. Первый аргумент n определяет количество строк в создаваемой матрице, второй аргумент m определяет количество столбцов в создаваемой матрице. Функция выделяет память под массив указателей на int (int** M) с помощью оператора malloc, а затем в цикле выделяет память под каждый элемент матрицы с помощью оператора malloc. В конце функция возвращает массив указателей на int. Функция Free принимает два аргумента типа int: M и n. Первый аргумент M — это массив указателей на int, который необходимо освободить. Второй аргумент n определяет количество элементов в матрице. В цикле функция освобождает память под каждым элементом матрицы с помощью оператора free, а затем освобождает память под массивом указателей на int с помощью оператора free. Код выделяет память под матрицу и её элементы, а затем освобождает эту память.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д