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

Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужно написать программу для двухмерной матрици http://www.cyberforum.ru/cpp-beginners/thread716585.html
После ввода с клавиатуры размерности двухмерной матрицы целых чисел, а также введение элементов строками через пробел, вывести на экран отсортированные по убыванию минимальные элементы каждого столбца
C++ Неясность условия (Моделирование автомата) 1.1 Моделирование автомата Автоматом  называется некоторое устройство, которое математи-чески описывается тремя множествами X, Y, S и диаграммой D работы: X = {x1, x2, … , xn} – множество входных символов; Y = {y1, y2, … , ym} – множество выходных символов; S = {s1, s2, … , sk}  множество состояний. Диаграмма строится так. Рисуется К кружков и внутри каждого из них помещается по... http://www.cyberforum.ru/cpp-beginners/thread716583.html
Обмен значений 2 указателей в функции C++
Добрый вечер всем. Хочу при помощи функции менять адреса двух указателей. Вот код: #include <iostream> using namespace std; template <typename T> void swap1 (T *a, T *b) { T *temp_a = a; a = b;
C++ Создать класс регион со следующими данными
Создать класс регион со следующими данными: название обл., Кол-во жителей, площадь, кол-во учебных заведений, кол-во промышленных предприятий. Создать метод для выполнения следующего действия: вывести названия областей с наибольшей и наименьшей плотностью населения.
C++ Подсчёт количества символов и замена http://www.cyberforum.ru/cpp-beginners/thread716566.html
Подсчитать количество символов + стоящих между А и Б, заменить каждый символ 0 на ОО. Код написала, но в чём ошибка не понимаю:( компилятор ругается:( #include <stdio.h> #include <string.h> #include<conio.h> #include<ctype.h> int poisk_AB(char *str); void zamena(char *str); int main(int argc, char *argv) { if (argc==1){
C++ Отсортировать и выдать на экран список После ввода с клавиатуры строками некоторых фамилий и рядом с ними возраста (год рождения) отсортировать и выдать на экран этот список, но отсортированными в порядке, обратном алфавитному, фамилиями подробнее

Показать сообщение отдельно
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
02.12.2012, 19:54     Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик
Вот мое решение. Правда тут немного отладочной информации, но ее легко убрать или поменять исходные данные и посмотреть - правильно ли она будет работать, т.к. я тестировал только один раз
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
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <algorithm>
#include <iomanip>
 
// ищет характеристику nRow строки матрицы matrix с числом столбцов columns
int characterOfRow(const int *matrix, const int columns, const int nRow);
 
void printMatrix(const int *matrix, const int rows, const int columns);
 
int main()
{
   const int rows = 4;
   const int columns = 2;
   int matrix[rows][columns] = { { 6, 6}, {2, 2}, {2, 3}, {-1, -2} };
 
   int curMinCharacter; // для хранее текущей характеристики при обходе матрицы
   int rowForSwap; // номер строки для обмена значениями
 
   //... здесь должна быть инициализация матрицы
 
   printMatrix(&matrix[0][0], rows, columns);
 
   for (int i = 0; i < rows - 1; ++i)
   {
      curMinCharacter = characterOfRow(&matrix[0][0], columns, i);
      rowForSwap = i;
 
      for (int j = i + 1; j < rows; ++j)
      {
         int j_chrs = characterOfRow(&matrix[0][0], columns, j);
 
         if (curMinCharacter > j_chrs)
         {
            curMinCharacter = j_chrs;
            rowForSwap = j;
         }
      }
 
      // если в ходе предыдущего цикла была найдена строка с меньшей характеристикой
      if (rowForSwap != i)
      {
         // меняем местами i и rowForSwap строчки
         std::swap_ranges(matrix[i], matrix[i] + columns, matrix[rowForSwap]);
      }
   }
 
   std::cout << "----------" << std::endl;
 
   printMatrix(&matrix[0][0], rows, columns);
 
   return 0;
}
 
int characterOfRow(const int *matrix, const int columns, const int nRow)
{
   int sum = 0; // для подсчета суммы положительных четных элементов строки nRow
 
   for (int i = 0; i < columns; ++i)
   {
      if (matrix[nRow*columns + i] > 0 && matrix[nRow*columns + i] % 2 == 0)
         sum += matrix[nRow*columns + i];
   }
 
   return sum;
}
 
void printMatrix(const int *matrix, const int rows, const int columns)
{
   for (int i = 0; i < rows; ++i)
   {
      for (int j = 0; j < columns; ++j)
      {
         std::cout << std::setw(4) << matrix[i*columns + j] << ' ';
      }
      std::cout << std::endl;
   }
}
 
Текущее время: 03:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru