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

Найти и вывести индексы всех седловых точек матрицы - C++

Восстановить пароль Регистрация
 
porkey
5 / 5 / 0
Регистрация: 06.01.2013
Сообщений: 26
19.05.2014, 22:39     Найти и вывести индексы всех седловых точек матрицы #1
Собствено в чом суть задачи :
Дана матрица размером 5х5 в ней нужно следующее :
1)найти суму елементов в тех строках где есть хотя бы один отрицательний елемент;
2)найти и вывести индексы (i,j) всех седлових точек матрицы;
1 рвое задание я уже сделал и нашол наброски второго но немогу розобратся где за что там отвечает
прошу обеденить 2 кода в один , буду благодарен.


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
#include<iostream>
#include<conio.h>
using namespace std;
int main ()
{
    int matrix [5][5];
    bool h=false;
    int b=0,m;
    cout << " vvedit elementu" << endl;
    for (int i = 0 ; i < 5 ; i++ ) 
    {
        for (int j = 0 ; j < 5 ; j++)
        {
            cin >> matrix [i][j] ;
        }
    }
    for (int i = 0 ; i < 5 ; i++ ) 
    {
        h=false;
        for (int j = 0 ; j < 5 ; j++)
        {
            if ((matrix[i][j])< 0) 
            {
                m=i;
                h=true;
                  for (int j = 0 ; j < 5 ; j++)
                 {  
                     b=b+matrix[m][j];
                 }
             }
            if (h==true) break;
        }
    }
 
    
    
    
    for (int i = 0 ; i < 5 ; i++ ) 
    {
        
 
 
    cout << "vidpovid =" <<b<<endl;
    
        _getch();
        return(0);
}



и код найдений мною которий находит седловую точку :
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
#include <iostream>
int main()
{
    using namespace std;
    int a[20][20],i,j,n,m;
    int max=0,min=32565,jmin,imax; 
        cout<<"vvedi n:=";
                     cin>>n;
        cout<<"vvedi m:=";
          cin>>m;
        for(i=0; i<n; i++)
          for(j=0; j<m; j++)
          {
          cout<<"a["<<i<<"]["<< j<<"]->";
           cin>>a[i][j];
                         }
         for(i=0; i<n; i++)
          for(j=0; j<m; j++)
           {
              if(a[i][j]<min)
              {
            min=a[i][j];
            jmin=j;
              }
              if(j==m-1)
              {
              for(int k=0; k<m; k++)
            if(a[k][jmin]>max)
            {
                    max=a[k][jmin];
                                   imax=k;
            }
            if(max==min)
                                 cout<<"i="<< imax <<"j:="<< jmin <<"-  >"<<a[imax][jmin]<<endl;
            min=32565;
            max=0;
            }
              }
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2014, 22:39     Найти и вывести индексы всех седловых точек матрицы
Посмотрите здесь:

C++ Номера строк и столбцов всех седловых точек матрицы
Найти номера строк и столбцов всех Седловых точек матрицы C++
Найти координаты всех седловых точек матрицы C++
C++ матризы определить индексы всех ее седловых точек
Вывести номера всех седловых точек матрицы C++
C++ Определить номера строк и столбцов всех седловых точек матрицы
C++ Найти индексы всех седловых точек заданной матрицы, и вывести их в порядке возрастания
C++ Для заданной матрицы напечатать индексы всех ее седловых точек

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lawr
 Аватар для lawr
344 / 238 / 116
Регистрация: 09.05.2014
Сообщений: 727
24.05.2014, 16:57     Найти и вывести индексы всех седловых точек матрицы #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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
using namespace std;
void main()
{
    setlocale(LC_ALL, "Russian"); //подключение проддержки русского языка
    const int size=5; //обьявление размерности массива
    int Ar[size][size]; //обьявление массива
    bool ver; //проверочная переменная
    int i, j, m, n, sum, min, max; //переменные
    cout<<"введите квадратную  матрицу размерности "<<size<<"\n"; //запрос на ввод массива с клавиатуры
    for (i=0; i<size; i++)
        for (j=0; j<size; j++)
            cin>>Ar[i][j]; //считывание введенного массива
    for (i=0; i<size; i++) //для каждой строки
    {
        sum=0; //инициализируем-обнуляем переменную суммы
        ver=false; //по умолчанию считаем что отрицательных элементов в строке нет
        for (j=0; j<size; j++) //для каждого элемента строки
        {
            sum+=Ar[i][j]; //прибавляем его значение к сумме
            if (Ar[i][j]<0) ver=true; //в случае если этот элемент отрицательный меняем значение проверочной переменной
        }
        if (ver==true) //если в строке есть отрицательный элемент
            cout<<"\nсумма элементов строки №"<<i+1<<" равна "<<sum; //выводим сумму элементов строки
    }
    //седловые точки
    for (i=0; i<size; i++)//для каждой строки
    {
        n=0;
        min=Ar[i][n];//минимальным элементом строки считаем 0-й
        
    for (j=1; j<size; j++)//перебираем последующие элементы строки
        {
            if (Ar[i][j]<min) //если элемент меньше минимального
            {
                min=Ar[i][j]; //его значение присваиваецца минимуму
                n=j;//а номер его столбца- искомому номеру
            }
        }
        ver=true; //по умолчанию считаем что найденый элемент является седловой точкой
        max=min; //следовательно его значение является максимальным
        
        for (m=0; m<size; m++) //перебираем все элементы даного столбца
            if (Ar[m][n]>max) //если элемент больше максимального
                ver=false; //следовательно точка не является седловой
        if (ver==true) //если же точка седловая
            cout<<"\nкоординаты седловой точки "<<i+1<<", "<<n+1; //выводим ее координаты
    }
    //аналогично находим седловые точки для столбцов
    for (j=0; j<size; j++)
    {
        min=Ar[0][j];
        m=0;
    for (i=1; i<size; i++)
        {
            if (Ar[i][j]<min) 
            {
                min=Ar[i][j];
                m=i;
            }
        }
        max=min; 
        ver=true;
        for (n=0; n<size; n++)
            if (Ar[m][n]>max)
                ver=false;
        if (ver==true) 
            cout<<"\nкоординаты седловой точки "<<m+1<<", "<<j+1;
    }
}
Yandex
Объявления
24.05.2014, 16:57     Найти и вывести индексы всех седловых точек матрицы
Ответ Создать тему
Опции темы

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