Напечатать индексы всех седловых точек - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5
Похожие ответы