Найти все седловые точки матрицы - 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. Код выделяет память под матрицу и её элементы, а затем освобождает эту память.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д