Напечатать индексы всех седловых точек - C (СИ)
Формулировка задачи:
Добрый день! Я заблудился в коде. Не могу найти среди скобочек и всяких %d ошибку. Дана матрица 6х8 Напечатать индексы всех седловых точек. Программа проходит стадию вывода на экран самой матрицы, но дальше упорно не работает. Help me! Please!
// 7_1.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <locale.h>
void main()
{
const int n=8,m=6;
int mas[n][m];
int i,j,k,speedi,speedj,max,h,l;
bool flag;
setlocale(LC_ALL,"RUSSIAN");
printf("Введите матрицу 6x8\n");
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
printf("MAS[%d,%d]\n",i+1,j+1);
scanf_s("%d",&mas[i][j]);
}
}
printf("Полученная матрица:\n");
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
printf("%3.1d ",mas[i][j]);
}
printf(" \n");
}
h=0;
for (i=0;i<n;i++)
{
max=mas[i][1];
speedi=i;
speedj=1;
for (j=2;j<m;j++)
{
if (mas[i][j]<max)
{
max=mas[i][j];
speedi=i;
speedj=j;
}}
k=1;
flag=true;
do
{
if (mas[k,speedj>max])
{
flag=false;
k++;
}
}
while ((k>n)||(flag=false));
if (flag)
{
printf("Седловая точка S[%d,%d]",speedi,speedj);
h++;
}
if (h=0)
{
printf("Седловых точек нет!");
}
}
_getch();
}Решение задачи: «Напечатать индексы всех седловых точек»
textual
Листинг программы
#include <stdio.h>
#include <locale.h>
#define pillar 3
#define line 5
int main(){
setlocale(LC_ALL, "rus");
int array_a[pillar][line]; //Двумерный массив
int i, j, m, k; //Счетчики
int max; //Максимальный элемент в столбце
int max_i = 0; //Номер строки max
/*Ввод элементов матрицы*/
printf("Введите элементы массива: \n");
for(i = 0; i < pillar; i++){
for(j = 0; j < line; j++){
scanf("%d", &array_a[i][j]);
}
}
/*Поиск седловой точки*/
for(j = 0; j < line; j++){
max = array_a[0][j];
/*Поиск максимального элемента в столбце*/
for(i = 1; i < pillar; i++){
if(max < array_a[i][j]){
max = array_a[i][j];
max_i = i;
}
}
/*Проверка равных максимальных значений в столбце*/
for(i = 0; i < pillar; i++){
m = 0;
if(max == array_a[i][j]){
/*Проверка условия седловой точки*/
for(k = 0; k < line; k++){
if(max <= array_a[i][k]){
m++;
}
else
break;
}
/*Вывод седловой точки*/
if(m == 5)
printf("\nСедловая точка: %d\t Строка: %d\t Столбец: %d\t\n", max, i+1, j+1);
}
}
}
return 0;
}