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

Упорядочить строки матрицы по неубыванию сумм элементов строк (методом простых вставок)

28.05.2018, 07:31. Просмотров 1307. Ответов 6
Метки нет (Все метки)

Дана действительная матрица размера MхN. Упорядочить строки матрицы по неубыванию значений сумм элементов строк методом простых вставок (Insert Sort). На экран вывести исходную и отсортированную матрицы.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.05.2018, 07:31
Ответы с готовыми решениями:

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

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

Перестановка строк матрицы по неубыванию сумм. Метод вставок.
дана действительная матрица размера А(M,N). упорядочить строки по неубыванию значений сумм...

Упорядочить строки матрицы по неубыванию сумм положительных элементов
Переформировать матрицу таким образом,что бы ее строки располагались в порядке неубывания сумм их...

6
498 / 368 / 179
Регистрация: 10.06.2016
Сообщений: 1,721
28.05.2018, 15:51 2
Лучший ответ Сообщение было отмечено Zarbabay как решение

Решение

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
#include <cstdlib> // для system
#include <iostream> 
#include <string>
 
using std::cout;
using std::cin;
using std::endl;
int main()
{    
        setlocale(0, "");
        int m,n,i,j,k ;
        cout <<"Введите количество строк матрицы n=";
        cin>>n;
        cout <<endl;
        cout <<"Введите количество столбцов матрицы m=";
        cin>>m;
        cout <<endl;
        double **a = new double* [m];
        double *sum = new double[n];
        double *tmp = new double[m];
        double smax,tmp_;
        cout <<"Исходная матрица"<<endl;
        for ( i = 0; i < m; i++) { 
        a[i] = new double [i + 1]; 
        }  
        for (i = 1; i <= n; i++) 
        {   
        sum[i]=0;
            for (j = 1; j <= m; j++) { 
        a[i][j]=0.001*rand();
        sum[i]=sum[i]+a[i][j];
        cout << a[i][j]<<"  " ;
            }  
        cout <<"*"<< sum[i]<< endl;
             }
        cout << "*******"<<endl ;
        smax=sum[1];
        for (i = 1; i <= n-1; i++) 
        {  
            smax=sum[i];
            for (j = i+1; j <= n; j++) 
            {   
            if(sum[j]>smax)             
            {  
            smax=sum[j];
                for (k = 1; k <= m; k++) 
            {  
                tmp[k]=a[i][k];
                a[i][k]=a[j][k];
                a[j][k]=tmp[k];
                tmp_=sum[i];
                sum[i]=sum[j];
                sum[j]=tmp_;
            }   
             
            }   
            }  
            }  
        cout <<"Результирующая матрица"<<endl;
        for (i = 1; i <= n; i++) 
        {   
        for (j = 1; j <= m; j++) { 
        cout << a[i][j]<<"  " ;
            }  
        cout <<"*"<< sum[i]<< endl;
             }
        delete [] sum;
        for (i = 0; i < m; i++) 
        delete [] a[i];
            system("pause"); // Только для тех, у кого MS Visual Studio
}
1
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 18
28.05.2018, 17:23  [ТС] 3
slava_psk
Работает не корректно. После того как показывает "Исходную матрицу" программа выдаёт ошибку и закрывается. И не выводит "Результирующую матрицу". Запускаю в MS Visual Studio. Вы можете скинуть скрин работы программы?

Добавлено через 1 минуту
slava_psk,
Работает не корректно. После того как показывает "Исходную матрицу" программа выдаёт ошибку и закрывается. И не выводит "Результирующую матрицу". Запускаю в MS Visual Studio. Вы можете скинуть скрин работы программы?
0
498 / 368 / 179
Регистрация: 10.06.2016
Сообщений: 1,721
28.05.2018, 18:05 4
Zarbabay, только завтра. Попробуйте убрать из кода концовку - удаление динамических массивов.
0
498 / 368 / 179
Регистрация: 10.06.2016
Сообщений: 1,721
29.05.2018, 08:22 5
Упорядочить строки матрицы по неубыванию сумм элементов строк (методом простых вставок)
0
4705 / 3201 / 1937
Регистрация: 18.12.2017
Сообщений: 10,219
29.05.2018, 15:00 6
slava_psk, действительно есть проблемы в коде. Программа работает когда n<m (например n=5 m=7 - работает,
при n=7 m=5 не работает - выводит только исходную матрицу, что интересно даже ******* не выводит).
И то пришлось заменить a[i][j]=0.001*rand(); на a[i][j]=rand()%9; (выдавало значения вида 1.80429e+06)
И ТС результат нужен по неубывнию - у Вас по убыванию.
0
498 / 368 / 179
Регистрация: 10.06.2016
Сообщений: 1,721
08.06.2018, 08:39 7
Работа над ошибками.
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
#include <cstdlib> // для system
#include <iostream> 
#include <string>
 
using std::cout;
using std::cin;
using std::endl;
int main()
{    
        setlocale(0, "");
        int m,n,i,j,k ;
        cout <<"Введите количество строк матрицы n=";
        cin>>n;
        cout <<endl;
        cout <<"Введите количество столбцов матрицы m=";
        cin>>m;
        cout <<endl;
 
    // объявление двумерного динамического массива n*m:
    double **a = new double* [n]; // n строк в массиве
    for (i = 0; i < n; i++)
    a[i] = new double [m]; // и m столбцов
        double *sum = new double[n];
        double *tmp = new double[m];
        double smin,tmp_;
        cout <<"Исходная матрица"<<endl;
        for (i = 0; i < n; i++) 
        {   
        sum[i]=0;
            for (j = 0; j < m; j++) { 
        a[i][j]=0.001*rand();
        sum[i]=sum[i]+a[i][j];
        cout << a[i][j]<<"  " ;
            }  
        cout <<"*"<< sum[i]<< endl;
             }
        cout << "*******"<<endl ;
        
        //smax=sum[0];
        for (i = 0; i < n-1; i++) 
        {  
            smin=sum[i];
            for (j = i+1; j < n; j++) 
            {   
            if(sum[j]<smin)             
            {  
            smin=sum[j];
                for (k = 0; k < m; k++) 
            {  
                tmp[k]=a[i][k];
                a[i][k]=a[j][k];
                a[j][k]=tmp[k];
                tmp_=sum[i];
                sum[i]=sum[j];
                sum[j]=tmp_;
            }   
             
            }   
            }  
            }  
        cout <<"Результирующая матрица"<<endl;
        for (i = 0; i < n; i++) 
        {   
        for (j = 0; j < m; j++) { 
        cout << a[i][j]<<"  " ;
            }  
        cout <<"*"<< sum[i]<< endl;
             }
        
        delete [] sum;
        delete [] tmp;
        for (i = 0; i < n; i++) 
        delete [] a[i]; 
            system("pause"); // Только для тех, у кого MS Visual Studio
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.06.2018, 08:39

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

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

Упорядочить строки матрицы по неубыванию наименьших элементов строк
program n9; uses crt; var x:array of integer; n,i,j,l:byte; sm,b:integer; begin...

Массив: Упорядочить элементы строк матрицы по возрастанию, а сами строки по неубыванию произведения четных элементов строк
Дана матрица. Упорядочить элементы строк матрицы по возрастанию, а сами строки по неубыванию...

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


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

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

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