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

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

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

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

15.11.2009, 12:51. Просмотров 312. Ответов 2
Метки нет (Все метки)

Элемент матрицы называется локальным минимумом, если от срого меньше всех имеющихся у него соседей. Посчитать кол-во локалных минимумов заданной матрица 10х10.

Найди сумму модулей элементов, расположенных выше главной диагонали.
(массив задаёт пользователь)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2009, 12:51     Посчитать количество локалных минимумов заданной матрицы
Посмотрите здесь:

Посчитать количество локальных минимумов заданной матрицы - C++
Элемент матрицы называется локальным минимумом, если он строго меньше, всех имеющихся у него соседей. посчитать колличество локальных...

Посчитать количество локальных минимумов в матрице - C++
Элемент двохмерного масива называют локальным минимумом, если он имеет значение ,меньше значений своих соседей. Посчитать количество...

Массив: посчитать количество локальных минимумов - C++
Вот задание: Официальный язык форума - русский, задание перевести

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

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

Посчитать количество квартир на заданной улице - C++
Привет всем, признаюсь честно не*рена непонимаю в массивах. а через 2 дня Экзамен, и надо успеть здать лабороторку. поможете? задание...

Посчитать среднее арифметическое элементов заданной матрицы - C++
День добрый, только на двумерные массивы перешел, Сделал задачу, но чего то не то пальто, подскажите где проблема? За ранее...

Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей.Подсчитать количество локальных минимумов ... - C++
Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей.Подсчитать количество локальных...

Посчитать сумму с заданной точностью eps и указать количество учтенных слагаемых - C++
№1 задано действительные числа x,a,e(epselon)(x!=0,a!=0,e>0). Сделать программу которая считает суму с заданной точностью e(epselon) и...

В заданной строке посчитать количество слов, содержащих только строчные латинские буквы - C++
Здравствуйте. Столкнулся с такой проблемой, что при вводе, например, строки "AAAA aaaa AAAAaaa aaaAAA" она выводит ответ 2 слова, однако...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.11.2009, 14:22     Посчитать количество локалных минимумов заданной матрицы #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
#include <iostream.h>
#include <stdlib.h> 
#include <time.h> 
#define SIZE_N 10
#define SIZE_M 10
int main()
{
    int mas[SIZE_N][SIZE_M], i, j, kol_min= 0;
    srand(time(NULL));
    cout<<"Ishodny massiv"<<endl;
    for(i=0; i<SIZE_N; i++)
    {
        for(j=0; j<SIZE_M; j++)
        {
            mas[i][j]=rand()%(10);
            cout.width(3);
            cout<<mas[i][j];
        }
        cout<<endl;
    }
    cout<<"Lokal minimum: "<<endl;
    for(i=0; i<SIZE_N; i++)
        for(j=0; j<SIZE_N; j++)
        {
            if(mas[i][j]<mas[i-1][j-1] && mas[i][j]<mas[i][j-1] && mas[i][j]<mas[i+1][j-1] && mas[i][j]<mas[i-1][j+1] && mas[i][j]<mas[i][j+1] && mas[i][j]<mas[i+1][j+1] && mas[i][j]<mas[i-1][j] && mas[i][j]<mas[i+1][j] && (i!=0 || i!=SIZE_N-1 || j!=0 || j!=SIZE_M-1))
            {
                cout<<"i= "<<i<<"   j= "<<j<<endl;
                kol_min++;
            }
            if(i==0 && j!=0 && j!=SIZE_M-1 && mas[i][j]<mas[i][j-1] && mas[i][j]<mas[i][j+1] && mas[i][j]<mas[i+1][j-1] && mas[i][j]<mas[i+1][j] && mas[i][j]<mas[i+1][j+1])
            {
                cout<<"i= "<<i<<"   j= "<<j<<endl;
                kol_min++;
            }
            if(i==SIZE_N-1 && j!=0 && j!=SIZE_M-1 && mas[i][j]<mas[i-1][j-1] && mas[i][j]<mas[i-1][j] && mas[i][j]<mas[i-1][j+1] && mas[i][j]<mas[i][j-1] && mas[i][j]<mas[i][j+1])
            {
                cout<<"i= "<<i<<"   j= "<<j<<endl;
                kol_min++;
            }
            if(j==0 && i!=0 && i!=SIZE_N-1 && mas[i][j]<mas[i-1][j] && mas[i][j]<mas[i+1][j] && mas[i][j]<mas[i-1][j+1] && mas[i][j]<mas[i][j+1] && mas[i][j]<mas[i+1][j+1])
            {
                cout<<"i= "<<i<<"   j= "<<j<<endl;
                kol_min++;
            }
            if(j==SIZE_M-1 && i!=0 && i!=SIZE_N-1 && mas[i][j]<mas[i-1][j] && mas[i][j]<mas[i+1][j] && mas[i][j]<mas[i-1][j-1] && mas[i][j]<mas[i][j-1] && mas[i][j]<mas[i+1][j-1])
            {
                cout<<"i= "<<i<<"   j= "<<j<<endl;
                kol_min++;
            }
        }
        if(mas[0][0]<mas[0][1] && mas[0][0]<mas[1][1] && mas[0][0]<mas[1][0])
            {
                cout<<"i= 0   j= 0"<<endl;
                kol_min++;
            }
            if(mas[SIZE_N-1][0]<mas[SIZE_N-2][0] && mas[SIZE_N-1][0]<mas[SIZE_N-1][1] && mas[SIZE_N-1][0]<mas[SIZE_N-2][1])
            {
                cout<<"i= "<<SIZE_N-1<<"   j= 0"<<endl;
                kol_min++;
            }
            if(mas[SIZE_N-1][SIZE_M-1]<mas[SIZE_N-2][SIZE_M-1] && mas[SIZE_N-1][SIZE_M-1]<mas[SIZE_N-1][SIZE_M-2] && mas[SIZE_N-1][SIZE_M-1]<mas[SIZE_N-2][SIZE_M-2])
            {
                cout<<"i= "<<SIZE_N-1<<"   j= "<<SIZE_M-1<<endl;
                kol_min++;
            }
            if(mas[0][SIZE_M-1]<mas[0][SIZE_M-2] && mas[0][SIZE_M-1]<mas[1][SIZE_M-1] && mas[0][SIZE_M-1]<mas[1][SIZE_M-2])
            {
                cout<<"i= 0   j= "<<SIZE_M-1<<endl;
                kol_min++;
            }
        cout<<endl;
        cout<<"Vsego lokalnyh minimumov: "<<kol_min<<endl;  
return 0;
}
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
15.11.2009, 15:40     Посчитать количество локалных минимумов заданной матрицы #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
С использованием циклов, по-моему выглядит намного проще:
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
#include <stdio.h>
#include <conio.h>
#include <system.hpp>
 
#define N 10
#define M 10
 
int main()
{
randomize();
 
    int Mas[N][M];
    int LocalMin = 0;
 
    printf("Ishodny massiv:\n");
 
    for (int i = 0; i < N; i++)
    {
      for (int j = 0; j < M; j++)
      {
        Mas[i][j] = random(10);
        printf("%i ",Mas[i][j]);
      }
      printf("\n");
    }
 
    for (int i = 0; i < N; i++)
    {
       int RowB,RowE;
       if (i==0) RowB = i; else RowB = i-1;
       if ( i==(N-1) ) RowE = i; else RowE = i+1;
 
       for (int j = 0; j < M; j++)
       {
        int ColB,ColE;
        if (j==0) ColB = j; else ColB = j-1;
        if ( j==(M-1) ) ColE = j; else ColE = j+1;
 
        bool bigger = false;
        for (int r = RowB; r <=RowE ; r++)
        {
          for (int c = ColB; c <=ColE ; c++)
          {
             if ( r==i && c==j ) continue;
             if (Mas[i][j]>=Mas[r][c])
                {
                  bigger = true;
                  break;
                }
          }
          if (bigger) break;
        }
        if (!bigger)
        {
         printf("\nMas[%i][%i] = %i is local minimum",i,j,Mas[i][j]);
         LocalMin++;
        }
       }
    }
    printf("\nLocal minimums = %i",LocalMin);
 
    getch();
    return 0;
}
Ответ Создать тему
Опции темы

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