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

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

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

Найти элемент - C++

22.06.2012, 11:18. Просмотров 608. Ответов 6
Метки нет (Все метки)

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

Добавлено через 51 минуту
у меня получается как-то так вот
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
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<iomanip.h>
int main()
{
    double **a;
    int i,j,n,m,q=1,p=0;
    cout<<"Vvedite razmer: n, m"<<endl;
    cin>>n>>m;
    a=new double*[n];
    for(i=0;i<n;i++)
        a[i]=new double[m];
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
        {
            cout<<"a]"<<i<<"]["<<j<<"]: ";
            cin>>a[i][j];
        }
        cout<<"Ishodnyj massiv a:"<<endl;
        for(i=0;i<n;i++)
        {
            for(j=0;j<m;j++)
                cout<<setw(9)<<a[i][j]<<" ";
            cout<<endl;
        }
 
    for(i=0;i<n;i++)
        {
          for(j=0;j<m;j++)
              if(a[i][j]>a[i][j-1])
                  cout<<a[i][j];
    }
 
 
    for(i=0;i<n;i++)
        delete[] a[i];
    delete[]a;
    a=NULL;
 getch();
 return 0;
}
но элемент почему-то не находит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2012, 11:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти элемент (C++):

Строки. Как найти в слове первый элемент? Второй элемент, последний элемент? - C++
как найти в слове первый элемент?Второй элемент,последний элемент.С помощью каких операторов это делается??

Найти минимальный элемент в каждой строке и из ний найти максимальный элемент - C++
надо найти минимальный элемент в каждой строке и из ний найти максимальный элемент вот мой код #include&lt;conio.h&gt; ...

Найти самый наименьший элемент в матрице, и найти сумму столбца который стоит этот наименьший найденный элемент - C++
Найти самый наименьший элемент в матрице, и найти сумму столбца который стоит этот наименьший найденный элемент Помогите ребята нужна ваша...

Найти максимальный элемент и заменить им первый элемент строки в двумерном массиве - C++
В матрице X(4,5) в каждой строке найти максимальный элемент и заменить им первый элемент строки. Предварительно первый элемент строки...

В одномерном целочисленном массиве найти минимальные элемент m и максимальный элемент М - C++
В одномерном целочисленном массиве найти минимальные элемент m и максимальный элемент М. Вывести в окно Memo все целые числа из интервала...

Найти в массиве максимальный элемент и минимальный элемент, и поменять их местами - C++
Привет) помогите пожалуйста решить задачу. Дан целочисленный массив из m элементов. Найдите в нем максимальный элемент и минимальный...

6
Ksan
27 / 27 / 0
Регистрация: 02.11.2010
Сообщений: 370
22.06.2012, 11:34 #2
А если слева чисел нету?
a[0][0]? То оно особое?
0
David Sylva
1287 / 949 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
22.06.2012, 11:36 #3
Вопрос а как чему относить первый и последний элемент? если после первого элемента все остальные в строке больше него?
0
Ksan
27 / 27 / 0
Регистрация: 02.11.2010
Сообщений: 370
22.06.2012, 11:40 #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
73
74
75
76
77
78
79
80
81
int main(int argc, char *argv[])
{
        // ââîä ñòðîê, ñòîëáöîâ
        int N, M;
        cout << "N = "; cin >> N;
        cout << "M = "; cin >> M;
        
        // ñîçäГ*Г*ГЁГҐ Г¬Г*òðèöû
        double **m;
        m = new double* [N];
        for(int i=0; i<N; ++i)
        {
                m[i] = new double [M];
        }
        
        
        // ââîä Г·ГЁГ±ГҐГ«
        
        for(int i=0; i<N; ++i)
        {
                for(int j=0; j<M; ++j)
                {
                        cout << "m[" << i << "][" << j << "] = ";
                        cin >> m[i][j];
                }
        }
        
        
        // Г*ëãîðèòì ïåðåáîðГ*
        // ГЇГіГ±ГІГј M - ñòîáöû
        
        cout << "perfect numbers:\n\n";
        
        bool b;
        for(int j=0; j<M; ++j)
        {
                for(int i = 1; i<N-1; ++i)
                {
                        b = true;
                        // äâèãГ*åìñÿ âëåâî
                        for(int k=i-1; k>=0; --k)
                        {
                                if(m[k][j] >= m[i][j])
                                {
                                        b = false;
                                        break;
                                }
                        }
                        
                        if(! b) continue;
                        
                        // äâèåìñÿ ГўГЇГ°Г*ГўГ®
                        for(int k=i+1; k<N; ++k)
                        {
                                if(m[k][j] <= m[i][j])
                                {
                                        b = false;
                                        break;
                                }
                        }
                        
                        if(b)
                        {
                                cout << "m[" << i << "][" << j << "] = " << m[i][j] << endl;
                        }
                        
                }
        }
        
        
        
        // ГіГ¤Г*ëåГ*ГЁГҐ Г¬Г*òðèöû
        for(int i=0; i<N; ++i)
        {
                delete [] m[i];
        }
        delete [] m;
        
        
      return 0;
}
1
nelian
0 / 0 / 0
Регистрация: 01.06.2012
Сообщений: 18
22.06.2012, 11:42  [ТС] #5
в условии не сказано если чисел нет слева, наверное особое должно быть в середине
0
David Sylva
1287 / 949 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
22.06.2012, 11:43 #6
Мой вариант первый и последний элемент априори не особенные
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
#include <iostream> 
#include <ctime> 
#include <iomanip>
#include <cstdlib> 
using namespace std; 
 
int main() 
{   
    setlocale(0, "rus");
    srand((unsigned) time(0)); 
    const int N = 5; 
    const int M = 5; 
    int array[N][M]  = { 0, 1, 6, 7, 8, 
                        5, 6, 7, 8, 9, 
                        1, 2, 4, 5, 6, 
                        7, 8, 2, 2, 2, 
                        1, 2, 3, 4, 5 };
 
 
    int i, j; 
    int count = 0; // счётчик 
 
    
    /*for ( i = 0; i < N; i++) 
        for ( j = 0; j < M; j++) 
            array[i][j] = rand() % 10;*/
 
    for ( i = 0; i < N; i++) 
        for ( j = 0; j < M; j++) 
        { 
            if( j % M == 0) cout << endl; 
            cout << setw(3) << array[i][j]; // выводм исходную матрицу
        } 
 
        cout << endl; 
 
        int n = 1; // начинаем проверять со второго элемента в строке
        for ( i = 0; i < N; i++) 
        {
            for ( j = 0; j < M; j++)  
            {
                if( n == j)  // когда сам с собой
                   continue;  
                if(n > j)  // стоящие слева
                {
                if(array[i][n] > array[i][j]) 
                    count++; // увеличиваем счётчик
                }
                
                if( n < j) // когда справа
                { 
                    if(array[i][n] < array[i][j]) 
                        count++; 
                }  
 
            }   
                
                if( count == M-1) // если счётчик равен количество элементов - 1
                    cout << endl << "Specilal " << array[i][n]  << " ["<< i << "]" << "[" << n<<"]" << endl;  
                count = 0;
                n++; 
                if( n == M-1) break; // последний элемент
        }
            
         cout << endl << endl; 
 
}
0
nelian
0 / 0 / 0
Регистрация: 01.06.2012
Сообщений: 18
22.06.2012, 12:42  [ТС] #7
ksan очень помог! осталось разобраться с bool

Добавлено через 34 минуты
David Sylva, выводит только первое особое в строке
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2012, 12:42
Привет! Вот еще темы с ответами:

Найти максимальный элемент массива и вывести последний четный элемент - C++
Короче нужно чтобы програма нашла максимальный елемент масива и выводила на екран последное четное число масива #include&lt;iostream&gt; ...

Найти минимальный элемент последовательности из 10 чисел, парный элемент которой вычисляется по формуле - C++
Найти минимальный элемент последовательности из 10 чисел, четный элемент которой вычисляется по формуле i + 5.8, а нечетный: i - 2.0....

Найти минимальный элемент каждой строки и максимальный элемент каждого столбца матрицы - C++
как найти минимальный элемент каждой строки и максимальный элемент каждого столбца матрицы на с++ Добавлено через 6 минут ...

Создать новый массив, найти наименьший элемент 3-го столбца, поменять местами наименьший элемент 3-го столбца и элемент a23 - C++
1 Создать новый одномерный массив , каждый элемент которого равен среднему арифметическому элементов соответствующей строки данной матрицы....


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
22.06.2012, 12:42
Ответ Создать тему
Опции темы

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