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

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

05.01.2023, 14:32. Показов 563. Ответов 3

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста добить решение задачи. Условие: Определить седловые точки матрицы М (9х10). Седловая точка – элемент, являющийся одновременно максимальным в своей строке и минимальным в своем столбце.

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
#define M 4
 
int main() {
    srand(time(NULL));
    int a[N][M], count = 0, Min, Max;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            a[i][j] = rand()%10;
            printf("%4d", a[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    for (int i = 0; i < N; i++)
    {
        int max = a[i][0];
        for (int j = 0; j < M; j++)
        {
            if (a[i][j] > max)
            {
                max = a[i][j];
                Max = max;
            }
        }
        printf("%d\t", max);
    }
    printf("\n");
    for (int j = 0; j < M; j++)
    {
        int min = a[0][j];
        for (int i = 0; i < N; i++)
        {
            if (a[i][j] < min)
            {
                min = a[i][j];
                Min = min;
            }
 
        }
        printf("%d\t", min);
    }
    printf("\n");
    for (int i = 0; i < N; i++)
    {
 
        for (int j = 0; j < M; j++)
        {
            if (Max == Min)
                count++;
        }
    }
    printf("%d", count);
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.01.2023, 14:32
Ответы с готовыми решениями:

Найти седловые точки матрицы
Требуется найти седловые точки #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; #include&lt;stdlib.h&gt; void main() { int...

Найти седловые точки матрицы
#include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #define N 4 #define M 3 int main() { int i,j,max,min; int A = { { 0, 2, -3}, ...

Найти седловые точки матрицы
Помогите плз Найти седловые точки матрицы ( седловая точка - элемент, который является минимальным в строке и максимальным в столбце ). ...

3
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
05.01.2023, 16:07
Лучший ответ Сообщение было отмечено Boiycha как решение

Решение

Я б заплатил бы звонкой монетой памятью за отсутствие лишнего кода:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
  int a[M][N], mx[M], mn[N];
  // ...
  for (int i=M; i-->0;) {  // построчные максимумы
    mx[i]=a[i][0]; for (int j=N; j-->1) if (mx[i]<a[i][j]) mx[i]=a[i][j];
  }
  for (int j=N; j-->0;) {  // постолбцовые минимумы
    mn[j]=a[0][j]; for (int i=M; i-->1) if (mn[j]>a[i][j]) mn[j]=a[i][j];
  }
  printf("Седловые точки:\n");
  for (int i=M; i-->0;) for (int j=N; j-->0;)
    if (a[i][j]==mx[i] && a[i][j]==mn[j])
      printf("  M[%d, %d] = %d\n",i,j,a[i][j]);
  printf("---\n");
Добавлено через 17 минут
Ну или компромисс, чуть меньше памяти, чуть больше кода:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  int a[M][N], mn[N];
  srand(time(0));
  for (int i=M; i-->0;) for (int j=N; j-->0;) a[i][j]=rand()%10;
  printf("M =\n");
  for (int i=0; i<M; ++i) {
    for (int j=0; j<N; ++j) printf("%4d",a[i][j]); printf("\n");
  }
  for (int j=N; j-->0;) {  // постолбцовые минимумы
    mn[j]=a[0][j]; for (int i=M; i-->1) if (mn[j]>a[i][j]) mn[j]=a[i][j];
  }
  printf("Седловые точки:\n");
  for (int i=M; i-->0;) {
    int mx=a[i][0]; for (int j=N; j-->1) if (mx<a[i][j]) mx=a[i][j];
    for (int j=N; j-->0;)
      if (a[i][j]==mx && a[i][j]==mn[j])
        printf("  M[%d, %d] = %d\n",i,j,a[i][j]);
  }
  printf("---\n");
0
0 / 0 / 0
Регистрация: 17.11.2022
Сообщений: 76
06.01.2023, 08:17  [ТС]
Вот такой еще вариант появился:

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
#include <stdio.h>
#include <locale.h>
#define N 4
#define M 5
 
int main()
{
    setlocale(LC_ALL, "Rus");
    double matrix[N][M];
    int i, j, u, max_ind, min_ind, counter = 0;
    printf("Введите матрицу:\n");
    for (i = 0; i < N; i++)
        for (j = 0; j < M; j++) scanf("%lf", matrix[i] + j);
 
    printf("Седловые точки:\n");
    for(i = 0; i < N; i++){
        max_ind = 0;
        counter = 1;
        for (j = 1; j < M; j++){
            if (matrix[i][j] > matrix[i][max_ind]){
                max_ind = j;
                counter = 1;
            }else if (matrix[i][j] == matrix[i][max_ind])
                counter++;
        }
        if (counter == 1){
            min_ind = 0;
            counter = 1;
            for (u = 1; u < N; u++){
                if (matrix[u][max_ind] < matrix[min_ind][max_ind]){
                    min_ind = u;
                    counter = 1;
                }else if (matrix[u][max_ind] == matrix[min_ind][max_ind]) counter++;
            }
            if (counter == 1){
                if (min_ind == i){
                    printf("(%d, %d)", min_ind+1, max_ind+1);
                }
            }
        }
    }
    return 0;
}
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
06.01.2023, 10:07
С индексом не пройдет теста, когда минимум или максимум неуникальны

Добавлено через 4 минуты
А раз все равно нужно значение минимума или максимума, то смысла плясать вокруг их индексов нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.01.2023, 10:07
Помогаю со студенческими работами здесь

Найти все седловые точки матрицы
Для матрицы m на n вывести на экран все седловые точки. Элемент матрицы называется седловой точкой, если он является наименьшим в своей...

Найти все седловые точки матрицы
Найти все седловые точки матрицы A(n×m). Матрица имеет седловую точку ij a , если ij a является минимальным элементом в i −ой...

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

Седловые точки матрицы
Доброго времени суток, помогите пожалуйста реализовать данную программу, несколько дней все пытаюсь сделать все никак. Найти номера строк...

Определить седловые точки матрицы
Определить седловые точки матрицы М (9х10). Седловая точка – элемент, являющийся одновременно максимальным в своей строке и минимальным в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru