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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти количество столбцов матрицы, содержащих хотя бы один нулевой элемент http://www.cyberforum.ru/cpp-beginners/thread717024.html
Помогите пожалуйста написать программу, буду признательна и благодарна. Дана целочисленная прямоугольная матрица. Определить: 1.) количество столбцов, содержащих хотя бы один нулевой элемент; 2.) номер строки, в которой находится самая длинная серия одинаковых элементов.
C++ отредактивароть код Помогите пожалуйста, нужно что бы программа правильно заработала #include "stdafx.h" #include <locale> #include "time.h" #include "math.h" #include "stdlib.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv) http://www.cyberforum.ru/cpp-beginners/thread717012.html
Функция (объяснить) C++
Здраствуйте помогите пожалуйста разобраться в функции Не пойму, мы передаём в функцию символ и массив символов, i- счётчик, по которому мы движемся до конца строки если элемент массива совпадаем с переданным символом -> выходим и возращаем i ? или просто выходим из функции? int SearchTerminal(char c,char T) { int i; for (i=0; T !='\0'; i++)
Одномерный массив, найти среднее арифметическое отрицательных элементов C++
подскажите пожалуйста как решить: Дано два массива а (n) и в (n) .Найти среднее арифметическое отрицательных элементов в двух массивах. нужно использовать один цикл.
C++ Ввести фамилию, имя и отчество как одно текстовое данное. Определить длину данного и количество букв «а» в нем http://www.cyberforum.ru/cpp-beginners/thread716991.html
Ввести фамилию, имя и отчество как одно текстовое данное. Определить длину данного и количество букв «а» в нем. Решить задачу двумя способами: 1) используя функции из библиотеки <string.h>; 2) рассматривая введенный текст как массив символов. ЗАДАЧА. Вывести третье слово и количество букв в фамилии.
C++ Матрица (сумма элементов, отличных от нуля) Данная целочисленная квадратная матрица. Определить сумму элементов отличных от нуля. подробнее

Показать сообщение отдельно
tatzah
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 3
04.12.2012, 19:32  [ТС]     Вывести номера всех седловых точек матрицы
У меня опять проблема, а если в заданном массиве, в строке ни одна минимальная точка, а например две, то мой код находит только первую, как сделать так что бы находились все точки.
например
Размерность массива 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
Подскажите, как исправить
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru