Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 18.09.2017
Сообщений: 7
1

Удалить строку, в которой находится максимальный элемент. Если такой элемент встречается несколько раз, то удалить все с

26.03.2020, 15:21. Показов 382. Ответов 1
Метки нет (Все метки)

Дан массив В (5*5). Элементы массива ввести случайным образом. Удалить строку, в которой находится максимальный элемент. Если такой элемент встречается несколько раз, то удалить все строки.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2020, 15:21
Ответы с готовыми решениями:

Удалить из массива строку, в которой находится максимальный элемент
Удалить из массива строку, в которой находится максимальный элемент. Вывести на экран исходный...

Поменять местами строку , в которой находится максимальный элемент со строкой, где находится минимальный элемент матрицы
Дана целочисленная матрица А размером N, где N вводится с клавиатуры. Поменять местами строку , в...

Удалить строку, в которой находится минимальный элемент
Дан массив B (n*m). Элементы массива ввести в программе. Удалить строку, в которой находится...

Удалить строку, в которой находится минимальный элемент матрицы
Написать программу, включающую следующие процедуры:  Создать матрицу В(6х6) случайных чисел в...

1
278 / 250 / 209
Регистрация: 14.11.2016
Сообщений: 948
26.03.2020, 16:53 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
#include <iostream>
#include <random>
#include <vector>
#include <map>
#include <iterator>
#include <algorithm>
#include <utility>
 
int main()
{
    std::random_device dev{};
    std::mt19937 rng{dev()};
    std::uniform_int_distribution<> dist{1, 9};
    
    const int N{5}; // size
    
    std::vector<std::vector<int>> matrix{}; // data
    
    // Generate matrix with random values
    for (std::size_t i{}; i < N; ++i)
    {
        matrix.emplace_back();
        std::generate_n(std::back_inserter(matrix.back()), N, [&rng, &dist](){ return dist(rng); });
    }
    
    // Output before
    for (const auto &it : matrix)
    {
        std::copy(it.cbegin(), it.cend(), std::ostream_iterator<int>{std::cout, " "});
        std::cout << std::endl;
    }
    std::cout << std::endl;
    
    // Info of matrix
    // key = max value in row of matrix
    // value = num row of matrix
    std::map<int, std::vector<std::size_t>, std::greater<int>> infoMatrix{};
    
    // Finding max element in each other row
    for (std::size_t i{}; i < matrix.size(); ++i)
    {
        const auto &it = matrix[i]; 
        auto key = *std::max_element(it.cbegin(), it.cend());
        infoMatrix[key].push_back(i);
    }
    
    std::cout << "Max element in Matrix: " << infoMatrix.cbegin()->first
        << std::endl << std::endl;
    
    // Erase
    {
        std::size_t count{};
        for (const auto &it : infoMatrix.cbegin()->second)
        {
            matrix.erase(matrix.begin() + it - count++);
        }
    }
    
    // Output after
    if (!matrix.size())
    {
        std::cout << "< matrix is empty >" << std::endl;
    }
    else
    {
        for (const auto &it : matrix)
        {
            std::copy(it.cbegin(), it.cend(), std::ostream_iterator<int>{std::cout, " "});
            std::cout << std::endl;
        }
        std::cout << std::endl;
    }
}
Добавлено через 38 секунд
Цитата Сообщение от ChopZaw Посмотреть сообщение
Если такой элемент встречается несколько раз, то удалить все строки
Все строки в которых встречается этот максимальный элемент, или совсем все?!

Добавлено через 9 минут
Исправил.
Удаляет все строки матрицы, если несколько одинаковых максимальных элементов.
Удаляет одну строку с максимальным элементом, если один максимальный элемент.
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
#include <iostream>
#include <random>
#include <vector>
#include <map>
#include <iterator>
#include <algorithm>
#include <utility>
 
int main()
{
    std::random_device dev{};
    std::mt19937 rng{dev()};
    std::uniform_int_distribution<> dist{1, 9};
    
    const int N{5}; // size
    
    std::vector<std::vector<int>> matrix{}; // data
    
    // Generate matrix with random values
    for (std::size_t i{}; i < N; ++i)
    {
        matrix.emplace_back();
        std::generate_n(std::back_inserter(matrix.back()), N, [&rng, &dist](){ return dist(rng); });
    }
    
    matrix[2][2] = 20; /* добавим случайный самый максимальный элемент из всех элементов матрицы */
    
    // Output before
    for (const auto &it : matrix)
    {
        std::copy(it.cbegin(), it.cend(), std::ostream_iterator<int>{std::cout, " "});
        std::cout << std::endl;
    }
    std::cout << std::endl;
    
    // Info of matrix
    // key = max value in row of matrix
    // value = num row of matrix
    std::map<int, std::vector<std::size_t>, std::greater<int>> infoMatrix{};
    
    // Finding max element in each other row
    for (std::size_t i{}; i < matrix.size(); ++i)
    {
        const auto &it = matrix[i]; 
        auto key = *std::max_element(it.cbegin(), it.cend());
        infoMatrix[key].push_back(i);
    }
    
    std::cout << "Max element in Matrix: " << infoMatrix.cbegin()->first
        << std::endl << std::endl;
    
    // Erase
    {
        const auto &values = infoMatrix.cbegin()->second;
        if (values.size() > 1)
        {
            matrix.clear();
        }
        else
        {
            matrix.erase(matrix.begin() + values.front());
        }
    }
    
    // Output after
    if (!matrix.size())
    {
        std::cout << "< matrix is empty >" << std::endl;
    }
    else
    {
        for (const auto &it : matrix)
        {
            std::copy(it.cbegin(), it.cend(), std::ostream_iterator<int>{std::cout, " "});
            std::cout << std::endl;
        }
        std::cout << std::endl;
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2020, 16:53

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Удалить строку в которой находится минимальный элемент матрицы
Создать матрицу В(6х6) случайных чисел в диапазоне от -50 до +50. Напечатать матрицу. Удалить...

Если в массиве максимальный элемент встречается несколько раз, вывести нужно минимальный индекс
Всем привет. Есть задание найти индекс максимального элемента в массиве. И еще несколько условий:...

Удалить из матрицы первую строку, в которой встречается элемент, равный нулю
1.Удалить из двумерного массива типa double ПЕРВУЮ строку, в которой встречается элемент равный 0.

Матрица с меню: Удалить строку, в которой находится минимальный элемент матрицы
Написать программу, включающую следующие процедуры: Создать матрицу В(6х6) случайных чисел в...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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