1 / 1 / 0
Регистрация: 11.11.2011
Сообщений: 49
1

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

29.03.2012, 16:59. Показов 830. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Номер строк и столбцов всех седловых точек матрицы.

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, не могу понять что делаю не так... подскажите, буду признателен!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2012, 16:59
Ответы с готовыми решениями:

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

Найти номера строк и столбцов всех Седловых точек матрицы
Дана целочисленная прямоугольная матрица. Определить: 1.) сумму элементов в тех строках, которые...

Определить номера строк и столбцов всех седловых точек матрицы
Помогите немогу решить контрольную по с++ ,задание такое Дана целочисленная прямоугольная...

Определить номера строк и столбцов всех седловых точек матрицы
Ребята, помогите написать листинг, я в этом мало понимаю, мне на практику очень надо. Через два дня...

3
54 / 54 / 10
Регистрация: 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;
                    }
                }
}
0
1 / 1 / 0
Регистрация: 11.11.2011
Сообщений: 49
29.03.2012, 21:52  [ТС] 3
а можете сказать где ошибка в моей программе?)
0
54 / 54 / 10
Регистрация: 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 скобка тоже не по месту стоит
1
30.03.2012, 00:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2012, 00:18
Помогаю со студенческими работами здесь

Определить номера строк и столбцов всех седловых точек матрицы
Здравствуйте! Помогите пожалуйста! Дана целочисленная прямоугольная матрица. Определить:...

Определить номера строк и столбцов всех седловых точек матрицы
помогите пожалуйста! определить номера строк и столбцов всех седловых точек матрицы. (матрица А...

Определить номера строк и столбцов всех седловых точек матрицы
Помогите пожалуйста решить задачи: Третья задача - Дана целочисленная прямоугольная матрица....

Дана целочисленная прямоугольная матрица.Определить номера строк и столбцов всех седловых точек матрицы
Вот начал писать, а дальше не знаю что писать.помогите #include &quot;stdafx.h&quot; #include&lt;iostream&gt;...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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