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

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

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

Author24 — интернет-сервис помощи студентам
С клавиатуры вводится размер матрицы (количество строк и столбцов) и сами
элементы матрицы. Необходима проверка введенных данных. Если в задании
не говорится, что матрица квадратная, то она прямоугольная.
Найти элемент, который является наименьшим в своей строке, но наибольшим в своем
столбце (седловая точка), если такой есть;
Нам нужно найти все максимальные элементы в столбцах, потом наименьшие в строках, занести их в 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2018, 08:01
Ответы с готовыми решениями:

В матрице порядка n найти седловую точку
В матрице порядка n найти седловую точку (элемент максимальный в строке и минимальный в столбце)....

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

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

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

14
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
15.10.2018, 08:17 2
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  [ТС] 3
Kuzia domovenok, не работает и нужно вывести сам элемент, а не его индексы
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
15.10.2018, 11:58 4
Цитата Сообщение от 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  [ТС] 5
Kuzia domovenok, фишка в том, что если я вывожу элемент, то у меня выводится -8987....... С исправлением все равно выводит не то.
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
15.10.2018, 16:30 6
код показывай
0
0 / 0 / 0
Регистрация: 15.10.2018
Сообщений: 9
16.10.2018, 15:23  [ТС] 7
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
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
16.10.2018, 16:10 8
и чё не так?
0
0 / 0 / 0
Регистрация: 15.10.2018
Сообщений: 9
16.10.2018, 17:35  [ТС] 9
Kuzia domovenok, так он неправильный результат выводит.... скрин ниже
Миниатюры
Найти седловую точку в матрице  
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
16.10.2018, 18:00 10
Лучший ответ Сообщение было отмечено 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  [ТС] 11
Kuzia domovenok, неа
Миниатюры
Найти седловую точку в матрице  
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
16.10.2018, 20:51 12
Цитата Сообщение от Nikitonu4 Посмотреть сообщение
Найти элемент, который является наименьшим в своей строке, но наибольшим в своем
столбце (седловая точка), если такой есть;
всё правильно - это тройка с координатами 0 0. Ты как считаешь?
0
0 / 0 / 0
Регистрация: 15.10.2018
Сообщений: 9
16.10.2018, 22:30  [ТС] 13
так должна выводится строка и столбец - 0 0 как то не очень похоже

Добавлено через 4 минуты
Kuzia domovenok, в общем просто же i-1 и j-1 можно заменить на i и j? Тогда все правильно.
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
16.10.2018, 23:58 14
Nikitonu4, ты точно настоящий программист?
0
0 / 0 / 0
Регистрация: 15.10.2018
Сообщений: 9
17.10.2018, 10:28  [ТС] 15
Kuzia domovenok, такие требования)))
0
17.10.2018, 10:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2018, 10:28
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru