Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ while(1); Процессор грузится на 50% http://www.cyberforum.ru/cpp-beginners/thread630650.html
По мнению диспетчера задач винды проц згрузиться на 50% прогой типа int main(){ while(1); } Это нормально или нет?
C++ Распространение приложений, написанных на VS2010 Я написал программу на C++, скомпилировал её в VS2010. Теперь она требует для своей работы установленный рантайм. Как правильно его распространять (в инсталляторе) с моей программой и как правильно его устанавливать на целевом компьютере (если его там ещё нет)? http://www.cyberforum.ru/cpp-beginners/thread630644.html
C++ Производительность DLL
Привет всем, у меня вопрос по производительности подключения DLL-ки по сравнению с чтением из файла. В программе использую небольшую бд (набор массивов "std::vector<>"), которые один раз заполняю, а после вытягиваю из них данные. Для этого сделал класс интерфейс. Поскольку запись данных типа vector<> в файл нужно реализовывать отдельно. Придумал сделать dll-ку в которой сохранить всю...
Где можно найти практические задания по с++ C++
где можно найти практические задания по си и с++?
C++ Vector - out of range или выход за пределы http://www.cyberforum.ru/cpp-beginners/thread630584.html
Решил в своей программе динам. массивы заменить векторами. Вроде бы делаю все как надо, пушу конец... но когда i = 1000 то вылетает Expression: vector subscript out of range vector <double> mass_full(1000); vector <double> mass_sum(1000); iter = 512; for(int i=0;i<iter*2;i++) { mass_full.push_back(1); // тут и 1 пробовал, и i, но не помагает mass_full.at(i+iter) = mass_sum;
C++ Программу Pascal переписать под c++ Всем доброго времени суток много увожаемые пользователи форума. Прошу помощи у вас, по скольку очень плохо владею языком c++ program lolz; Var A,b,c,d,e,f,g: real; Begin Write("vvedite a"); Readln (a); B:=a*a; подробнее

Показать сообщение отдельно
lemegeton
2917 / 1346 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
30.07.2012, 14:44     Отсортировать 1 строку матрицы и 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;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru