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

Удалить строку и столбец матрицы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.86
hacer
2 / 0 / 1
Регистрация: 10.06.2012
Сообщений: 18
10.06.2012, 20:50     Удалить строку и столбец матрицы #1
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include <iostream>
 
using namespace std;
 
void ReadMatr(int **a, int n, int m);//Ввод матрицы с клавиатуры
 
void PrintMatr(int **a, int n, int m);//Вывод матрицы на экран монитора
 
int P(int **a, int n, int m);//Максимальный элемент главной диагонали
 
int O(int **a, int n, int m, int q);//Исключаю столбец и строку где находиться максимальный элемент
 
 
 
int main()
 
{
 
 int n=3, m=3, i;
 
    int **a;
 
    a = new int*[n] ;
 
    for(i = 0; i < n; i++)
 
 a[i] = new int [m];
 
 ReadMatr(a, n, m);
 
 
 
 O(a, n, m, P(a, n, m)) ;
 
 PrintMatr(a, n, m);
 
 
 
 for(i = 0; i < n; i++)
 
 delete []a[i];
 
 delete []a;
 
 return 0;
 
}
 
 
 
// Ввод матрицы с клавиатуры
 
void ReadMatr(int **a, int n, int m)
 
{
 
 int i, j;
 
 cout << "Input matriza A(" << n << "*" << m << "):" << endl;
 
 for(i = 0; i < n; i++)
 
 for(j = 0; j < m; j++)
 
 cin >> a[i][j];
 
}
 
 
 
// Вывод матрицы на экран монитора
 
void PrintMatr(int **a, int n, int m)
 
{
 
    int i, j;
 
 cout << "Matriza:" << endl;
 
 for(i = 0; i < n; i++)
 
 {
 
 for(j = 0; j < m; j++)
 
 cout << a[i][j] << " ";
 
 cout << endl;
 
 }
 
}
 
 
 
// Максимальный элемент главной диагонали
 
int P(int **a, int n, int m)
 
{
 
    int i, max=0;
 
    if(n>m)
 
    n = m;
 
 for(i = 0; i < n; i++)
 
 {
 
 if (a[max][max]<a[i][i])
 
 max=i;
 
 }
 
 cout<<"max"<<max<<endl;
 
    return max;
 
}
 
 
 
// Исключаю столбец и строку где находиться максимальный элемент 
 
int O(int **a, int n, int m, int q)
 
{
 
 
 
 
 
 
    cout<<"OTBET::::"<<endl;
 
}
Добавлено через 1 минуту
надо удалить от максимального столбец и строку )максимальную нашел а как удаляется не знаю
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2012, 20:50     Удалить строку и столбец матрицы
Посмотрите здесь:

Удалить строку и столбец целочисленной квадратной матрицы C++
Из матрицы удалить строку и столбец, в которых находится первый элемент, равный нулю C++
Удалить заданную строку и столбец матрицы со сдвигом C++
C++ Удалить строку и столбец, на пересечении которых расположен наименьший по модулю элемент матрицы
Удалить из матрицы строку и столбец C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Venzo
 Аватар для Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
10.06.2012, 21:22     Удалить строку и столбец матрицы #2
Либо создавать новый массив с размером [n-1][m-1] и копировать туда все элементы, кроме находящихся на "удяляемых" стоке и столбце.
Либо сдвигать строки, начиная с k+1 до конца матрицы на предыдущую строку(где k-строка, где находится максимальный элемент). со столбцами соответственно аналогично. И уменьшать n и m на единицу, предварительно запомнив в новую переменную(для удаления массива)
Либо использовать вектор
hacer
2 / 0 / 1
Регистрация: 10.06.2012
Сообщений: 18
10.06.2012, 21:34  [ТС]     Удалить строку и столбец матрицы #3
я пытался создать новый но выдает ошибок много
Venzo
 Аватар для Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
10.06.2012, 21:44     Удалить строку и столбец матрицы #4
Цитата Сообщение от hacer Посмотреть сообщение
я пытался создать новый но выдает ошибок много
покажите код, как пытались создать новый.

Не по теме:

используйте теги, когда код вставляете

hacer
2 / 0 / 1
Регистрация: 10.06.2012
Сообщений: 18
10.06.2012, 22:11  [ТС]     Удалить строку и столбец матрицы #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int O(int **a, int n, int m, int q)
{
int i,y;
for(i=0; i<n-1; i++)
{
for(y=q; y<m-1; y++)
{
a[i][y]=a[i][y+1];
a[y][i]=a[y][i+1];
}
}
cout«"OTBET::::"«endl;
}
Добавлено через 1 минуту
Я новый толком создавать не умею ) и эту задачу решить толком не могу
hacer
2 / 0 / 1
Регистрация: 10.06.2012
Сообщений: 18
10.06.2012, 22:52  [ТС]     Удалить строку и столбец матрицы #6
найдите ошибку почему столбец не удаляет а строку не удаляет и в конце как убрать ошибку
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include <iostream>
 
using namespace std;
 
void ReadMatr(int **a, int n, int m);//Ввод матрицы с клавиатуры
 
void PrintMatr(int **a, int n, int m);//Вывод матрицы на экран монитора
 
int P(int **a, int n, int m);//Максимальный элемент главной диагонали
 
int O(int **a, int n, int m);//Исключаю столбец и строку где находиться максимальный элемент
 
 
 
int main()
 
{
 
 int  i;
 const int m = 3;
  const int n = 3;
 
    int **a;
 
    a = new int*[n] ;
 
    for(i = 0; i < n; i++)
 
 a[i] = new int [m];
 
 ReadMatr(a, n, m);
 
 
 P(a, n, m);
 O(a, n, m);
 
 PrintMatr(a, n, m);
 
 
 
 for(i = 0; i < n; i++)
 
 delete []a[i];
 
 delete []a;
 
 return 0;
 
}
 
 
 
// Ввод матрицы с клавиатуры
 
void ReadMatr(int **a, int n, int m)
 
{
 
 int i, j;
 
 cout << "Input matriza A(" << n << "*" << m << "):" << endl;
 
 for(i = 0; i < n; i++)
 
 for(j = 0; j < m; j++)
 
 cin >> a[i][j];
 
}
 
 
 
// Вывод матрицы на экран монитора
 
void PrintMatr(int **a, int n, int m)
 
{
 
    int i, j;
 
 cout << "Matriza:" << endl;
 
 for(i = 0; i < n; i++)
 
 {
 
 for(j = 0; j < m; j++)
 
 cout << a[i][j] << " ";
 
 cout << endl;
 
 }
 
}
 
 
 
// Максимальный элемент главной диагонали
 
int P(int **a, int n, int m)
 
{ int i,j,imax=0,max=0,jmax=0;
 max=a[0][0];
    imax=0;
    jmax=0;
    for (i=0;i<n;i++)
    for(j=0;j<n;j++)
    if (max<a[i][j])  // здесь стояла ;
    {
        max=a[i][j];
        imax=i;
        jmax=j;
    }
}
 
 
 
// Исключаю столбец и строку где находиться максимальный элемент
 
int O(int **a, int n, int m)
 
{
    int i,j,imax,jmax;
 for(i=0;i<n;i++)
    {
        for (j=0;j<n;j++)
            if (i!=imax)
            if(j!=jmax)  // здесь стояла ;
                cout<<" "<<a[i][j];
        cout<<endl;
    }
    for (i=0;i<n;i++)
        delete[] a[i];
    delete[] a;
 
        cout<<"OTBET::::"<<endl;
 
}
Venzo
 Аватар для Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
10.06.2012, 23:55     Удалить строку и столбец матрицы #7
вот ваше создание массива.
C++
1
2
3
4
5
6
7
int **a;
 
 a = new int*[n] ;
 
 for(i = 0; i < n; i++)
 
 a[i] = new int [m];
вот удаление
C++
1
2
3
4
5
for(i = 0; i < n; i++)
 
 delete []a[i];
 
 delete []a;
сделайте по аналогии.
сначало создайте новый массив с меньшим размером и скопируйте в него нужное из исходного, затем исходный удалите.
у вас, кстати, программа неверно "спроектирована". ф-я P возвращает максимальное значение, а нужно чтоб возвращала(или изменяла по ссылке) номера строки и столбца этого элемента.

Не по теме:

еще раз, используйте теги, уважайте других!

hacer
2 / 0 / 1
Регистрация: 10.06.2012
Сообщений: 18
10.06.2012, 23:59  [ТС]     Удалить строку и столбец матрицы #8
у вас, кстати, программа неверно "спроектирована". ф-я P возвращает максимальное значение, а нужно чтоб возвращала(или изменяла по ссылке) номера строки и столбца этого элемента.

Не по теме:

еще раз, используйте теги, уважайте других!

[/QUOTE]

как сделать чтобы возвращала??
Venzo
 Аватар для Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
11.06.2012, 00:12     Удалить строку и столбец матрицы #9
Цитата Сообщение от hacer Посмотреть сообщение
как сделать чтобы возвращала??
извиняюсь, ошибся, посмотрел что возвращается 1 переменная...

главную диагональ имеет только квадратная матрица, а заданная может такой не являться. кол-во строк должно равняться кол-ву столбцов.
hacer
2 / 0 / 1
Регистрация: 10.06.2012
Сообщений: 18
11.06.2012, 00:19  [ТС]     Удалить строку и столбец матрицы #10
как тогда мне записать час он получается макс не считывает
Ne0nX
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 18
11.06.2012, 00:25     Удалить строку и столбец матрицы #11
C++
1
2
3
4
5
6
7
8
9
10
int MaxDig (int **a, int n, int m)
{
    int max=a[0][0];
    for(int i = 0, j=0; i < n,j<m; i++,j++)
    {
        if (max<a[i][j])
            max=a[i][j];
    }
    return max;
}
Вот эта функция должна возвращать макс число диагонали
hacer
2 / 0 / 1
Регистрация: 10.06.2012
Сообщений: 18
11.06.2012, 19:36  [ТС]     Удалить строку и столбец матрицы #12
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#include <iostream>
 
using namespace std;
 
void ReadMatr(int **a, int n, int m);//Ввод матрицы с клавиатуры
 
void PrintMatr(int **a, int n, int m);//Вывод матрицы на экран монитора
 
int P(int **a, int n, int m);//Максимальный элемент главной диагонали
 
int O(int **a, int n, int m, int q);//Исключаю столбец и строку где находиться максимальный элемент
 
 
 
int main()
 
{
 
 int n=3, m=3, i;
 
    int **a;
 
    a = new int*[n] ;
 
    for(i = 0; i < n; i++)
 
 a[i] = new int [m];
 
 ReadMatr(a, n, m);
 
 
 
 O(a, n, m, P(a, n, m)) ;
 
 PrintMatr(a, n, m);
 
 
 
 for(i = 0; i < n; i++)
 
 delete []a[i];
 
 delete []a;
 
 return 0;
 
}
 
 
 
// Ввод матрицы с клавиатуры
 
void ReadMatr(int **a, int n, int m)
 
{
 
 int i, j;
 
 cout << "Input matriza A(" << n << "*" << m << "):" << endl;
 
 for(i = 0; i < n; i++)
 
 for(j = 0; j < m; j++)
 
 cin >> a[i][j];
 
}
 
 
 
// Вывод матрицы на экран монитора
 
void PrintMatr(int **a, int n, int m)
 
{
 
    int i, j;
 
 cout << "Matriza:" << endl;
 
 for(i = 0; i < n; i++)
 
 {
 
 for(j = 0; j < m; j++)
 
 cout << a[i][j] << " ";
 
 cout << endl;
 
 }
 
}
 
 
 
// Максимальный элемент главной диагонали
 
int P(int **a, int n, int m)
 
{
 
    int i, max=0;
 
    if(n>m)
 
    n = m;
 
 for(i = 0; i < n; i++)
 
 {
 
 if (a[max][max]<a[i][i])
 
 max=i;
 
 }
 
 //cout<<"max"<<max<<endl;
 
    return max;
 
}
 
 
 
// Исключаю столбец и строку где находиться максимальный элемент
 
int O(int **a, int n, int m, int q)
 
{
 
    int i,j;
    n=m;
for (i=0;i<n;i++)
    {
        for (j=0;j<n;j++)
            if (i!=q)
 
                cout<<" "<<a[i][j];
        cout<<endl;
    }
    for (i=0;i<n;i++)
        delete[] a[i];
    delete[] a;
 
 
 
 
 
 
    cout<<"OTBET::::"<<endl;
 
}
Добавлено через 1 минуту
я вожу например 1 2 3 == 1 2
4 5 6 == 4 5
6 7 8==

Добавлено через 2 минуты
Вот Задача --Из квадратной матрицы исключить строку и столбец, на пересечении которых находится максимальный элемент главной диагонали.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2012, 19:38     Удалить строку и столбец матрицы
Еще ссылки по теме:

Как в матрице удалить одну строку и столбец? C++
Найти минимальный элемент матрицы и удалить строку и столбец на пересечении этого элемента C++
В матрице удалить соответствующую строку или столбец C++

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

Или воспользуйтесь поиском по форуму:
Дмитрий 93
74 / 59 / 5
Регистрация: 03.06.2011
Сообщений: 309
11.06.2012, 19:38     Удалить строку и столбец матрицы #13
а что вот тут происходит?
C++
1
cout<<"OTBET::::"<<endl;
Yandex
Объявления
11.06.2012, 19:38     Удалить строку и столбец матрицы
Ответ Создать тему
Опции темы

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