асд
|
|
1 | |
Сортировка строк матрицы по возрастанию максимальных элементов в строке13.05.2008, 09:21. Показов 7170. Ответов 10
Метки нет (Все метки)
Подскажите как отсортировать двумерный массив по возрастанию.
Например дан такой массив двумерный: 9 7 4 1 2 3 5 5 5 Должен получится вот такой: 1 2 3 5 5 5 9 7 4 Как сделать? |
13.05.2008, 09:21 | |
Ответы с готовыми решениями:
10
Сортировка строк матрицы по возрастанию произведения четных элементов строк Вычислить произведение суммы максимальных элементов строк матрицы на сумму максимальных элементов столбцов матрицы Сортировка элементов строк матрицы по возрастанию Сортировка строк матрицы по возрастанию суммы их элементов |
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
13.05.2008, 09:33 | 2 |
все очень просто, перегоняешь его в одномерный, сортируешь и перезаписываешь уже существующий...
0
|
асд
|
||||||
13.05.2008, 10:03 | 3 | |||||
В чём тут тогда ошибка?
|
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
13.05.2008, 10:54 | 4 |
честно... лень код твой изучать, вот как это получилось у меня...
Код
#include <iostream> #include <stdlib.h> int main() { using namespace std; int mass[3][3]; int* arr = new int[9]; int cnt = 0, tmp = 0; cout<<"Enter array!"<<endl; for(int i = 0; i < 3; i++) for(int j = 0; j < 3; j++){ cin>>mass[i][j]; arr[cnt] = mass[i][j]; cnt++; } // Сортируем for(int i = 0; i < cnt; i++){ for(int j = 0; j < cnt; j++){ if(arr[i]<arr[j]){ tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } } cnt = 0; for(int i = 0; i < 3; i++) for(int j = 0; j < 3; j++){ mass[i][j] = arr[cnt]; cnt++; } cout<<"Result:"<<endl; for(int i = 0; i < 3; i++){ for(int j = 0; j < 3; j++){ cout<< mass[i][j] << " "; } cout<< endl; } }
0
|
асд
|
|
13.05.2008, 18:42 | 5 |
У тебя не так сортирует.
Надо чтобы сортировала по макс элементам в каждой строке. |
5 / 5 / 1
Регистрация: 13.05.2008
Сообщений: 96
|
|
13.05.2008, 21:41 | 6 |
асд, как я понимаю, прога работает, но как не правильно - что неправильного?
зы возможно стоит протрессировать, чтобы разобраться
0
|
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
14.05.2008, 09:23 | 7 |
тебе отсортировать надо по максимальному массиву каждой строчки?
0
|
асд
|
|
14.05.2008, 16:37 | 8 |
|
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
14.05.2008, 17:51 | 9 |
ну вот что у меня получилось:
Код
#include <iostream> #include <stdlib.h> int main() { using namespace std; int mass[3][3]; int cnt = 0, tmp = 0, max = 0; bool stop = false; cout<<"Enter array!"<<endl; for(int i = 0; i < 3; i++) for(int j = 0; j < 3; j++){ cin>>mass[i][j]; cnt++; } // Ni?oe?oai for(int i = 0; i < 3; i++){ max = mass[i][0]; for(int j = 0; j < 3; j++){ if(max < mass[i][j]) max = mass[i][j]; } stop = false; for(int j = 0; j < 3; j++){ if(j == i) continue; for(int k = 0; k < 3; k++){ if(max > mass[j][k]){ stop = true; break; } } if(stop){ break; }else{ for(int f = 0; f < 3; f++){ tmp = mass[i][f]; mass[i][f] = mass[j][f]; mass[j][f] = tmp; } } } } cout<<"Result:"<<endl; for(int i = 0; i < 3; i++){ for(int j = 0; j < 3; j++){ cout<< mass[i][j] << " "; } cout<< endl; } }
0
|
асд
|
|
15.05.2008, 17:42 | 10 |
Слушай, а вот если ввести массив вот такой:
1 2 3 2 2 2 3 3 3 то прога не работаетю И ещё, что ты делаешь вот в этой части: stop = false; for(int j = 0; j < 3; j++){ if(j == i) continue; for(int k = 0; k < 3; k++){ if(max > mass[j][k]){ stop = true; break; } } |
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
19.05.2008, 15:08 | 11 |
Код
using namespace std; int mass[3][3]; int res[3][3] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; int rows[3] = {0, 1, 2}; int maxs[3]; int tmp = 0; cout<<"Enter array!"<<endl; for(int i = 0; i < 3; i++) for(int j = 0; j < 3; j++){ cin>>mass[i][j]; } // Находим максимумы for(int i = 0; i < 3; i++){ maxs[i] = mass[i][0]; for(int j = 0; j < 3; j++){ if(maxs[i] < mass[i][j]) maxs[i] = mass[i][j]; } } // Сортируем и запоминаем позиции for(int i = 0; i < 3; i++){ for(int j = i + 1; j < 3; j++){ if(maxs[i] > maxs[j]){ tmp = maxs[i]; maxs[i] = maxs[j]; maxs[j] = tmp; tmp = rows[i]; rows[i] = rows[j]; rows[j] = tmp; } } } for(int i = 0; i < 3; i++){ for(int j = 0; j < 3; j++){ res[i][j] = mass[rows[i]][j]; } } cout<<"Result:"<<endl; for(int i = 0; i < 3; i++){ for(int j = 0; j < 3; j++){ cout<< res[i][j] << " "; } cout<< endl; } getch();
0
|
19.05.2008, 15:08 | |
19.05.2008, 15:08 | |
Помогаю со студенческими работами здесь
11
Сортировка строк матрицы по возрастанию первых элементов Сортировка строк матрицы по возрастанию сумм элементов Сортировка строк матрицы 2*n по возрастанию элементов 1-ого столбца Сортировка матрицы по возрастанию количества одинаковых элементов в каждой строке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |