Напечатать индексы всех седловых точек матрицы - C (СИ)
Формулировка задачи:
1) Элемент матрицы назовем седловой точкой, если он наименьший в своей строке и наибольший (одновременно) в своем столбце (или наоборот, наибольший в своей строке и наименьший в своем столбце). Для заданной целой матрицы размером 10 x 12 напечатать индексы всех ее седловых точек
вот код
нужно сделать через указатели
#include "stdafx.h"
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
int _tmain(int argc, _TCHAR* argv[])
{
int i,j,n,m,minj;
i = 0;
j = 0;
int a[100][100];
printf("BBeguTe koJlu4ecTBo cTpok:\n");
scanf("%d", &n);
printf("BBeguTe koJlu4ecTBo CToJl6lLoB:\n");
scanf("%d", &m);
for(i=0;i<n;i++)
for(j=0;j<m;j++);
for (i=0;i<n;i++)
for (j=0;j<m;j++)
{
printf("BBeguTe 3JleMeHT [%d,%d]\n", i+1, j+1);
scanf("%f",&a[i][j]);
}
for(i=0;i<n;i++)
{minj=0;
for(j=1;j<m;j++)
if(a[i][j]<a[i][minj])
minj=j;
for(j=0;j<n;j++)
if(a[j][minj]>a[i][minj] && j!=i)break;
if(j==n)
printf("[%d][%d]\n",i+1,minj+1);
}
getch();
return 0;
}Решение задачи: «Напечатать индексы всех седловых точек матрицы»
textual
Листинг программы
#include <iostream>
using namespace std;
const int M = 3;
const int N = 3;
void input(int **a)
{
cout<<"Input data: \n";
for (int i=0; i<M; i++)
{
for(int j=0; j<N; j++)
{
cin>>a[i][j];
}
}
}
void output(int **a)
{
cout<<"Output data: \n";
for (int i=0; i<M; i++)
{
for (int j=0; j<N; j++)
cout<<a[i][j]<<" ";
cout<<"\n";
}
}
void del(int **a)
{
for (int i = 0; i<M; i++)
{
delete [] a[i];
}
delete [] a;
}
void cedlovaTochka(int **a)
{
int minj;
int i, j;
for (i=0; i<M; i++)
{
minj = 0;
for (j=1; j<N; j++)
{
if (a[i][j] < a[i][minj]) minj = j;
}
for(j=0; j<M; j++)
{
if(a[j][minj] > a[i][minj] && j != i) break;
}
if(j == M) cout<<"["<<i+1<<"]"<<"["<<minj+1<<"]\n";
}
}
int main()
{
int **a = new int *[M];
for (int i=0; i<M; i++) a[i] = new int[N];
input(a);
output(a);
cedlovaTochka(a);
del(a);
return 0;
}
Объяснение кода листинга программы
В этом коде реализуется алгоритм поиска седловых точек в квадратной матрице. Список функций и их назначение:
- Функция
inputиспользуется для ввода данных в матрицу. - Функция
outputиспользуется для вывода данных из матрицы. - Функция
delиспользуется для освобождения памяти, выделенной под матрицу. - Функция
cedlovaTochkaиспользуется для поиска индексов седловых точек матрицы. Список действий в функцииmain: - Выделяется память под матрицу.
- В матрицу вводятся данные.
- Выводится содержимое матрицы.
- Находятся индексы седловых точек матрицы.
- Выделяемая память освобождается.
- Возвращается 0, что означает успешный конец работы программы.