Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 15.10.2018
Сообщений: 9

Найти седловую точку в матрице

15.10.2018, 08:01. Показов 4400. Ответов 14

Студворк — интернет-сервис помощи студентам
С клавиатуры вводится размер матрицы (количество строк и столбцов) и сами
элементы матрицы. Необходима проверка введенных данных. Если в задании
не говорится, что матрица квадратная, то она прямоугольная.
Найти элемент, который является наименьшим в своей строке, но наибольшим в своем
столбце (седловая точка), если такой есть;
Нам нужно найти все максимальные элементы в столбцах, потом наименьшие в строках, занести их в 2 других массива, тогда достаточно в первом найти максимальный, а во втором минимальный и это будет седловая точка. Но я не знаю, как реализовать этот алгоритм на си. Примерно понимаю, но не хватает знаний синтаксиса.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<stdio.h>
#include <locale.h>
#define n 100
#define m 100
 
void main()
{
    int a[n][m],i,j,N,M;
    setlocale(LC_ALL, "RUS");
    printf("Введите кол-во строк:");
    if(scanf("%d",&N)==0)
    {
        printf("Вы ввели не число");
        return;
    }
    
    printf("Введите кол-во столбцов:");
    if(scanf("%d",&M)==0)
    {
        printf("Вы ввели не число");
        return;
    }
    printf("Введите элементы матрицы:\n");
    for(i=0;i<N;i++) //N - строки
        for(j=0;j<M;j++) //M - столбцы
            if(scanf("%d",&a[i][j])==0)
            {
                printf("Вы ввели не число");
                return;
            }
}
Вот начало кода(только ввод), как реализовать сам алгоритм?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.10.2018, 08:01
Ответы с готовыми решениями:

В матрице порядка n найти седловую точку
В матрице порядка n найти седловую точку (элемент максимальный в строке и минимальный в столбце). #include&lt;stdio.h&gt; ...

В заданной матрице найти седловую точку и вернуть ее значение и координаты
В заданной матрице найти седловую точку и вернуть ее значение и координаты (оформит в виде функции). Точка называется седловой, если она...

Найти седловую точку матрицы
Помогите написать программу нахождения седловой точки( то есть нужно в двумерной матрице найти элементы, которые являются наибольшими в...

14
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
15.10.2018, 08:17
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int found=0;
for(i=0;i<N && !found;i++) //N - строки
for(j=0;j<M && !found;j++) //M - столбцы
{
  found=1;
  for(int t=0; t<N && found; t++)
    if (a[t][j]<a[i][j])
      found=0;
  for(int t=0; t<M && found; t++)
    if (a[t][j]>a[i][j])
      found=0;
}
if(found)
 printf("found %d %d", i, j);
0
0 / 0 / 0
Регистрация: 15.10.2018
Сообщений: 9
15.10.2018, 11:27  [ТС]
Kuzia domovenok, не работает и нужно вывести сам элемент, а не его индексы
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
15.10.2018, 11:58
Цитата Сообщение от Nikitonu4 Посмотреть сообщение
Kuzia domovenok, не работает и нужно вывести сам элемент, а не его индексы
и как же зная индексы энтот елемент вывести...


Правка: во втором условии
C
1
2
if (a[i][t]>a[i][j])
                    found = 0;
0
0 / 0 / 0
Регистрация: 15.10.2018
Сообщений: 9
15.10.2018, 15:42  [ТС]
Kuzia domovenok, фишка в том, что если я вывожу элемент, то у меня выводится -8987....... С исправлением все равно выводит не то.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
15.10.2018, 16:30
код показывай
0
0 / 0 / 0
Регистрация: 15.10.2018
Сообщений: 9
16.10.2018, 15:23  [ТС]
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include<stdio.h>
#include <locale.h>
#define n 100
#define m 100
 
void main()
{
    int a[n][m],i,j,N,M,found = 0,t;
    setlocale(LC_ALL, "RUS");
    printf("Введите кол-во строк:");
    if(scanf("%d",&N)==0)
    {
        printf("Вы ввели не число");
        return;
    }
    
    printf("Введите кол-во столбцов:");
    if(scanf("%d",&M)==0)
    {
        printf("Вы ввели не число");
        return;
    }
    printf("Введите элементы матрицы:\n");
    for(i=0;i<N;i++) //N - строки
        for(j=0;j<M;j++) //M - столбцы
            if(scanf("%d",&a[i][j])==0)
            {
                printf("Вы ввели не число");
                return;
            }
    for(i=0;i<N && !found;i++) //N - строки
        for(j=0;j<M && !found;j++) //M - столбцы
        {
            found=1;
            for(t=0; t<N && found; t++)
                if (a[t][j]<a[i][j])
                    found=0;
            for(t=0; t<M && found; t++)
                if (a[i][t]>a[i][j])
                    found = 0;
        }
    if(found)
        printf("found %d %d", i, j);
    else
        printf("Не найдено");
}
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
16.10.2018, 16:10
и чё не так?
0
0 / 0 / 0
Регистрация: 15.10.2018
Сообщений: 9
16.10.2018, 17:35  [ТС]
Kuzia domovenok, так он неправильный результат выводит.... скрин ниже
Миниатюры
Найти седловую точку в матрице  
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
16.10.2018, 18:00
Лучший ответ Сообщение было отмечено Nikitonu4 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    for (i = 0; i<N && !found; i++) //N - строки
        for (j = 0; j<M && !found; j++) //M - столбцы
        {
            found = 1;
            for (t = 0; t<N && found; t++)//проверка столбец
                if (a[t][j]>a[i][j])
                    found = 0;
            for (t = 0; t<M && found; t++)//проверка строка
                if (a[i][t]<a[i][j])
                    found = 0;
        }
    if (found)
        printf("found %d %d", i-1, j-1);
0
0 / 0 / 0
Регистрация: 15.10.2018
Сообщений: 9
16.10.2018, 20:03  [ТС]
Kuzia domovenok, неа
Миниатюры
Найти седловую точку в матрице  
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
16.10.2018, 20:51
Цитата Сообщение от Nikitonu4 Посмотреть сообщение
Найти элемент, который является наименьшим в своей строке, но наибольшим в своем
столбце (седловая точка), если такой есть;
всё правильно - это тройка с координатами 0 0. Ты как считаешь?
0
0 / 0 / 0
Регистрация: 15.10.2018
Сообщений: 9
16.10.2018, 22:30  [ТС]
так должна выводится строка и столбец - 0 0 как то не очень похоже

Добавлено через 4 минуты
Kuzia domovenok, в общем просто же i-1 и j-1 можно заменить на i и j? Тогда все правильно.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
16.10.2018, 23:58
Nikitonu4, ты точно настоящий программист?
0
0 / 0 / 0
Регистрация: 15.10.2018
Сообщений: 9
17.10.2018, 10:28  [ТС]
Kuzia domovenok, такие требования)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.10.2018, 10:28
Помогаю со студенческими работами здесь

Найти седловую точку в матрице
седловая точка- это максимальный элемент в строке и минимальный в столбце, вот мой код, что-то тут явно не так n = int(input('введите...

Найти в матрице седловую точку
Помогите решить задачу: Седловой точкой в матрице называется элемент, являющийся одновременно наибольшим в столбце и наименьшим в строке....

Как найти седловую точку в матрице?
Есть задача: Разработать функцию saddle_point(matrix), которая принимает 1 аргумент -- прямоугольную матрицу целых чисел, заданную в...

Найти седловую точку в матрице. Использование функций
Элемент матрицы является седловой точкой, если он является наименьшим в своей строке и наибольшим в своем столбце (или наоборот: наибольшим...

В матрице размером NxM вывести на экран ее седловую точку
В матрице размером NxM вывести на экран ее седловую точку. (Элемент матрицы называется седловой точкой , если он является наименьшим в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru