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

Сортировка столбцов массива по убыванию элементов столбцов

19.10.2016, 11:47. Показов 7572. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Заполнить двумерный числовой массив A[n,m] целыми числами. Вычислить сумму элементов каждого столбца массива. Упорядочить столбцы массива по убыванию сумм элементов массива.

Есть программа, но она работает некорректно и я не понимаю в чем сможет быть проблема.

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
#include "stdafx.h"
#include "iostream"
#include "windows.h"
using namespace std;
 
int Sum(int** arr, int n, int i)
{
int sum=0;
for(int j=0;j<n;j++)
    if(arr[j][i]>0)
        sum+=arr[j][i];
return sum;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0,"");
    int n, m;
    cout<<"Введите размерность массива n и m через пробел: ";
    cin>>n>>m;
    int sum, **arr;
    arr = new int* [n];
    for (int i = 0; i < n; i++)
    {
        arr[i]=new int [m];
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            arr[i][j]=rand()%9+1;
        cout<<arr[i][j]<<"  ";
        }
        cout<<endl;
    }
    cout<<endl;
    for(int i=0;i<m;i++)
    {
        sum=Sum(arr,n,i);
        cout<<sum<<" ";
    }
 
    cout<<endl<<"Сортировка: "<<endl;
    //цикл сортировки
    int arr_buff[20];
    int s_now=0,s_prev=0;
    for(int  z=0;z<m;z++)
    {
        int* prt_arr=&arr[z][0];
        for(int i=z;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                s_prev+=*prt_arr;
                s_now+=arr[i][j];
            }
            if(s_prev<s_now)
            {
                for(int k=0;k<n;k++)
                {
                    arr_buff[k]=arr[i][k];
                    arr[i][k]=*prt_arr;
                    *prt_arr=arr_buff[k];
                    prt_arr++;
                }
                prt_arr-=n;
            }
            s_now=0;
            s_prev=0;
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
        cout<<&arr[i][j]<<"  ";
        }
        cout<<endl;
    }
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.10.2016, 11:47
Ответы с готовыми решениями:

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

Сортировка четных столбцов матрицы по убыванию элементов, а нечетных - по возрастанию
Дана матрица, размерностью nxn, содержащая целые числа. Отсортировать каждый столбец матрицы с...

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

Сортировка столбцов матрицы по убыванию
дана матрица размером NxM надо отсортировать элементы столбцы в порядке убывание. Ввод данных с...

2
Эксперт .NET
5876 / 4753 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
19.10.2016, 12:44 2
Lenster,
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
//цикл сортировки
int temp;
for(int i=0;i<m-1;i++)
{
    for (int j=i; j<m; j++)
    {
        if (Sum(arr, n, i)<Sum(arr, n, j))
        {
            for (int k=0; k<n; k++)
            {
                temp = arr[k][i];
                arr[k][i]=arr[k][j];
                arr[k][j]=temp;
            }
        }
    }
}
 
for(int i=0;i<n;i++)
{
    for(int j=0;j<m;j++)
    {
         cout<<arr[i][j]<<"  ";
    }
    cout<<endl;
}
1
Helper C/C++
286 / 163 / 122
Регистрация: 22.09.2016
Сообщений: 518
19.10.2016, 13:00 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
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
#include <cstdlib>
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(0,"");
    int n = 10, m = 12;
    cout<<"Введите размерность массива n и m через пробел: ";
    cin>>n>>m;
    int sum, **arr, *arr2;
    arr = new int* [n];
    arr2 = new int[m];
    for (int i = 0; i < n; i++)
    {
        arr[i]=new int [m];
        for(int j=0;j<m;j++)
        {
            arr[i][j]=std::rand()%9+1;
        cout<<arr[i][j]<<"  ";
        }
        cout<<endl;
    }
    cout<<endl;
    for(int j=0;j<m;j++)
    {
         int sum=0;
         for (int i=0; i<n;i++)
               sum += arr[i][j];
 
         arr2[j] = sum;
    }
 
    cout<<endl<<"Сортировка: "<<endl;
    //цикл сортировки
    for (int j=0; j<m; j++)
    {
          int min_j = j;
          for (int k=j+1;k<m;k++)
                if (arr2[k] < arr2[min_j]) min_j = k;
 
          for (int i=0; i<n; i++)
          {
                int _tn = arr[i][j];
                arr[i][j] = arr[i][min_j];
                arr[i][min_j] = _tn;
          }   
          
          int _tn = arr2[j];
          arr2[j] = arr2[min_j];
          arr2[min_j] = _tn;
    }
 
    for (int k=0; k<m;k++)
          cout << arr2[k] << " ";
 
    cout << endl;
 
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
        cout<<arr[i][j]<<"  ";
        }
        cout<<endl;
    }
    cout<<endl;
    system("pause");
    return 0;
}
1
19.10.2016, 13:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.10.2016, 13:00
Помогаю со студенческими работами здесь

Сортировка матрицы по убыванию столбцов
Как уже понятно из темы нужно отсортировать столбцы значений матрицы по убыванию. Где красная линия...

Сортировка значений столбцов матрицы по убыванию
Всем здравствуйте. Прошу совета-что я делаю не так? Есть программка сортировки значений столбцов...

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

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


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

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

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