0 / 0 / 1
Регистрация: 14.04.2015
Сообщений: 72
1

Уплотнить матрицу

14.05.2016, 01:03. Показов 2975. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот сама задача:
Кликните здесь для просмотра всего текста
Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями. Найти номер первой из строк, содержащих хотя бы один положительный элемент.


Помогите сформировать алгоритм и хотелось бы как-то обновлять dataGridView после уплотнения массива(матрицы). Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2016, 01:03
Ответы с готовыми решениями:

Уплотнить матрицу
Доброго всем времени суток. Хотелось бы разобраться с одним вопросом. Задание звучит так Дана...

Уплотнить заданную матрицу
1)Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями. 2)Найти номер...

Уплотнить матрицу А, удаляя из нее строки и столбцы заполненные нулями
Пожалуйста помогите:) Уплотнить матрицу А, удаляя из нее строки и столбцы заполненные...

Уплотнить матрицу, удалив из неё все нулевые строки и столбцы
Помогите написать программу на С++. Учусь на 1 курсе. Вникаю потихоньку, но еще плохо разбираюсь....

3
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
14.05.2016, 14:00 2
ranko5445, вот программа для уплотнения матрицы. Скажите, когда находить номер первой строки, содержащий хотя бы один положительный элемент? До или после уплотнения матрицы?

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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
const int N = 5;
int k, t1, t2, p1, p2;
int A[N][N], B[N], C[N];
cout << "Введите матрицу:" << endl;
for (int i = 0; i < N; i++) 
{
for (int j = 0; j < N; j++) 
{
cin >> A[i][j];
}
}
//Обрабатываем строки
p1 = 0;
for (int i = 0; i < N; i++) 
{
k = 0;
for (int j = 0; j < N; j++) 
{
if (A[i][j] == 0) k++;
}
if (k == N) 
{
B[p1] = i;
p1++;
}
}
//Обрабатываем столбцы
p2 = 0;
for (int j = 0; j < N; j++) 
{
k = 0;
for (int i = 0; i < N; i++) 
{
if (A[i][j] == 0) k++;
}
if (k == N) 
{
C[p2] = j;
p2++;
}
}
//Удаляем строки
t1 = 0;
while (t1 < p1)
{
for (int i = B[t1] - t1; i < N - t1; i++)
{
for (int j = 0; j < N; j++)
{
A[i][j] = A[i+1][j];
}
}
t1++;
}
//Удаляем столбцы
t2 = 0;
while (t2 < p2)
{
for (int i = 0; i < N - t1; i++)
{
for (int j = C[t2] - t2; j < N - t2; j++)
{
A[i][j] = A[i][j+1];
}
}
t2++;
}
//Выводим матрицу
cout << "Матрица после уплотнения:" << endl;
for (int i = 0; i < N - t1; i++) 
{
for (int j = 0; j < N - t2; j++) 
{
cout << A[i][j] << " ";
}
cout << endl;
}
system("pause");
return 0;
}
0
0 / 0 / 1
Регистрация: 14.04.2015
Сообщений: 72
15.05.2016, 05:11  [ТС] 3
Fixer_84, после уплотнения пожалуйста.

Добавлено через 22 минуты
Не могу что-то вывести готовую матрицу в dataGridView.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
         }
private: System::Void obnov_Click(System::Object^  sender, System::EventArgs^  e) {
             for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
    dataGridView1->Rows[i]->Cells[j]->Value = A[i][j];
 
}
             }
};
Добавлено через 2 минуты
После выполнения этой команды просто заполняет все ячейки объекта нулями.

Добавлено через 4 часа 41 минуту
Пробовал вывести матрицу просто в Label после вашего уплотнения. Ответ - опять 0.

Добавлено через 6 минут
Разобрался, пропустил пару строк и поэтому массив даже не заполнялся. Но остался один момент. После удаления строки заполненную нулям, предыдущая поднимается вверх, но в конце матрицы(в самом низу) добавляется новая строка с нулями.

Добавлено через 18 минут
Появилась более значительная проблема. Матрица уплотняется только в случае, если она квадратная. А как быть, если она с разной цифрой строк и столбцов?
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
15.05.2016, 15:07 4
Лучший ответ Сообщение было отмечено ranko5445 как решение

Решение

ranko5445, держите программу для прямоугольной матрицы. Плюс номер искомой строки.

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
96
97
98
99
100
101
102
103
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
const int N = 3;
const int M = 4;
int k, t1, t2, p1, p2, num;
int A[N][M], B[N], C[M];
cout << "Введите матрицу:" << endl;
for (int i = 0; i < N; i++) 
{
for (int j = 0; j < M; j++) 
{
cin >> A[i][j];
}
}
//Обрабатываем строки
p1 = 0;
for (int i = 0; i < N; i++) 
{
k = 0;
for (int j = 0; j < M; j++) 
{
if (A[i][j] == 0) k++;
}
if (k == M) 
{
B[p1] = i;
p1++;
}
}
//Обрабатываем столбцы
p2 = 0;
for (int j = 0; j < M; j++) 
{
k = 0;
for (int i = 0; i < N; i++) 
{
if (A[i][j] == 0) k++;
}
if (k == N) 
{
C[p2] = j;
p2++;
}
}
//Удаляем строки
t1 = 0;
while (t1 < p1)
{
for (int i = B[t1] - t1; i < N - t1; i++)
{
for (int j = 0; j < M; j++)
{
A[i][j] = A[i+1][j];
}
}
t1++;
}
//Удаляем столбцы
t2 = 0;
while (t2 < p2)
{
for (int i = 0; i < N - t1; i++)
{
for (int j = C[t2] - t2; j < M - t2; j++)
{
A[i][j] = A[i][j+1];
}
}
t2++;
}
//Выводим матрицу
cout << "Матрица после уплотнения:" << endl;
for (int i = 0; i < N - t1; i++) 
{
for (int j = 0; j < M - t2; j++) 
{
cout << A[i][j] << " ";
}
cout << endl;
}
//Выводим номер искомой строки
for (int i = 0; i < N - t1; i++) 
{
int k = 0;
for (int j = 0; j < M - t2; j++) 
{
if (A[i][j] > 0) k++;
}
if (k > 0)
{
num = i;
break;
}
}
cout << "Номер первой строки, содержащей один и более положительных элементов: " << ++num << endl;
system("pause");
return 0;
}
1
15.05.2016, 15:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2016, 15:07
Помогаю со студенческими работами здесь

Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями
Помогите написать часть программы: &quot;Уплотнить заданную матрицу, удаляя из нее строки и столбцы,...

Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями
Здравствуйте! Уважаемые программисты! У меня такая задача, первую часть я решил а вот в виде...

Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями
Помогите студенту пожалуйста. А то что-то не могу разобраться. Уплотнить заданную матрицу, удаляя...

Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями
Помогите пожалуйста с этим заданием: уплотнить заданную матрицу, удаляя из нее строки и столбцы,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru