Помощь - Поиск - Пользователи - Календарь
Полная версия: Матрицы
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Другие языки
Nike
Дана вещественная матрица размером NxM. Упорядочить ее строки по возрастанию сумм их элементов.

Сумма у меня считается, а вот сортировку ни как не могу организовать. Подскажите пожалуйста...

#include <cstdio>
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{	
    const int n=5; //Количество строк.
    const int m=3; //Количество столбцов.
    int array[n][m]; //Основной массив.
    
    cout<<"Zapolnite massiv 5x3: \n";
    for (int i=0;i<n;i++)
      for (int j=0;j<m;j++)
        cin>>array[i][j]; //Заполнение массива.
	    
     //Подсчет суммы в каждой строке.
     int summa;
     int sum[n];
     for (int i=0;i<n;i++)
       {
        summa=0;
        for (int j=0;j<m;j++)
          summa=summa+array[i][j];
        sum[i]=summa;
        cout<<"Summa "<<i+1<<"-i stroki: "<<sum[i]<<"\n";  
       }

     system("PAUSE");
     return 0;
}
volvo
После заполнения массива sum - делаем так:

    for(int i = 0; i < n; i++) {
        for(int j = n - 1; j > i; j--) {
            if(sum[j - 1] > sum[j]) {
                int T = sum[j]; sum[j] = sum[j - 1]; sum[j - 1] = T;
                for(int k = 0; k < m; k++) {
                    T = array[j - 1][k]; array[j - 1][k] = array[j][k]; array[j][k] = T;
                }
            }
        }
    }
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; ++j)
            cout << setw(4) << array[i][j]; // подключить <iomanip> чтоб не было ошибки
        cout << endl;
    }


В принципе, можно еще добавить функцию swap(), которая будет обменивать 2 числа, тогда код будет более читаемым...
Nike
Спасиб! Разобрался smile.gif Чучуть сам не дошел...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.