1 / 1 / 2
Регистрация: 04.10.2017
Сообщений: 29
1

После строк матрицы с максимальной суммой элементов вставить копию строки с минимальной суммой элементов

19.02.2018, 19:02. Показов 751. Ответов 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
int Sum(std::vector<int> a) {
    int sum = 0;
    for (int i = 0; i < a.size(); i++)
        sum += a[i];
    return sum;
}
 
int main()
{
    std::default_random_engine gen{ std::random_device()() };
    std::uniform_int_distribution<> dist(-10, 10);
    int n, m; std::cout << "N, M = "; std::cin >> n >> m;
    std::size_t min = 0, max = 0;
    std::vector<int> r_min(m);
    std::vector<std::vector<int>> a(n, std::vector<int>(m));
    for (auto& row : a) {
        std::generate(row.begin(), row.end(), [&dist, &gen] {return dist(gen); });
        std::copy(row.begin(), row.end(), std::ostream_iterator<int>(std::cout, "\t"));
        std::cout << "\n";
    }
    for (int i = 0; i < n; i++) {
        int s1 = Sum(a[i]);
        if (s1 > Sum(a[max])) max = i;
        if (s1 < Sum(a[min])) min = i;
    }
    a.insert(a.begin() + max + 1, a[min]);
    std::cout << "\n";
    for (auto& row : a) {
        std::copy(row.begin(), row.end(), std::ostream_iterator<int>(std::cout, "\t"));
        std::cout << "\n";
    }
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2018, 19:02
Ответы с готовыми решениями:

После строк матрицы с максимальной суммой элементов вставить копию строки с минимальной суммой элементов
Ввести целочисленный двумерный массив , состоящий из строк произвольной длины . После строк с...

В матрице найти номер строки с максимальной суммой элементов и номер столбца с минимальной суммой элементов
Вывести на консоль номер строки с максимальной суммой элементов и номер столбца с минимальной...

В двумерном N*K массиве целых чисел поменять строку с максимальной суммой элементов со строкой с минимальной суммой элементов.
Массив заполнять случайными числами, кроме случаев, когда это нецелесообразно (прогрессия,...

Дан двумерный массив. Найти строку с минимальной суммой элементов, столбец с максимальной суммой элементов
а)Строку с минимальной суммой элементов б)Столбец с максимальной суммой элементов Дополнительный...

3
1 / 1 / 2
Регистрация: 04.10.2017
Сообщений: 29
21.02.2018, 21:10  [ТС] 2
Ввести целочисленный 2D массив , состоящий из строк произвольной длины . После строк с максимальной суммой элементов вставить копию строки с минимальной суммой элементов . Реализовать функцию вычисления суммы строки
Не понимаю как это сделать с рваным массивом, Пожалуйста очень нужна помощь!
0
1 / 1 / 2
Регистрация: 04.10.2017
Сообщений: 29
26.02.2018, 21:02  [ТС] 3
Ввести целочисленный 2D массив , состоящий из строк произвольной длины . После строк с максимальной суммой элементов вставить копию строки с минимальной суммой элементов . Реализовать функцию вычисления суммы строки.
Нужна помощь , это рванный массив , вот код , сумму максимальной строки есть , а дальше не знаю как сделать , чтоб после строк с максимальной суммой элементов вставить копию строки с минимальной суммой элементов.
Помогите завершить код программы

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
#include <iostream> 
using namespace std;
int Sum(int*a, int size)
{
    int s = 0;
    for (int i = 0; i < size; i++)
        
        s += a[i];
    return s;
}
int main()
{
 
    int n, row;
    cin >> n;
    int**a = new int*[n];
    int*a2 = new int[n];
    for (int i = 0; i < n; i++)
    {
        cin >> a2[i];
        a[i] = new int[a2[i]];
        for (int j = 0; j < a2[i]; j++)
            cin >> a[i][j];
    }
    
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < a2[i]; j++)
            cout << a[i][j] << "\t";
        cout << endl;
        cout << "-----------------------------------------" << endl;
    }
    int max = 0;
    for (int i = 0; i < n; i++)
    {
        if (Sum(a[i], a2[i]) > max)
        {
            max = Sum(a[i], a2[i]);
            row = i;
            row++;
        }
        }
        
    
    
 
    cout << "-----------------------------------------" << endl;
    
    
            cout << row;
            cout << endl;
    
 
 
    for (int i = 0; i < n; i++)
    {
        delete[]a[i];
    }
    delete[]a;
    delete[]a2;
    system("pause");
    return 0;
}
0
1 / 1 / 2
Регистрация: 04.10.2017
Сообщений: 29
03.04.2018, 19:06  [ТС] 4
После строк с максимальной суммой элементов строки вставить копию с минимальной суммой элементов. Это рваный массив , все работает отлично , только , мне нужна помощь в том , как мне сделать так что когда вводишь:
1 2
1 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <iostream>
using namespace std;
 
int Sum(int  a[], int a1)
{
    int summ = a[0];
    for (int i = 1; 
        i < a1; i++)
    {
        summ += a[i];
    }
    return summ;
}
int main()
{
    int n;  
    cin >> n;
    int**a = new int *[n];
    int*a2 = new int[n];
    for (int i = 0; i < n; i++)
    {
        cin >> a2[i];
        a[i] = new int[a2[i]];
        for (int j = 0; j < a2[i]; j++)
        {
            cin >> a[i][j];
        }
        cout << endl;
    }
 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < a2[i]; j++)
        {
            cout << a[i][j] << "  ";
        }
        cout << endl;
    }
    int maxRow = 0;
    for (int i = 0; i < n; i++)
    {
        if (Sum(a[i], a2[i]) > maxRow)
        {
            maxRow = Sum(a[i], a2[i]);
        }
    }
    int maxrowCount = 0;
    int na = 0;
    for (int i = 0; i < n; i++)
    {
        if (Sum(a[i], a2[i]) == maxRow)
        {
            maxrowCount++;
        }
    }
    int * maxMas = new int[maxrowCount];
    for (int i = 0; i < n; i++)
    {
        if (Sum(a[i], a2[i]) == maxRow)
        {
            maxMas[na] = i;
            na++;
        }
    }
    int min = 0;
    int minRowSum = Sum(a[0], a2[0]);
    for (int i = 0; i < n; i++)
    {
        if (Sum(a[i], a2[i]) < minRowSum)
        {
            minRowSum = Sum(a[i], a2[i]);
            min = i;
        }
    }
    int minrowCount = 0;
    int nummax = 0;
    int k = 1;
    int*a4 = new int[n+maxrowCount];
    for (int i = 0; i < n + maxrowCount; i++)
    {
        if (i == maxMas[nummax] + k)
        {
            a4[i] = a2[min];
            nummax++;
            minrowCount++;
            k++;
        }
        else 
        {
            a4[i] = a2[i-minrowCount];
        }
    }
    int numMax1 = 0;
    int minrowCount1 = 0;
    int k1 = 1;
    int**a3 = new int *[n + maxrowCount];
    for (int i = 0; i < n + maxrowCount; i++)
    {
        a3[i] = new int[a4[i]];
        if (i == maxMas[numMax1] + k1)
        {
            for (int j = 0; j < a4[i]; j++)
            {
                a3[i][j] = a[min][j];
            }
            numMax1++;
            minrowCount1++;
            k1++;
        }
        else 
        {
            for (int j = 0; j < a4[i]; j++)
            {
                a3[i][j] = a[i - minrowCount1][j];
            }
        }
    }
    cout << endl;
    for (int i = 0; i < n + maxrowCount; i++)
    {
        for (int j = 0; j < a4[i]; j++)
        {
            cout << a3[i][j] << "   ";
        }
        cout << endl;
    }
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2018, 19:06
Помогаю со студенческими работами здесь

Найти строку с максимальной суммой элементов и минимальной суммой элементов
создать матрицу 5х5 найти строку с максимальной суммой елементов и минимальной сумой елементов и...

Массив: В произвольно заданной матрице размера 4*6 определить строку с максимальной суммой элементов и столбец с минимальной суммой.
В произвольно заданной матрице размера 4*6 определить строку с максимальной суммой элементов и...

Найти строку с минимальной и максимальной суммой элементов матрицы Т(8, 7)
Помогите решить такую задачу, совсем не пойму как сделать:cry: Найти строку с минимальной и...

Найти строку с минимальной и максимальной суммой элементов матрицы Т(8, 7)
Помогите пожалуйста решить такую задачу по VB 6.0 а то в универе толком ничего не объяснили, а...

В матрице поменять местами строки с максимальной и минимальной суммой элементов
Помогите плиз. Заданы 2 матрицы действительных чисел размером 5х6 и 8х7. В матрице поменять...

В матрице найти строки с максимальной и минимальной суммой положительных элементов. Как упростить?
P1 := Low(Integer); // Левая граница значений Integer равная -2147483648 P2 := High(Integer); ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru