Форум программистов, компьютерный форум CyberForum.ru

Седловая точка - C++

Восстановить пароль Регистрация
 
Sheffs
1 / 1 / 0
Регистрация: 31.05.2013
Сообщений: 9
02.06.2013, 23:53     Седловая точка #1
Да, я знаю, что подобных тем куча на форуме. Поэтому извиняюсь заранее. Дело в том, что я хочу сам допереть до решения этой задачи. Т.е. хочу разобраться где ошибка и как найти путь истинный

Моя логика в том, что программа находит наименьший элемент в каждой строке и выводит индекс этой точки на экран (назовем эту точку minstr). То же самое она делает и с максимальной точкой в каждой колонке. Это я описал то, что работает в программе (а эту maxst)

Оценив, что значения i индекса minstr равно значению j maxst, я решил этим воспользоватся, дабы найти эту точку.
Пишу: если i от minstr равно j от maxst, то это седловая точка. Но программа пишет, что таких нету.
Рад буду любой подсказке.

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
61
62
63
64
65
66
#include <iostream>
#include <conio.h>
#include <clocale>
using namespace std;
 
int main()
{setlocale(LC_CTYPE,"Russian");
int n,i,j,m,min,max,minstr,maxstolb,stri;
int **A;
cout << "Введите число строк матрицы: ";
cin >> n;
cout << "Введите число столбцов матрицы: ";
cin >> m;
A = new int *[n];
for ( i = 0; i < n; ++i)
    *(A + i) = new int [m];
for ( i = 0; i < n; i++)
    {
        cout << "Введите " << m << " значений для " << i + 1 << " строки через пробел): ";
        for ( j = 0; j < m; j++)
            cin >> A[i][j];
    }
cout<< "\nПолученная матрица:\n";
 
    for ( i = 0; i < n; i++)
    {
        for ( j = 0; j < m; j++)
            cout <<  A[i][j]<< " ";
        cout << '\n';
    }
 
for (i=0;i<n;i++)
{
min=A[i][0];
minstr=0;
stri=0;
for (j=0;j<m;j++)
if (A[i][j]<min)
{
    min=A[i][j];
    minstr=j;
    stri=i;
}
cout<<"номер строки с минимальным значением: "<<minstr<<" "<<stri<<endl;
}
 
for (j=0;j<m;j++)
{
max=A[0][j];
maxstolb=0;
for (i=0;i<n;i++)
if (A[i][j]>max)
{
    min=A[i][j];
    maxstolb=i;
}
cout<<"номер столбца с максимальным значением: "<<maxstolb<<" "<<j<<endl;
}
 
if (minstr=maxstolb)
cout<<"Седлвая точка ["<<stri<<"]"<<"["<<minstr<<"]";
else
cout<<"Седлвых точек не обнаружено";
    _getch();
    return 0; 
}
Добавлено через 4 часа 18 минут
Я понял одну вещь. Два цикла, которые определяют максимум и минимум, выводят последнюю обработанную точку, забывая о предыдущих найденных. Я не понимаю как сделать, что бы из цикла выходили все найденные значения, а потом сравнивались друг с другом.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2013, 23:53     Седловая точка
Посмотрите здесь:

C++ Седловая точка
C++ Седловая точка
Дана точка М(x, y). Присвоить z = 1, если точка принадлежит окружности с радиусом R и центром в точке (a, b) и z = 0 в противном случае. C++
C++ Даны отрезки [a, b] и [c, d] и точка A с координатой х. Определить, принадлежит ли данная точка одному из этих отрезков, обоим или лежит вне их
C++ Седловая точка
Седловая точка C++
C++ Седловая точка в матрице
C++ Массивы. Седловая точка

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 16:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru