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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
tatzah
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 3
#1

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

03.12.2012, 06:42. Просмотров 679. Ответов 5
Метки нет (Все метки)

написала код который должен считать 1) сумму элементов тех строк матрицы, в которых хотя бы один элемент отрицательный, 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
71
72
73
74
75
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <iomanip>
 
using namespace std;
int main()
{
int n,m,found=0,max[100][3], min[100][3];
cin >> n>> m; //ввод размерности массива
int i,j;
int **a=new int*[n]; 
for(i=0;i<n;i++) a[i]=new int[m];
  for(i=0;i<n;i++) 
  for(j=0;j<m;j++) cin >>a[i][j];   //ввод массива
int flag,summ;   
summ=0;
for(i=0;i<n;i++) 
{
  j=0; flag=0;
  while ((j<m) && (flag==0))
    if (a[i][j]<0) flag=1; else j++;
    if (flag==1)
      for(j=0;j<m;j++)
    {
    summ=summ+a[i][j];
    }
}
 
cout<<summ<<" ";
    //Поиск седловых точек
for (i=0;i<n;i++)
{
    min[i][0]=a[i][0];
    min[i][1]=i;
    min[i][2]=0;
    for (j=1;j<m;j++)
        if(a[i][j]<min[i][0]) 
        {
            min[i][0]=a[i][j];//сам минимум в i-ой строке
            min[i][1]=i; //строка минимума
            min[i][2]=j; //столбец минимума
        }
}
 
for (j=0;j<m;j++)
{
    max[j][0]=a[0][j];
    max[j][0]=0;
    max[j][0]=j;
    for (i=1;i<n;i++)
        if(a[i][j]>max[j][0]) 
        {
            max[j][0]=a[i][j];// сам максимум в j-ом столбце
            max[j][1]=i; //строка максимума
            max[j][2]=j; //столбец максимума
        }
}
for (i=0;i<n;i++)
    for (j=0;j<3;j++)
        cout <<min[i][j]<<" ";
cout <<endl;
for (i=0;i<n;i++)
    for (j=0;j<3;j++)
        cout <<max[i][j]<<" ";
for (i=0;i<n;i++)
    for (j=0;j<3;j++)
        if(min[i][0]==max[j][0] && min[i][1]==max[j][1] && min[i][2]==max[j][2])
        {   cout <<min[i][1]<<max[j][2];
        found++;}
 
     system ("PAUSE");  
return 0;
}
Но когда проверяю работоспособность кода (т.е формирую массивы min в строке и max в столбце "сам элемент", "его номер в строке" и "его номер в столбце" то выходит какая-то ерунда:
например размерность матрицы 3х3
0 -9 2
5 -1 0
1 -3 6
тогда массив min в строках будет такой:
-9 0 1
-1 1 1
-3 2 1
массив max в столбцах у меня получается
5 1 0
1 -858993460 -858993466
6 2 2

Подскажите откуда могли взяться эти большие отрицательные значения, если для других элементов она считает правильно

Добавлено через 6 часов 45 минут
кто-нибудь может помочь?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2012, 06:42     Вывести номера всех седловых точек матрицы
Посмотрите здесь:

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

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

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

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

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

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

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

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

Вывести индексы всех седловых точек заданной матрицы - C++
1) Дана прямоугольная матрица. Вывести индексы всех седловых точек заданной матрицы. Элемент матрицы называется седловой точкой, если он...

Найти и вывести индексы всех седловых точек матрицы - C++
Собствено в чом суть задачи : Дана матрица размером 5х5 в ней нужно следующее : 1)найти суму елементов в тех строках где есть хотя бы...

Найти индексы всех седловых точек заданной матрицы, и вывести их в порядке возрастания - C++
дана матрица целых чисел размером 10*12. Найти индексы всех ее седловых точек. Найденные седловые точки вывести в порядке возрастания. ...

Найти координаты всех седловых точек матрицы - C++
Помогите плз написать прогу: Используя динамический массив. В целочисленной прямоугольной матрице A(mxn) найти: - номер первой из...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
03.12.2012, 07:23     Вывести номера всех седловых точек матрицы #2
Цитата Сообщение от tatzah Посмотреть сообщение
C++
1
2
3
max[j][0]=a[0][j];
 max[j][0]=0;
 max[j][0]=j;
скорее всего тут ошибка так как меняется один и тотже элемент думаю надо было
C++
1
2
3
max[j][0]=a[0][j];
max[j][1]=0;
 max[j][2]=j;
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
03.12.2012, 07:30     Вывести номера всех седловых точек матрицы #3
вот результат, прищлось вывод немног откоректировать чтоб наглядней было
Миниатюры
Вывести номера всех седловых точек матрицы  
tatzah
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 3
04.12.2012, 19:32  [ТС]     Вывести номера всех седловых точек матрицы #4
У меня опять проблема, а если в заданном массиве, в строке ни одна минимальная точка, а например две, то мой код находит только первую, как сделать так что бы находились все точки.
например
Размерность массива 5х6
2 1 3 5 1 4
-7 0 -6 4 -1 2
4 1 3 2 1 1
-3 -2 0 1 -2 2
1 0 0 3 0 9
Тогда получается, что седловыми точками будут точки с координатами 0,1 0,4 2,1 и 2,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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <iomanip>
 
using namespace std;
int main()
{
int n,m,found=0,max[100][3], min[100][3];
cin >> n>> m; //ввод размерности массива
int i,j;
int **a=new int*[n]; 
for(i=0;i<n;i++) a[i]=new int[m];
  for(i=0;i<n;i++) 
  for(j=0;j<m;j++) cin >>a[i][j];   //ввод массива
int flag,summ;   
summ=0;
for(i=0;i<n;i++) 
{
  j=0; flag=0;
  while ((j<m) && (flag==0))
    if (a[i][j]<0) flag=1; else j++;
    if (flag==1)
      for(j=0;j<m;j++)
    {
    summ=summ+a[i][j];
    }
}
 
cout<<summ<<" ";
    //Поиск седловых точек
for (i=0;i<n;i++)
{
    min[i][0]=a[i][0];
    min[i][1]=i;
    min[i][2]=0;
    for (j=1;j<m;j++)
        if(a[i][j]<min[i][0]) 
        {
            min[i][0]=a[i][j];//сам минимум в i-ой строке
            min[i][1]=i; //строка минимума
            min[i][2]=j; //столбец минимума
        }
}
 
for (j=0;j<m;j++)
{
    max[j][0]=a[0][j];
    max[j][1]=0;
    max[j][2]=j;
    for (i=1;i<n;i++)
        if(a[i][j]>max[j][0]) 
        {
            max[j][0]=a[i][j];// сам максимум в j-ом столбце
            max[j][1]=i; //строка максимума
            max[j][2]=j; //столбец максимума
        }
}
for (i=0;i<n;i++)
    for (j=0;j<3;j++)
for (i=0;i<n;i++)
    for (j=0;j<3;j++)
for (i=0;i<n;i++)
    for (j=0;j<3;j++)
        if(min[i][0]==max[j][0] && min[i][1]==max[j][1] && min[i][2]==max[j][2])
        {   cout <<min[i][1]<<max[j][2];
        found++;}
 
     system ("PAUSE");  
return 0;
}
Этот код находит только 0,1 и 2,1
Подскажите, как исправить
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
04.12.2012, 20:16     Вывести номера всех седловых точек матрицы #5
ну чтоб вам помочь надо понимать алгоритм, и что такое эти седловые точки)
tatzah
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 3
04.12.2012, 21:07  [ТС]     Вывести номера всех седловых точек матрицы #6
седловая точка: минимальная в строке и максимальная в столбце
Yandex
Объявления
04.12.2012, 21:07     Вывести номера всех седловых точек матрицы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru