Найти седловую точку матрицы - C (СИ)
Формулировка задачи:
Помогите написать программу нахождения седловой точки( то есть нужно в двумерной матрице найти элементы, которые являются наибольшими в свооих столбцах и наименьшими в строках)
Вот моя программа, но она не работает. Найдите, пожалуйста, ошибку или предложите новый вариант.
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
int a[4][4],v[4][4],c[4][4],
k,i,ni,nk,mi,mk,min,max;
/*Обнуляем элементы доп. матриц*/
for(i=0; i<=3; i++)
{
for(k=0; k<=3; k++)
{ v[i][k]=0; c[i][k]=0;}
}
/*Создаём основной массив*/
printf("Enter massiv:");
for(i=0; i<=3; i++)
{
for(k=0; k<=3; k++)
{scanf("%d", &a[i][k]);}
}
/*Выводим основной массив на печать*/
for(i=0; i<=3; i++)
{
for(k=0; k<=3; k++)
{printf("%d\t", a[i][k]);}
printf("\n"); }
/*Определяем мин. элементы в каждой строке*/
for(i=0; i<=3; i++)
{
min=a[i][0]; v[i][0]=min;
for(k=0; k<=3; k++)
{
if (min>a[i][k])
{
ni=i;nk=k; min=a[i][k]; }
}
v[ni][nk]=min;
}
/*Определяем макс. элементы в каждом столбце*/
for(k=0; k<=3; k++)
{
max=a[0][k]; c[0][k]=max;
for(i=0; i<=3; i++)
{
if (max<a[i][k])
{
mk=k; mi=i; max=a[i][k];}
}
c[mi][mk]=max;
}
/*Выводим на печать седловые точки*/
for(i=0; i<=3; i++)
{
for(k=0; k<=3; k++)
{
if ((c[i][k]==v[i][k])&&(c[i][k]!=0)&&(v[i][k]!=0))
{ printf("Sedlovoy element %d\t", v[i][k]); }
}
}
getch();
return 0;
}Решение задачи: «Найти седловую точку матрицы»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <locale.h>
#include <time.h>
int main()
{
long i, j, n, k = 0, k1 = 0, max,min, m, v, b;
srand((unsigned)time(NULL));
setlocale(LC_ALL, "rus");
printf("Ââåäèòå n è m: ");
scanf("%d%d",&n,&m);
printf("\n");
long **a = (long**)calloc(n,sizeof(long*));
for(i = 0; i < n; i++)
*(a + i)=(long*)calloc(m,sizeof(long));
for(i = 0; i < n; i++)
for(j = 0 ; j < m; j++)
scanf("%d", &*(*(a + i) + j));
for(i = 0; i < m; i++)
printf((i == 0)?"%6d":"%5d", i);
printf("\n\n");
for(i = 0; i < n; i++)
{printf("%2d", i);
for(j = 0 ; j < m; j++)
{
printf("%4d ",*(*(a + i) + j));
}
printf("\n");
}
printf("\nÐåçóëüòГ*ГІ: \n\n");
for(i = 0; i < n; i++, k = k1 = 0)
{max = min = *(*(a + i) + i);
for(j = 0; j < m; j++)
if(*(*(a + i) + j) >= max)
{max = *(*(a + i) + j);
v = j;}
else
if(*(*(a + i) + j) <= min)
{min = *(*(a + i) + j);
b = j;}
for(int l = 0; l < n; l++)
if(*(*(a + l) + v) >= max)
k++;
for(int l = 0; l < n; l++)
if(*(*(a + l) + b) <= min)
k1++;
if(k == n)
printf("(1) Г€Г*äåêñ ñòðîêè - [ ..%d.. ]\n(1) Г€Г*äåêñ ñòîëáöГ* - [ ..%d.. ]\n", i, v);//ГЌГ*èáîëüøèé Гў ñòðîêå ГЁ Г*Г*èìåГ*ГјГёГЁГ© Гў ñòîëáöå. (1)
if(k1 == n)
printf("(2) Г€Г*äåêñ ñòðîêè - [ ..%d.. ]\n(2) Г€Г*äåêñ ñòîëáöГ* - [ ..%d.. ]\n", i, b); //ГЌГ*èìåГ*ГјГёГЁГ© Гў ñòðîêå ГЁ Г*Г*èáîëüøèé Гў ñòîëáöå. (2)
}
for(i = 0; i < n; i++)
free(*(a + i));
free(a);
system("pause");
}