Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Матрицы

Автор: Nike 28.11.2007 2:06

Дана вещественная матрица размером 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 28.11.2007 4:26

После заполнения массива 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 28.11.2007 11:21

Спасиб! Разобрался smile.gif Чучуть сам не дошел...