1 / 1 / 3
Регистрация: 07.10.2012
Сообщений: 16
1

Как отсортировать двумерный массив по сумме элементов в строке

25.11.2012, 19:36. Показов 4410. Ответов 4
Метки нет (Все метки)

Дан массив
4 4 5 5 5
5 5 5 5 5
5 4 4 5 4
надо чтоб получилось
5 5 5 5 5
4 4 5 5 5
5 4 4 5 4
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2012, 19:36
Ответы с готовыми решениями:

Отсортировать двумерный массив в последней строке
Здравствуйте, прошу помочь с проблемой. Не могу отсортировать динамический массив Вот то что есть...

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

Дан двумерный массив. найти количество элементов в каждой строке, меньших диагонального в этой строке
1.Сформировать квадратную матрицу 000001 000020 000300 0n-10000 n00000 2.Дан двумерный...

Отсортировать по убыванию элементов последнего столбца целочисленный двумерный массив
Здравствуйте! Я в C# недавно вот задачку решаю не могу не как дорешать. Помогите пожалуйста в...

4
Форумчанин
Эксперт CЭксперт С++
8190 / 5040 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
25.11.2012, 19:53 2
Создать массив из сумм строки, ну и, сортируя сформированный массив, свапать и строки под нужным индексом.
0
3653 / 2990 / 828
Регистрация: 25.03.2012
Сообщений: 11,028
Записей в блоге: 1
25.11.2012, 19:54 3
Цитата Сообщение от MrGluck Посмотреть сообщение
Создать массив из сумм строки, ну и, сортируя сформированный массив, свапать и строки под нужным индексом.
Это же долго... Лучше ещё заодно создать массив указателей на строки и свапать указатели в нём
0
Форумчанин
Эксперт CЭксперт С++
8190 / 5040 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
25.11.2012, 19:58 4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Это же долго... Лучше ещё заодно создать массив указателей на строки и свапать указатели в нём
То, как именно нужно свапать строки я не указал. Логичнее сделать это через указатели.
1
1 / 1 / 3
Регистрация: 07.10.2012
Сообщений: 16
25.11.2012, 23:35  [ТС] 5
все-таки додумал.. может кому пригодится..
Исходное задание: Оценки студентов. Записать из файла в двумерный массив информацию об оценках каждого из N студентов группы по тому или иному предмету (в первой строке – информация об оценках первого студента, во второй – второго и т. д.). Общее число предметов равно K. Сформировать список оценок студентов, которые по всем K предметам учатся на 4 и 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
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
#include <iostream>
#include <fstream>
 
using namespace std;
void print(int **a, int nrow, int ncol, long *sum,double *mus );
void sort (int **a, int nrow, int ncol,double *mus);
 
 
int main(void)
{
    int **a,i, j, nrow, ncol, b, buf_a;
    long buf_mus;
    ifstream f; // объявление потока для чтения
    f.open("D:\\Student.txt"); // режим ios::in
    if (f)
    {   cout << "Read fiel!\n";
        f >> nrow;
        f >> ncol;
        // выделение памяти под массив
        a = new int *[nrow];
        for (i=0; i < nrow; i++)
             a[i] = new int [ncol];
        // заполненине массива
        for (i=0; i < nrow; i++)
        for (j=0; j < ncol; j++)
          f >> a[i][j];
          cout << "\n";
          f.close();
          // вывод массива
          for (i=0; i<nrow; i++)
           {
              for (j=0; j<ncol; j++)
              cout << " "<< a[i][j];
              cout << "\n";
           }
 
         // поиск студентов кто учится на 4  и 5
         long *sum = new long [nrow];
            for (i = 0;i < nrow;i++)
                 { sum[i] = 1;
                    for (j = 0;j < ncol; j++)
                        {  if (a[i][j]==3)
                          sum[i] = 0;
                        }
                 }
 
        //  Сумма строк массива, то есть подсчет суммы оценок студентов
        double *mus = new double [nrow];
         for (i = 0;i < nrow;i++)
        { mus[i] = 0;
          for (j = 0;j < ncol; j++)
         mus[i] += a[i][j];
         }
        // Сортировка суммы строк по убыванию
       for(int i = 0;i < nrow-1; i++)
           {if (sum[i]==1)
                {b = i;
             for(int j = i+1;j < nrow; j++)
                 if (mus[j] > mus[b])
                     b = j;
                     buf_mus = mus[i];
                     mus[i] = mus[b];
                     mus[b] = buf_mus;
                      for(int j = 0;j < ncol;j++)
                         { buf_a = a[i][j];
                            a[i][j] = a[b][j];
                            a[b][j] = buf_a;
                         }
                }
            }
        //вывод на экран упорядоченной матрицы кто на 4 и 5
        cout << "\n Ocenki studentov, kto ychitsya na 4 i 5:\n";
        print(a, nrow, ncol, sum, mus);
     }
            else cout<< "File ot found, LOL)";
 }
 
    void print(int **a, int nrow, int ncol, long *sum, double *mus)
        { for (int i = 0;i < nrow; i++)
             if (sum[i]==1)
               { for (int j = 0;j < ncol; j++)
                 cout << " " << a[i][j]<< " ";
                 cout << "| " << mus[i]/ncol << "\n";
               }
        }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2012, 23:35
Помогаю со студенческими работами здесь

Отсортировать пузырьком двумерный динамический массив по возрастанию элементов в строках
Здравствуйте! Такая проблема. Мне нужно отсортировать двумерный динамический массив по возрастанию...

Двумерный массив (Вычислить вектор D, компоненты которого равны сумме элементов строк матрицы). Пожалуйста переделайте готовую программу
Здравствуйте!) помогите пожалуйста с такой проблемой. Лабораторную послезавтра сдавать, а я тему...

Получить массив b, где каждый элемент равен сумме элементов в строке матрицы
помогите ,пожалуйста, написать код: 1)Дана матрица А(n,m). Получить массив b, где каждый элемент...

Отсортировать по возрастанию элементов последней строки целочисленный двумерный массив 3х4
Если можно блок-схему и программку, ну или хотя бы что-то одно что бы я врубился как делать....


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

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

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