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

матрицы, упорядочить ее строки согласно кол-ву строк с нулями - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти количество похожих столбцов матрицы http://www.cyberforum.ru/cpp-beginners/thread385301.html
Дана целочисленная матрица размера M × N, элементы которой могут принимать значения от 0 до 100. Различные столбцы матрицы назовем похожими, если совпадают множества чисел, встречающихся в этих столбцах. Найти количество столбцов, похожих на последний столбец данной матрицы.
C++ Кольцевая однонаправленная очередь Здравствуйте! Нужно реализовать кольцевую однонаправленную очередь. С простой очередью разобрался, но точную информацию про "кольцевую однонаправленную" найти не могу. Поразмыслив логически, пришел к выводу что кольцевая однонаправленная очередь, это очередь фиксированного размера, 'head' которого двигается по кругу? А если добавить элемент, то добавляется он на место того элемента, что стоит... http://www.cyberforum.ru/cpp-beginners/thread385295.html
Правильно ли объявлен массив? C++
задание: Объявить массив переменных p вещественного типа, состоящий из 5 элементов. Инициализировать его значениями -0.002, 3.476, 10*23, 11*10-9,5. Тип данных элементов массива подобрать в соответствии с инициализацией. результат: float p { float p=-0,002 float p=3,476 double p=10*23, double p=11*10-9,
C++ обращение к объектам системы
Всем привет. Как написать программу которая бы обращалась к определенным объектам в системе,т.е. например я хочу чтобы она настраивала мне сеть,прописывала адрес,шлюз и т.д. или скажем чтобы она открывала пуск и заходила в игру косынка,ничего определенного не прошу, просто хочу принцип понять, это ООП или или и в С++ можно реализовать? хочу книги почитать или примеры на форуме посмотреть)
C++ Вывести элементы матрицы по спирали http://www.cyberforum.ru/cpp-beginners/thread385262.html
Дана квадратная матрица A порядка M (M — нечетное число). Начиная с элемента A1,1 и перемещаясь по часовой стрелке, вывести все ее эле-менты по спирали: первая строка, последний столбец, последняя строка в обратном порядке, первый столбец в обратном порядке, оставшиеся эле-менты второй строки и т. д.; последним выводится центральный элемент матрицы.
C++ Помогите написать программу с датчиком случайных чисел) Разработать программу для выполнения над матрицей размером 5х5 операций в соответствии с вариантом. На печать вывести исходную и преобразованную матрицы. Вычисление суммы положительных элементов и количества отрицательных элементов матрицы. Исходную матрицу сформировать, используя датчик псевдослучайных чисел RANDOM. подробнее

Показать сообщение отдельно
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
09.11.2011, 14:32     матрицы, упорядочить ее строки согласно кол-ву строк с нулями
Цитата Сообщение от Ирина123 Посмотреть сообщение
Даны три матрицы M * N, упорядочить по росту сумм элементов строк строки той матрицы у которой больше ненулевых элементов.

И пожалуйста с построчными комментариями
Очень упрощенный код:
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <stdio.h> // для фун. printf 
#include <stdlib.h> // для фун. srand rand
#include <time.h> // для фун. time
 
#define M 3
#define N 3
 
main() {
        int A[3][M][N];
        int T;
        int cA[3] = {0,0,0};
        int sums[M] = {0,0,0};
        
        int i, j, k, max, tmp;
        
        srand(time(NULL));
        // Инициализация матриц случайными числами от -5 до 5
        // включая подсчет ненулевых элементов
        for (i = 0; i < M; i++) {
                for (j = 0; j < N; j++) {
                        A[0][i][j] = rand() % 11 - 5;
                        A[1][i][j] = rand() % 11 - 5;
                        A[2][i][j] = rand() % 11 - 5;
                        if (A[0][i][j] != 0) cA[0]++;
                        if (A[1][i][j] != 0) cA[1]++;
                        if (A[2][i][j] != 0) cA[2]++;
                }
        }
        // Вывод трех матриц
        for (i = 0; i < M; i++) {
                for (j = 0; j < N; j++) {
                        printf("%3d", A[0][i][j]);
                }
                printf("\t\t");
                
                for (j = 0; j < N; j++) {
                        printf("%3d", A[1][i][j]);
                }
                printf("\t\t");
                
                for (j = 0; j < N; j++) {
                        printf("%3d", A[2][i][j]);
                }
                printf("\n");
        }
        printf("\n");
        // поиск номера матрицы с большим количеством ненулевых элементов
        if (cA[0] >= cA[1]) {
                T = 0;
        } else {
                T = 1;
        }       
        if (cA[T] < cA[2]) {
                T = 2;
        }
        // подсчет суммы каждой строки, найденой матрицы
        for (i = 0; i < M; i++) {
                for (j = 0; j < N; j++) {
                        sums[i] += A[T][i][j];
                }
        }
        // сортировка строк матрицы
        for (i = 0; i < M - 1; i++) {
                max = i;
                for (k = i + 1; k < M; k++) {
                        if (sums[i] < sums[k]) {
                                max = k;
                        }
                }
                if (i != max) {
                        for (j = 0; j < N; j++) {
                                tmp = A[T][i][j];
                                A[T][i][j] = A[T][max][j];
                                A[T][max][j] = tmp;
                        }
                }
        }
        // Вывод трех матриц
        for (i = 0; i < M; i++) {
                for (j = 0; j < N; j++) {
                        printf("%3d", A[0][i][j]);
                }
                printf("\t\t");
                
                for (j = 0; j < N; j++) {
                        printf("%3d", A[1][i][j]);
                }
                printf("\t\t");
                
                for (j = 0; j < N; j++) {
                        printf("%3d", A[2][i][j]);
                }
                printf("\n");
        }
}
вывод:
Код
  5 -4 -2		  4  3  0		  5 -4 -4
  3 -1  1		 -3  0 -1		  5  2 -5
  5  1  3		  5 -2 -1		  4  5  5

  5  1  3		  4  3  0		  5 -4 -4
  5 -4 -2		 -3  0 -1		  5  2 -5
  3 -1  1		  5 -2 -1		  4  5  5
Замечание: При условии, что если присутствуют матрицы с одинаковым количеством ненулевых элементов, то выбирается самая первая из них.
 
Текущее время: 17:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru