Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ while(1); Процессор грузится на 50% https://www.cyberforum.ru/ cpp-beginners/ thread630650.html
По мнению диспетчера задач винды проц згрузиться на 50% прогой типа int main(){ while(1); } Это нормально или нет?
C++ Распространение приложений, написанных на VS2010
Я написал программу на C++, скомпилировал её в VS2010. Теперь она требует для своей работы установленный рантайм. Как правильно его распространять (в инсталляторе) с моей программой и как...
C++ Производительность DLL
Привет всем, у меня вопрос по производительности подключения DLL-ки по сравнению с чтением из файла. В программе использую небольшую бд (набор массивов "std::vector<>"), которые один раз заполняю,...
C++ Где можно найти практические задания по с++ где можно найти практические задания по си и с++? https://www.cyberforum.ru/ cpp-beginners/ thread630589.html
C++ Vector - out of range или выход за пределы https://www.cyberforum.ru/ cpp-beginners/ thread630584.html
Решил в своей программе динам. массивы заменить векторами. Вроде бы делаю все как надо, пушу конец... но когда i = 1000 то вылетает Expression: vector subscript out of range vector <double>...
C++ Программу Pascal переписать под c++
Всем доброго времени суток много увожаемые пользователи форума. Прошу помощи у вас, по скольку очень плохо владею языком c++ program lolz; Var A,b,c,d,e,f,g: real; Begin ...
Деление кода на .h .cpp C++
Подскажите пожалуйста как правильно поделить код! Обязательно чтобы были заголовочные файлы и файлы .cpp main.cpp # include <iostream> using namespace std; # include <conio.h> # include...
C++ Дополнение char строк пробелами при записи их в файл Пытаюсь написать простенькую прогу, создающую базу данных имен и номеров сотрудников в файле. Столкнулся со следующей проблемой: при записи строк, имеющих длину меньше длины массива, в файл они... https://www.cyberforum.ru/ cpp-beginners/ thread630538.html
C++ Радио плеер https://www.cyberforum.ru/ cpp-beginners/ thread630531.html
Решил написать кросс платформенный радио плеер (потоковый Icecast2). Куда копать? И с чего лучше начать?
C++ Выделение и освобождение памяти в c++ Не давно наткнулся на такую замечательность : system("PAUSE");//1 раз int *p = new int; // память system("PAUSE");//2 раз delete p;// нет память Запускаю программу,смотрю скока мемори... https://www.cyberforum.ru/ cpp-beginners/ thread630530.html
3050 / 1455 / 492
Регистрация: 29.11.2010
Сообщений: 2,888
30.07.2012, 14:44 0

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

30.07.2012, 14:44. Просмотров 1590. Ответов 4
Метки (Все метки)

Ответ

В деталях объяснять не стану. Алгоритм сортировки пузырьком слишком примитивный. Пройдитесь на листочке бумажки для массива 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;
}


Вернуться к обсуждению:
Отсортировать 1 строку матрицы и 2 столбик по возрастанию
2
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2012, 14:44
Готовые ответы и решения:

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

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

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

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

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