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

седловые точки - C++

Восстановить пароль Регистрация
 
stydent1991
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 156
08.03.2012, 19:38     седловые точки #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
51
52
53
54
55
56
57
58
59
60
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> 
#include <math.h> 
#include <iostream.h> 
 int main()
{
        int x[10][10], min_i[10], max_j[10];
        int m,n,kol=0,                        
         
                k=0,
                i,j;
           clrscr();
           randomize();
               gotoxy(15,4);
           cprintf("laboratornaya rabota po programmirivaniIO");
           getch();
                   clrscr(); 
                   printf("Vvedite kolichestvo strok ");
                scanf("%d",&m);
                printf("Vvedite kolichestvo stolbcov  ");
                scanf("%d",&n);
printf("Vvedite matricu");
 
 
        for (i=0; i<m; i++)
            for (j=0; j<n; j++)
                        {
                                printf("A[%d][%d]= ",i,j);
                                scanf("%d",&(x[i][j]));
                        }
 
 
 
                printf("vveden massiv \n");
 
                for(i=0;i<m;i++)
                {                                       
                        for (j=0;j<n;j++)
                                                {
                                                        if(j==0)
                                                                min_i[i]=x[i][j];
                                                        if(i==0)
                                                                max_j[j]=x[i][j];
                                                        if(min_i[i]>x[i][j])
                                                                min_i[i]=x[i][j];
                                                        if(max_j[j]<x[i][j])
                                                                max_j[j]=x[i][j];
                                printf("%d ",(x[i][j]));
                                                }
                printf ("\n");
                }
                                printf (" sedlov tochki: \n" );
                                for(i=0; i<m; i++)
                                        for(j=0; j<n; j++)
                                                if(x[i][j]==min_i[i] && x[i][j]==max_j[j])
                                                        printf("%d %d\n", i, j);                        
return 0;
 
}
 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2012, 19:38     седловые точки
Посмотрите здесь:

C++ матрица. седловые точки.
Седловые точки C++
C++ Седловые точки
Седловые точки матрицы C++
Седловые точки матрицы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
08.03.2012, 19:52     седловые точки #2
Цитата Сообщение от stydent1991 Посмотреть сообщение
Проверьте пожалуйста правильно ли все.
Есть один нюанс (но может быть для Вас это не так уж и важно):
Этот код будет считать седловой точкой матрицы, если эта точка является минимальной (или одной из минимальных) в своей строке и максимальной (или одной из максимальных в своем столбце).
Т.е. для матрицы
1 2 3
4 5 6
7 7 7
выдаст седловые точки всю нижнюю строку.

Или для матрицы:
1 2 3
1 5 6
1 8 9
выдаст седловые точки весь левый столбец.
stydent1991
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 156
08.03.2012, 20:00  [ТС]     седловые точки #3
спасибо. а можете подсказать где исправить штоб программа могла выводить число только?!
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
08.03.2012, 20:57     седловые точки #4
Цитата Сообщение от stydent1991 Посмотреть сообщение
спасибо. а можете подсказать где исправить штоб программа могла выводить число только?!
В смысле не индексы седловых точек, а сами числа?
Если нужно имнно это, то можно сделать так:
вот это:
Цитата Сообщение от stydent1991 Посмотреть сообщение
C++
1
2
3
4
5
printf (" sedlov tochki: \n" );
 for(i=0; i<m; i++)
 for(j=0; j<n; j++)
 if(x[i][j]==min_i[i] && x[i][j]==max_j[j])
 printf("%d %d\n", i, j);
заменить на:
C++
1
2
3
4
5
 printf (" sedlov tochki: \n" );
 for(i=0; i<m; i++)
     for(j=0; j<n; j++)
         if(x[i][j]==min_i[i] && x[i][j]==max_j[j])
             printf("%d\n", x[i][j]);
stydent1991
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 156
08.03.2012, 21:08  [ТС]     седловые точки #5
Ой не то я написал) конечно индексы именно нужно... спасибо)
stydent1991
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 156
10.03.2012, 23:39  [ТС]     седловые точки #6
скажите пожалуйста где исправить чтобы индексы выводило
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
10.03.2012, 23:53     седловые точки #7
Цитата Сообщение от stydent1991 Посмотреть сообщение
скажите пожалуйста где исправить чтобы индексы выводило
так у Вас в приведенном коде именно индексы и выводятся.
stydent1991
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 156
11.03.2012, 08:23  [ТС]     седловые точки #8
Это да, если элементы в строчке все седловые то выводит весь столб
А как сделать чтоб именно один индекс
Ведь щас только работает при одинаковых числах
1 2 3
4 5 6
7 7 7
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
11.03.2012, 17:24     седловые точки #9
Цитата Сообщение от stydent1991 Посмотреть сообщение
Это да, если элементы в строчке все седловые то выводит весь столб
А как сделать чтоб именно один индекс
Ведь щас только работает при одинаковых числах
1 2 3
4 5 6
7 7 7
Если элементы в строчке все седловые то выводит всю строку, а не столб.
Вам это что ли нужно?:
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> 
#include <math.h> 
#include <iostream.h> 
 int main()
{
        int x[10][10], min_i[10], max_j[10];
        int m,n,kol=0,                        
         
                k=0,
                i,j;
               clrscr();
               randomize();
                       gotoxy(15,4);
               cprintf("laboratornaya rabota po programmirivaniIO");
               getch();
                       clrscr(); 
                               printf("Vvedite kolichestvo strok ");
                scanf("%d",&m);
                printf("Vvedite kolichestvo stolbcov  ");
                scanf("%d",&n);
printf("Vvedite matricu");
 
 
                for (i=0; i<m; i++)
                        for (j=0; j<n; j++)
                        {
                                printf("A[%d][%d]= ",i,j);
                                scanf("%d",&(x[i][j]));
                        }
 
 
 
                printf("vveden massiv \n");
 
                for(i=0;i<m;i++)
                {                                       
                        for (j=0;j<n;j++)
                                                {
                                                        if(j==0)
                                                                min_i[i]=x[i][j];
                                                        if(i==0)
                                                                max_j[j]=x[i][j];
                                                        if(min_i[i]>x[i][j])
                                                                min_i[i]=x[i][j];
                                                        if(max_j[j]<x[i][j])
                                                                max_j[j]=x[i][j];
                                printf("%d ",(x[i][j]));
                                                }
                printf ("\n");
                }
                                printf (" sedlov tochki: \n" );
                                for(i=0; i<m; i++)
                                        for(j=0; j<n; j++)
                                                if(x[i][j]==min_i[i] && x[i][j]==max_j[j])
                                                {
                                                        printf("%d %d\n", i, j);                        
                                                        break;
                                                }
return 0;
 
}
stydent1991
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 156
12.03.2012, 00:15  [ТС]     седловые точки #10
а если не все элементы в строчке или столбце седловые?то как быть?!
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
12.03.2012, 08:09     седловые точки #11
Цитата Сообщение от stydent1991 Посмотреть сообщение
а если не все элементы в строчке или столбце седловые?то как быть?!
Цитата Сообщение от stydent1991 Посмотреть сообщение
Это да, если элементы в строчке все седловые то выводит весь столб
А как сделать чтоб именно один индекс
Ведь щас только работает при одинаковых числах
1 2 3
4 5 6
7 7 7
я уже не понимаю что нужно? Давайте так:

есть матрица:
1 2 3
4 5 6
7 7 7
что нужно выводить?

есть матрица:
1 2 3
1 5 6
1 8 9
что нужно выводить?
stydent1991
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 156
12.03.2012, 15:50  [ТС]     седловые точки #12
весь столбец 111
и строку 777
а может быть такое когда не все числа в столбце(строке) седловые?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2012, 19:00     седловые точки
Еще ссылки по теме:

Определить седловые точки матрицы C++
СЕДЛОВЫЕ точки матрицы( ПОмогите исправить) C++
C++ Найти седловые точки матрицы

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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
12.03.2012, 19:00     седловые точки #13
Цитата Сообщение от stydent1991 Посмотреть сообщение
весь столбец 111
и строку 777
а может быть такое когда не все числа в столбце(строке) седловые?
См пост №2 в этой теме. Ваш первоначальный код именно так и выдает (но не сами числа, а их индексы, и именно Вы и просили выводить именно индексы(см пост №5)).
Насчет вопроса
а может быть такое когда не все числа в столбце(строке) седловые?
ответ: запросто, тогда будут выведены индексы только тех элементов, которые являются седловыми.
Берите Ваш начальный код - судя по Вашим вопросам, этот код подходит Вам на 100% )
Yandex
Объявления
12.03.2012, 19:00     седловые точки
Ответ Создать тему
Опции темы

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