Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 23.07.2012
Сообщений: 15
1

Отсортировать 1 строку матрицы и 2 столбик по возрастанию

30.07.2012, 13:10. Просмотров 1594. Ответов 4
Метки нет (Все метки)

Приветствую господа! Хочу понять как написать программу для сортировки 1 строки и 2 столбца матрицы по возрастанию, но не могу понять как правильно написать цикл для сортировки Я пробовал сортировать методом пузырька но в итоге у меня выводило вместо отсортированного жуткие числа (например -8759256702..). Уважаемые обитатели форума, пожалуйста, помогите мне с решением! Большая просьба показать код самым элементарным образом и в деталях объяснить мне код, особенно в цикле сортировки. Заранее огромное вам спасибо!
Например такой матрицы:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream.h>
#include <conio.h>
void main()
{
 
    int matr[4][3];
    cout<<"Input matr\n";
 
    for(int i=0;i<4;i++)
    for(int j=0;j<3;j++) cin>>matr[i][j];
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2012, 13:10
Ответы с готовыми решениями:

Отсортировать по возрастанию серединную строку матрицы
Добрый день,помогите пожалуйста ) В двухмерном массиве целых случайных чисел размерность...

Отсортировать указанную строку матрицы по возрастанию
Помогите, пожалуйста, с написанием программы на языке Си. Текст задачи: &quot;Дана матрица...

Отсортировать каждую строку матрицы по возрастанию
Доброго времени суток! Мне очень нужна ваша помощь! Я только начал изучать Делфи и пока не очень...

Отсортировать по возрастанию заданную строку матрицы
Задание: Отсортируйте по возрастанию заданную строку массива. Распечатайте массив в виде таблицы...

4
3050 / 1455 / 492
Регистрация: 29.11.2010
Сообщений: 2,888
30.07.2012, 14:44 2
В деталях объяснять не стану. Алгоритм сортировки пузырьком слишком примитивный. Пройдитесь на листочке бумажки для массива 4х4 несколько раз и все станет понятно.

Ну и ввод массива заменил на случайные значения.

Решение:
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
#include <iostream>
#include <cmath>
#include <ctime>
#include <cstdlib>
 
// сортировка столбца матрицы
void sortColumn(int **matrix, int height, int columnId) {
  // пусть будет пузырек
  for (int i = 0; i < height - 1; ++i)
    for (int j = i + 1; j < height; ++j)
      if (matrix[i][columnId] < matrix[j][columnId]) {
        int temporary = matrix[i][columnId];
        matrix[i][columnId] = matrix[j][columnId];
        matrix[j][columnId] = temporary;
      }
}
 
// сортировка строки матрицы
void sortRow(int **matrix, int width, int rowId) {
  // еще раз пузырек
  for (int i = 0; i < width - 1; ++i)
    for (int j = i + 1; j < width; ++j)
      if (matrix[rowId][i] < matrix[rowId][j]) {
        int temporary = matrix[rowId][i];
        matrix[rowId][i] = matrix[rowId][j];
        matrix[rowId][j] = temporary;
      }
}
 
// вывод матрицы на экран
void printMatrix(int **matrix, int height, int width) {
  for (int i = 0; i < height; ++i) {
    for (int j = 0; j < width; ++j)
      std::cout << matrix[i][j] << " ";
    std::cout << std::endl;
  }
  std::cout << std::endl;
}
 
int main(int argc, char **argv) {
  srand(time(0));
  // размеры матрицы
  const int width = 10 + rand() % 5;
  const int height = 10 + rand() % 5;
 
  // создание матрицы
  int **matrix = new int*[height];
  for (int i = 0; i < height; ++i) {
    matrix[i] = new int[width];
    for (int j = 0; j < width; ++j)
      matrix[i][j] = rand() % 10;
  }
 
  printMatrix(matrix, height, width);
  // сортировка второго столбца
  sortColumn(matrix, height, 1);
  printMatrix(matrix, height, width);
  // сортировка первой строки матрицы
  sortRow(matrix, width, 0);
  printMatrix(matrix, height, width);
 
  // разрушение матрицы
  for (int i = 0; i < height; ++i)
    delete matrix[i];
  delete matrix;
}
2
69 / 63 / 5
Регистрация: 09.06.2012
Сообщений: 291
30.07.2012, 14:51 3
lemegeton, Хороший пример,было б супер если бы еще сразу в класс засунул И в деструкторе удалял
1
0 / 0 / 0
Регистрация: 23.07.2012
Сообщений: 15
30.07.2012, 15:06  [ТС] 4
Спасибо, попробую разобраться
0
3050 / 1455 / 492
Регистрация: 29.11.2010
Сообщений: 2,888
30.07.2012, 15:07 5
Можно было бы навелосипедить STL-вектор с итераторами и несколькими внешними функциями сортировки -- стабильными и нестабильными.

Тогда сразу был бы автоответ от ТС -- "А можно попроще?"
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.07.2012, 15:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Отсортировать каждую строку матрицы по возрастанию.
Дана матрица целых чисел размером 4x3. Отсортировать каждую строку матрицы по возрастанию. ...

Отсортировать каждую строку матрицы по возрастанию
Можите кто-нибудь помочь решить? Срочно нада на завтра!!! Дана матрица целых чисел размером 4*3....

Отсортировать каждую строку матрицы по возрастанию
Прошу помочь с решением задачи :umnik: Дана матрица целых чисел размером 4x3. Отсортировать каждую...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.