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

Удалите из массива первую строку с максимальным элементом - C++

Восстановить пароль Регистрация
 
Maksim23
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 4
10.07.2014, 19:52     Удалите из массива первую строку с максимальным элементом #1
удалите из массива A(n,m) первую строку с максимальным элементом(считается,что в массиве несколько максимальных элементов).
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2014, 19:52     Удалите из массива первую строку с максимальным элементом
Посмотрите здесь:

C++ Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером t.
C++ Заменить отрицательные числа массива A максимальным элементом массива B
Найти строку матрицы с максимальным нечетным элементом поменять эту строку местами с нулевой строкой. C++
Найти строку матрицы с максимальным нечетным элементом поменять эту строку местами с нулевой строкой C++
C++ Поменять местами строку матрицы с максимальным элементом на главной диагонали со строкой m
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrLinch
 Аватар для MrLinch
12 / 10 / 6
Регистрация: 23.12.2012
Сообщений: 51
10.07.2014, 20:47     Удалите из массива первую строку с максимальным элементом #2
Привет! Массив динамический?
Maksim23
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 4
10.07.2014, 20:55  [ТС]     Удалите из массива первую строку с максимальным элементом #3
без разницы
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,167
Завершенные тесты: 1
10.07.2014, 21:06     Удалите из массива первую строку с максимальным элементом #4
См. например
Как производится удаление строк матрицы?
MrLinch
 Аватар для MrLinch
12 / 10 / 6
Регистрация: 23.12.2012
Сообщений: 51
10.07.2014, 21:18     Удалите из массива первую строку с максимальным элементом #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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 <vector>
 
using namespace std;
 
int main() {
    unsigned int n, m;
    cout << "Input N, M: ";
    cin >> n >> m;
    
    // Создаем матрицу
    vector< vector<int> > matrix(n);
    for(size_t i = 0; i < matrix.size(); ++i) {
        matrix[i] = vector<int>(m);
    }
    
    
    // Заполняем ее
    for(size_t i = 0; i < n; ++i) {
        for(size_t j = 0; j < m; ++j) {
            cin >> matrix[i][j];
        }
    }
    
    // Ищем максимум
    int maxValue = matrix[0][0];
    size_t maxRow ;
    for(size_t i = 0; i < n; ++i) {
        for(size_t j = 0; j < m; ++j) {
            if(matrix[i][j] > maxValue) {
                maxRow = i;
                maxValue = matrix[i][j];
            }
        }
    }
    
    // Удаляем ряд 
    matrix.erase(matrix.begin() + maxRow);
    n -= 1;
    
    // Выводим матрицу
    cout << endl;
    for(size_t i = 0; i < n; ++i) {
        for(size_t j = 0; j < m; ++j) {
            cout << matrix[i][j] << ' ';
        }
        cout << endl;
    }
}
BF_
3 / 3 / 1
Регистрация: 07.09.2013
Сообщений: 68
10.07.2014, 22:18     Удалите из массива первую строку с максимальным элементом #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
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
 
void erase(int **arr, int pos, int &row)
{
    for (int i = pos; i < row - 1; ++i)
        swap(arr[i], arr[i + 1]);
    --row;
    arr = (int**)realloc(arr, row * sizeof(int*));
}
 
int max(int **arr, int row, int col)
{
    int max = arr[0][0];
    for(int i = 0; i < row; ++i)
        for(int j = 0; j < col; ++j)
            if (max < arr[i][j])
                max = arr[i][j];
    return max;
}
 
void print(int **arr, int row, int col)
{
    for(int i = 0; i < row; ++i){
        cout << endl;
        for(int j = 0; j < col; ++j)
            cout << arr[i][j] << " ";
    }
}
 
int main()
{
    cout << "Enter row, then cols" << endl;
    int row, col;
    cin >> row >> col;
    int **matrix = new int* [row];
    for(int i = 0; i < row; ++i)
        matrix[i] = new int[col];
 
    cout << "\nEnter matrix element" << endl;
    for(int i = 0; i < row; ++i)
        for(int j = 0; j < col; ++j){
            int t;
            cin >> t;
            matrix[i][j] = t;
        }
 
    int maximum = max(matrix, row, col);
 
    for(int i = 0; i < row; ++i)
        for(int j = 0; j < col; ++j)
            if (matrix[i][j] == maximum)
                erase(matrix, i, row);
 
    print(matrix, row, col);
    return 0;
}
Yandex
Объявления
10.07.2014, 22:18     Удалите из массива первую строку с максимальным элементом
Ответ Создать тему
Опции темы

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