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

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

Восстановить пароль Регистрация
 
Ирина123
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 28
08.11.2011, 20:26     матрицы, упорядочить ее строки согласно кол-ву строк с нулями #1
Даны три матрицы M * N, упорядочить по росту сумм элементов строк строки той матрицы у которой больше ненулевых элементов.

И пожалуйста с построчными комментариями
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2011, 20:26     матрицы, упорядочить ее строки согласно кол-ву строк с нулями
Посмотрите здесь:

[B]Дана целочисленная матрица n*m, n,m<=10.Упорядочить(переставить) строки матрицы по возрастанию количества положительных элементов в одной строк[/B] C++
C++ Упорядочить строки матрицы
C++ Ошибка при вводе разного кол-ва строк и столбцов в матрицы. Динамич. матрицы/массивы
C++ .Упорядочить строки матрицы по убыванию значений произведений наименьшего и наибольшего элементов каждой строки
Для каждой строки заданной матрицы А найти столбцы с нулями C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
09.11.2011, 14:32     матрицы, упорядочить ее строки согласно кол-ву строк с нулями #2
Цитата Сообщение от Ирина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
Замечание: При условии, что если присутствуют матрицы с одинаковым количеством ненулевых элементов, то выбирается самая первая из них.
Ирина123
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 28
16.11.2011, 18:08  [ТС]     матрицы, упорядочить ее строки согласно кол-ву строк с нулями #3
А что означает третий параметр в матрицах?
ну 1ый- это номер строки,
2ой-номер столбца,
а третий??
точнее, здесь он н апревой метст стоит A[3][M][N]
"3"-это что???
Ирина123
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 28
16.11.2011, 18:11  [ТС]     матрицы, упорядочить ее строки согласно кол-ву строк с нулями #4
Условие звучит так: даны три матрицы M*N, найти ту, в которой больше нулевых строк, в этой матрице посчитать сумму элементов каждой строки и затем упорядочить строки по возрастанию их суммы, все операции с матрицами реализовать, используя только УКАЗАТЕЛИ а не индексы, т. е.:

например в матрице:
4 5 2 1
0 1 2 1
3 0 7 2
0 0 0 0
сумма элементов каждой строки:
4 5 2 1=12
0 1 2 1=4
3 0 7 1=11
0 0 0 0=0
в итоге должна получиться матрица:
0 0 0 0
0 1 2 1
3 0 7 2
4 5 2 1

Помогите пожалуйста, что-то совсем не знаю как написать
Сыроежка
Заблокирован
16.11.2011, 18:15     матрицы, упорядочить ее строки согласно кол-ву строк с нулями #5
Цитата Сообщение от Ирина123 Посмотреть сообщение
СРОЧНО!!!!Помогите с задачей пожалуйста!
Условие звучит так: даны три матрицы M*N, найти ту, в которой больше нулевых строк, в этой матрице посчитать сумму элементов каждой строки и затем упорядочить строки по возрастанию их суммы, все операции с матрицами реализовать, используя только УКАЗАТЕЛИ а не индексы, т. е.:

например в матрице:
4 5 2 1
0 1 2 1
3 0 7 2
0 0 0 0
сумма элементов каждой строки:
4 5 2 1=12
0 1 2 1=4
3 0 7 1=11
0 0 0 0=0
в итоге должна получиться матрица:
0 0 0 0
0 1 2 1
3 0 7 2
4 5 2 1

Помогите пожалуйста, что-то совсем не знаю как написать
Как я понял, нулевая строка - это строка, содержащая по крайней мере один ноль?!

Напишите самостоятельно код, для проверки, есть ли в строке нулевой элемент или нет. А далее все очень просто!
Ирина123
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 28
16.11.2011, 18:29  [ТС]     матрицы, упорядочить ее строки согласно кол-ву строк с нулями #6
Нет, нулевая строка-это строка, содержащая только нули.
Вам если не трудно, помогите мне с кодом, потому что я пока новичок, и для меня это сложно
Сыроежка
Заблокирован
16.11.2011, 18:35     матрицы, упорядочить ее строки согласно кол-ву строк с нулями #7
Цитата Сообщение от Ирина123 Посмотреть сообщение
Нет, нулевая строка-это строка, содержащая только нули.
Вам если не трудно, помогите мне с кодом, потому что я пока новичок, и для меня это сложно
Я могу помочь вам с кодом, если вы представите какой-нибудь свой код!
Ирина123
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 28
16.11.2011, 18:46  [ТС]     матрицы, упорядочить ее строки согласно кол-ву строк с нулями #8
у меня из написанного только ввод/вывод матрицы используя указатели, дальше я не знаю как писать..
Вот то, что есть

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
include <iostream>
using namespace std;
int main(){
int n,i,j;
int **a, *y;
a=new int*[n];
y=new int[n];
сout<<"Введите размерность матрицы"<<endl;
cin>>n;
for (i=0;i<=n;i++){
    a[i]=new int[n];
    }
 
cout<<"Введите элементы матрицы"<<endl;
for (i=0;i<=n;i++){
        for (j=0; j<=n; j++){
            cin>>a[i][j];
            }
        }
    
    
cout<<"Введенная матрица"<<endl;
    for (i=0;i<=n;i++){
        for (j=0;j<=n;j++){
            cout<<a[i][j]<<" ";
        }
    cout<<endl;
    }
 
 
return 0;
}
Сыроежка
Заблокирован
16.11.2011, 18:51     матрицы, упорядочить ее строки согласно кол-ву строк с нулями #9
У вас в коде написано

C++
1
2
3
4
int n,i,j;
int **a, *y;
a=new int*[n];
y=new int[n];
в то время, как значение переменной n не определено. Как компилятор узнает, сколько нужно выделить памяти?

Наверное нужно сначала ввести значение для n, а уж затем выделять память под массивы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2011, 19:00     матрицы, упорядочить ее строки согласно кол-ву строк с нулями
Еще ссылки по теме:

C++ Упорядочить элементы строк матрицы с четными номерами по убыванию
Упорядочить строки матрицы по убыванию сумм элементов строк C++
Упорядочить строки матрицы, найти минимальную сумму строк C++

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

Или воспользуйтесь поиском по форуму:
Ирина123
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 28
16.11.2011, 19:00  [ТС]     матрицы, упорядочить ее строки согласно кол-ву строк с нулями #10
Наверно да
C++
1
2
3
4
5
6
7
8
9
int n,i,j;
int **a, *y;
сout<<"Введите размерность матрицы"<<endl;
cin>>n;
a=new int*[n];
y=new int[n];
for (i=0;i<=n;i++){
        a[i]=new int[n];
        }
Но проблема не в этом, я не знаю как оформить саму сортировку строк, ну и поиск-сумма в том числе
Yandex
Объявления
16.11.2011, 19:00     матрицы, упорядочить ее строки согласно кол-ву строк с нулями
Ответ Создать тему
Опции темы

Текущее время: 15:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru