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

Подскажите где ошибка (номер строк и столбцов всех седловых точек матрицы) - C++

Восстановить пароль Регистрация
 
123456кам
1 / 1 / 0
Регистрация: 11.11.2011
Сообщений: 49
29.03.2012, 16:59     Подскажите где ошибка (номер строк и столбцов всех седловых точек матрицы) #1
Номер строк и столбцов всех седловых точек матрицы.

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
#include <iostream.h>
 
void main(void)
{
int const n = 3, m = 3;
int mas[n][m]; 
int i,j;
cout << "Vvedite matricy" << endl;
for (i = 0; i < n; i++)
    for (j = 0; j < m; j++)
    {
        cout << "Vvedite element mas["<<i+1<<"]["<<j+1<<"]:";
        cin >> mas[i][j];
    }
        for(i=0; i<n; i++)
        {
            int min = mas[0][0];
            int imin = 0;
 
            for(j=0; j<m; j++)
            {
                if(mas[i][j] < min)
                {
                min=mas[i][j];
                imin = i;
                }
            
    j = m - 1;
 
    for(int k=0; k<m; k++)
    {
        int max = mas[imin][0];
        int jmax = 0;
 
        {       if(mas[imin][k] > max)
 
            max=mas[imin][k];
            jmax=k;
        }
    
            if(max==min)
            cout<< "i=" << imin << "  " << "j=" << jmax << "  " << "sedlovay tochka = "<< mas[imin][jmax] << endl;
            else
            cout << "sedlovoi tochki net" << endl;
            break;
 
            }
        }
    }
}
Ввожу матрицу -4 1 2 -4 1 2 1 2 3, ответ 1 в 2 строке 0 столбце, но выдает -4 -4 -4, не могу понять что делаю не так... подскажите, буду признателен!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2012, 16:59     Подскажите где ошибка (номер строк и столбцов всех седловых точек матрицы)
Посмотрите здесь:

C++ Номера строк и столбцов всех седловых точек матрицы
Найти номера строк и столбцов всех Седловых точек матрицы C++
Найти координаты всех седловых точек матрицы C++
C++ Определить номера строк и столбцов всех седловых точек матрицы
Вывести номера всех седловых точек матрицы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
denys_l
51 / 51 / 4
Регистрация: 26.09.2011
Сообщений: 186
29.03.2012, 21:30     Подскажите где ошибка (номер строк и столбцов всех седловых точек матрицы) #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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
 using namespace std;
 
 
int main()
{
int const n = 3, m = 3;
int mas[n][m];
int i,j;
cout << "Vvedite matricy" << endl;
for (i = 0; i < n; i++)
        for (j = 0; j < m; j++)
        {
                cout << "Vvedite element mas["<<i+1<<"]["<<j+1<<"]:";
                cin >> mas[i][j];
        }
 
 
                for(i=0; i<n; i++)
                {
                    for(j=0; j<m; j++)
                    {
                        bool flag = false;
                        //берем каждый элемент массива
                        int min = mas[i][j];
                        int imin = i,
                            jmin = j;
                        //и проверяем является ли он минимальным в строке
                        for(int j=0; j<m; j++)
                            if(mas[i][j] < min)
                            {
                                flag = true;
                                break;
                            }
                        if(flag) break;
                        else
                        {
                            for(int i=0; i<n; i++) // а затем максимальным в столбце
                                if(mas[i][jmin] > min)
                                {
                                   flag = true;
                                   break;
                                }
                        }//если все хорошо, выводим точку
                        if(!flag) cout << "element: " << min << " - row: "
                            << imin << "; " << "col: " << jmin << endl;
                    }
                }
}
123456кам
1 / 1 / 0
Регистрация: 11.11.2011
Сообщений: 49
29.03.2012, 21:52  [ТС]     Подскажите где ошибка (номер строк и столбцов всех седловых точек матрицы) #3
а можете сказать где ошибка в моей программе?)
denys_l
51 / 51 / 4
Регистрация: 26.09.2011
Сообщений: 186
30.03.2012, 00:18     Подскажите где ошибка (номер строк и столбцов всех седловых точек матрицы) #4
Твой правленный...
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
#include <iostream>
using namespace std;
 
void main(void)
{
int const n = 3, m = 3;
int mas[n][m] = {{-4,1,2},{-4,1,2},{1,2,3}};
int i,j;
cout << "Vvedite matricy" << endl;
for (i = 0; i < n; i++)
{
   for (j = 0; j < m; j++)
   {
       cout << " " << mas[i][j];
   }
   cout << endl;
}
        for(i=0; i<n; i++)
        {
            int min = mas[i][0];
            int imin = 0; 
            for(j=0; j<m; j++)            
                if(mas[i][j] < min)
                {
                min=mas[i][j];
                imin = i;
                }
           
   // j = m - 1;
        int max = mas[imin][0];
        int jmax = 0;
    for(int k=0; k<m; k++) 
        if(mas[k][imin] > max)
        {
   
            max=mas[k][imin];
            jmax=k;
        }
   
            if(max==min)
            cout<< "i=" << jmax << "  " << "j=" << imin << "  " << "sedlovay tochka = "<< mas[jmax][imin] << endl;
           
           
 
           }
        
    }
Добавлено через 10 минут
C++
1
2
3
4
5
            if(max==min)
            cout<< "i=" << imin << "  " << "j=" << jmax << "  " << "sedlovay tochka = "<< mas[imin][jmax] << endl;
            else
            cout << "sedlovoi tochki net" << endl;
            break;
Получается, что при первом проходе, если max не равен min выводится сообщение на экран, что седловой точки и выходим из цикла
C++
1
for(i=0; i<n; i++)
Хотя у нас есть ещё две строки
Потом, раньше
C++
1
j = m - 1;
бесполезная запись, так и не понял зачем
C++
1
2
3
4
5
6
7
for(j=0; j<m; j++)
            {
                if(mas[i][j] < min)
                {
                min=mas[i][j];
                imin = i;
                }
Это по видимому поиск минимума. По хорошему мы должны пройтись по всем элементам строки прежде, чем идти дальше. А тут мы делаем один проход и потом куда-то уходим, я так и не смог отследить как оно потом работает. т.е. ота скобка во второй строке ненужна.
Тоже самое здесь. Открывающая фигурная скобка не нужна
C++
1
2
3
4
5
6
for(int k=0; k<m; k++)
    {
        int max = mas[imin][0];
        int jmax = 0;
 
        {      if(mas[imin][k] > max)
Соответстенно и закрывающие надо убирать... и перед if скобка тоже не по месту стоит
Yandex
Объявления
30.03.2012, 00:18     Подскажите где ошибка (номер строк и столбцов всех седловых точек матрицы)
Ответ Создать тему
Опции темы

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