0 / 0 / 0
Регистрация: 10.09.2021
Сообщений: 19
1

Сортировать (переставить) строки матрицы в порядке уменьшение значений малейших элементов строк

04.11.2021, 18:19. Показов 638. Ответов 1

Author24 — интернет-сервис помощи студентам
Есть у меня вот такая задачка:
В двумерном массиве каждый элемент главной диагонали заменить на максимальный в строке. Сортировать (переставить) строки матрицы в порядке уменьшение значений малейших элементов строк
Первая часть состоит из задания чтобы каждый елемент главной диагонали матрицы заменить на максимальный елемент строки.
Вот код
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
#include <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
int size;
void out(int**a){
    for(int i = 0; i < size; i++){
        for(int j = 0; j < size; j++)
            cout << a[i][j] << "\t";
        cout << endl;
    }
}
 
int main(){
    setlocale(LC_ALL, "Ukrainian");
    cout << "Введiть розмiр матрицi nxn ";
    cin >> size;
    int **arr = new int*[size];
    for(int i =0; i < size; i++)
    arr[i] = new int [size];
    srand(time(NULL));
    for(int i =0; i < size; i++)
        for(int j = 0; j < size; j++)
        arr[i][j] = rand() % 101 - 50;
    cout << "Матриця:\n";
    out(arr);
    cout << "Мiняємо елементи головної дiагоналi на максимальний елемент рядка" << endl;
    for(int i = 0;i < size; i++){
        int max = arr[i][0];
        for(int j =1; j< size; j++)
            if(arr[i][j]> max)
                max = arr[i][j];
        arr[i][i] = max;
    }
    cout << "Результат:\n";
    out(arr);
    return 0;
}
Вторая часть это Сортировать (переставить) строки матрицы в порядке уменьшение значений малейших элементов строк.

Может кто-то дописать или подсказать как это впихнуть сюда?
Буду очень благодарен
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2021, 18:19
Ответы с готовыми решениями:

Сортировать (переставить) строки матрицы в порядке убывания значений первых элементов строк
Данная действительно матрица размером n * m. Сортировать (переставить) строки матрицы в порядке...

Данная действительно матрица размером n * m. Сортировать (переставить) строки матрицы в порядке убывания значений первых элементов строк
Данная действительно матрица размером n * m. Сортировать (переставить) строки матрицы в порядке...

Сортировать строки матрицы n * m в порядке убывания значений первых элементов строк
Данная действительно матрица размером n * m. Сортировать (переставить) строки матрицы в порядке...

Сортировать строки матрицы по не убыванию значений последних элементов строк
Данная действительно матрица размера N x M. Упорядочить строки матрицы по не убыванию значений...

Переставить строки матрицы в порядке увеличения сумм элементов строк
как ее исправить?#include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;iostream&gt; int...

1
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
04.11.2021, 18:49 2
llloris, главная диагональ есть не только в квадратной матрице. в предложенном коде сортируется матрица после замены элементов диагонали
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
#include <iostream>
#include <cstdlib>
#include <utility>
#include <ctime>
using namespace std;
 
void Random (int **a, int n, int m)
{
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
        a[i][j]=rand()%9 + 1;
} 
 
void ReplaceDiagonal (int **a, int n, int m)
{
    if(n>m) n=m;
    for(int i = 0; i < n; i++)
    {
        int max=a[i][0];
        for(int j = 1; j < m; j++)
            if(a[i][j]> max) max=a[i][j];
        a[i][i]=max;
    }    
}
 
double MinRow(int *a, int m)
{
    int min=a[0];
    for(int j = 1; j < m; j++)
        if(a[j]<min) min=a[j];
    return min;
}
 
void SortRows (int **a, int n, int m)
{
    for (int i=0; i<n-1; i++)    
        for (int j=0; j<n-i-1; j++) 
            if(MinRow(a[j],m)>MinRow(a[j+1],m))
                swap(a[j],a[j+1]);
}
 
void Print (int **a, int n, int m)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)       
        cout << a[i][j] << " ";        
    cout << "\n";
    }
}    
 
int main()
{
    srand((int)time(0));
    int n, m;    
    cout << "n="; cin >> n;
    cout << "m="; cin >> m;
    
      int **a = new int*[n];
    for (int i = 0; i < n; i++)
         a[i]=new int[m];      
         
    Random(a,n,m);
    cout << "Matrix:\n";
    Print(a,n,m); 
    ReplaceDiagonal(a,n,m);
    cout << "Matrix after replace:\n";
    Print(a,n,m);
    SortRows(a,n,m);
    cout << "Sorted matrix:\n";
    Print(a,n,m);
    
    for (int i = 0; i < n; i++)
    delete[]a[i];
    delete[]a; 
system("pause");
return 0;
}
0
04.11.2021, 18:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2021, 18:49
Помогаю со студенческими работами здесь

Переставить строки матрицы в порядке возрастания суммы элементов строк
Дана целочисленная матрица А размером MxN. Переставить строки матрицы в порядке возрастания суммы...

Задана вещественная матрица N×M. Переставить строки матрицы в порядке убывания минимальных элементов строк матрицы
Задана вещественная матрица N×M. Переставить строки матрицы в порядке убывания минимальных...

Упорядочить (переставить) строки матрицы по невозрастанию значений наибольших элементов строк
Дана действительная матрица размерности n * m. Упорядочить (переставить) строки матрицы по...

Упорядочить (переставить) строки матрицы по неубыванию значений наименьших элементов строк
Помогите решить задачу на с++ С помощью датчика случайных чисел сформировать двумерный массив из...

Упорядочить (переставить) строки матрицы по убыванию значений последних элементов строк
Дана действительная матрица размером M N. Упорядочить (переставить) строки матрицы по УБЫВАНИЮ...


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

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

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