Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 15.09.2018
Сообщений: 51
1

Создать функцию для подсчета локальных минимумов

20.09.2018, 20:52. Показов 832. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно подсчитать количество локальных минимумов(локальный минимум-это элемент матрицы,который меньше всех его соседов сверху,снизу,справа,слева,и по диагонали во всех направлениях) заданной матрицы размером 10*10. Найти сумму модулей элементов расположенных выше главной диагонали. Нужно с помощью функции оформить
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
#include<iostream>
#include<cmath>
#include<cstdlib>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "ru");
     int n = 10;
    int arr[10][10] = { 
    {-2, 0, 4, 7, -1, 8, 0, 9, 6, -8},
    {0, 5, 2, 0, -3, 4, 0, -3, 4, 1},
    {7, -5, 6, 5, 1 ,2 ,-3 ,4 ,-3 ,8 },
    {0, 1, 4, 3, -2, 1, 2, 4, -7, 5},
    {3, 0, -4, 0, 0, -6, 9 ,0, 6, 8},
    {9, -7, 7, 1, -6, 2, 3, 1, -8, 0},
    {1, -5, 9, 0 ,0, -2, 1, -1, 0, 10},
    {-1, 2, 0, 3, 6, -7, -4, 3, 1, 1},
    {0, 1, 5, -5, -5, 4, 5, 0, 2, 1},
    {0, 3, -2, -6, -8, 3, 2, 1, 0, -1}
    };
    int locmin = 0, i, j, sum = 0;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (i == 0 || (arr[i][j] < arr[i - 1][j]))
                if (i == 9 || (arr[i][j] < arr[i + 1][j]))
                    if (j == 0 || (arr[i][j] < arr[i][j - 1]))
                        if (j == 9 || (arr[i][j] < arr[i][j + 1]))
                        {
                            locmin++;
                        }
        }
    }
    
    cout << locmin << endl;
    cout << endl;
    /*for (i = 0; i < n; i++)
    {
        for (j = i + 1; j < n; j++)
        {
            sum += abs(arr[i][j]);
        }
    }
    cout << sum << endl;*/
    system("pause");
    return 0;
}
Ответ должен быть количество минимумов 10
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.09.2018, 20:52
Ответы с готовыми решениями:

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

Разработать шаблонный класс для нахождения локальных максимумов и минимумов в массиве
Помогите пожалуйста. Необходимо найти количество абсолютных и локальных минимумов и максимумов...

создать функцию для подсчета от 0 до number с методом setInterval
Create function printNumbersInterval(number, time) for show result in console from 0 to number...

Создать файл целых чисел, определить суммы чисел до локальных минимумов, записав их в новый файл
Локальным минимумом является число, у которого соседние значения слева и справа будут больше его....

3
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
20.09.2018, 21:25 2
Цитата Сообщение от Дарья1907 Посмотреть сообщение
и по диагонали
про это забыли.
0
5 / 18 / 6
Регистрация: 15.10.2017
Сообщений: 161
20.09.2018, 21:33 3
Цитата Сообщение от Дарья1907 Посмотреть сообщение
который меньше всех его соседов сверху,снизу,справа,слева,и по диагонали во всех направлениях)
Вам нужно ферзя написать. Если в шахматы играете вот это оно и есть.
Это примерно вот так должно быть. То есть кину вам код ферзя что бы была ясна мысль. Куда он ходит там и считайте свои элементы.
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
for (int i = 0; i < str; i++) {
        for (int j = 0; j < column; j++) {
            //------------------------------------------------------------
            if (i == StringUser || j == ColumnUser) { // Vertical + horizontal 
 
                chess[i][j] = 'Y'; // attack
            }
            //------------------------------------------------------------
            //QUEEN diaganally
            int storage = 0; // The queen on the right is diagonally
            bool check = true;
            bool check2 = false;
            for (int i = 0; i < str; i++) {
                for (int j = 0; j < column; j++) {
                    if (i == StringUser && j == ColumnUser && check) {
                        storage = i + j;
                        i = 0;
                        j = 0;
                        check = false;
                        check2 = true;
                    }
                    if (i + j == storage && check2) { // right is diagonally 
                        chess[i][j] = 'Y'; // attack
                    }
                }
 
            }
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
21.09.2018, 08:35 4
Цитата Сообщение от Terabiterr Посмотреть сообщение
Вам нужно ферзя написать.
Я бы сказал - Короля.
Цитата Сообщение от Дарья1907 Посмотреть сообщение
всех его соседов сверху,снизу,справа,слева,и по диагонали во всех направлениях
0
21.09.2018, 08:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2018, 08:35
Помогаю со студенческими работами здесь

Максимум из локальных минимумов.
Дан массив размера N. Найти максимальное из его локальных минимумов че то не получается( если не...

Поиск локальных минимумов.
uses crt; type Matr=arrayof integer; var a:Matr; i,j,k:integer; function...

Поиск Локальных минимумов
Я написал прогу но она выдаёт ошибку.помогите исправить. program rgz_matr; uses crt; type...

Поиск локальных минимумов
пожалуйста, нужно пояснение к чужому коду, строки 10-17 2.2 ЛИСТИНГ ПРОГРАММЫ #include...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru