2 / 2 / 1
Регистрация: 28.05.2013
Сообщений: 132
1

Здесь есть удаление столбца, как добавить удаление строки

09.02.2014, 20:57. Показов 2227. Ответов 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
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int n;
do {cout << "Razmer massiva: "; cin >> n; system("cls");}
while (n<2);
 
cout << "osnovnoi massiv : \n";
int ** m = new int*[n];
for (int i=0;i<n; i++) 
{
     m[i] = new int[n];
    for (int I=0;I<n;I++) 
    {
        m[i][I]=rand()%10; 
        cout.width (3);
        cout << m[i][I];
    }
    cout << "\n";
} 
int k;
do {cout << "\nYdalitb stolbik #?-"; cin >> k;} while (k>n || k<1);
k--;
 
cout << "Massiv posle ydaleniya: \n";
int ** M = new int*[n-1];
int I=0;
for (int i=0;i<n; i++) 
{
    M[i] = new int[n];
    copy (&m[i][I], &m[i][k], &M[i][0]);
    copy (&m[i][k + 1], &m[i][n], &M[i][k]); 
    for (int I=0;I<n-1;I++)
    {
        cout.width (3);
        cout << M[i][I];
    }
    cout << "\n";
}
for (int i=n; i>0;i--)
{
delete m[i];
delete [] m;
}
cout << "\n deleted: \n";
for (int i=0;i<n; i++) 
{
    for (int I=0;I<n;I++)  
    {
        cout.width (8);
        cout << m[i][I];
    }
    cout << "\n";    
}
system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.02.2014, 20:57
Ответы с готовыми решениями:

Удаление столбца и строки в матрице
Доброго времени суток всем. У меня возникла следующая проблема при программировании на с++, а...

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

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

Вставка столбца, удаление строки в прямоугольной матрие
Задано прямоугольную матрицу.Вставить новый столбец после последнего максимального элемента(без...

6
Модератор
Эксперт С++
13331 / 10633 / 6352
Регистрация: 18.12.2011
Сообщений: 28,392
09.02.2014, 21:08 2
Удаление k-го столбца
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int ** M = new int*[n];
int I=0;
for (int i=0;i<n; i++) 
{
    M[i] = new int[n-1];
    for (int I=0;I<k;I++)
    {
        M[i][I]=m[i][I];
    }
    for (int I=k;I<n-1;I++)
    {
        M[i][I]=m[i][I+1];
    }
}
Удаление k-ой строки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int ** M = new int*[n-1];
int I=0;
for (int i=0;i<k; i++) 
{
    M[i] = new int[n];
    for (int I=0;I<n;I++)
    {
        M[i][I]=m[i][I];
    }
}
for (int i=k;i<n-1; i++) 
{
    M[i] = new int[n];
    for (int I=0;I<n;I++)
    {
        M[i][I]=m[i+1][I];
    }
}
1
2 / 2 / 1
Регистрация: 28.05.2013
Сообщений: 132
09.02.2014, 21:27  [ТС] 3
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
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int n;
do {cout << "Razmer massiva: "; cin >> n; system("cls");}
while (n<2);
 
cout << "osnovnoi massiv : \n";
int ** m = new int*[n];
for (int i=0;i<n; i++) 
{
     m[i] = new int[n];
    for (int I=0;I<n;I++) 
    {
        m[i][I]=rand()%10; 
        cout.width (3);
        cout << m[i][I];
    }
    cout << "\n";
} 
int k;
cout<<"k= ";
cin>>k;
int ** M = new int*[n];
int I=0;
for (int i=0;i<n; i++) 
{
    M[i] = new int[n-1];
    for (int I=0;I<k;I++)
    {
        M[i][I]=m[i][I];
    }
    for (int I=k;I<n-1;I++)
    {
        M[i][I]=m[i][I+1];
    }
}
for (int i=n; i>0;i--)
{
delete m[i];
delete [] m;
}
cout << "\n deleted: \n";
for (int i=0;i<n; i++) 
{
    for (int I=0;I<n;I++)  
    {
        cout.width (8);
        cout << m[i][I];
    }
    cout << "\n";    
}
int ** M = new int*[n-1];
int I=0;
for (int i=0;i<k; i++) 
{
    M[i] = new int[n];
    for (int I=0;I<n;I++)
    {
        M[i][I]=m[i][I];
    }
}
for (int i=k;i<n-1; i++) 
{
    M[i] = new int[n];
    for (int I=0;I<n;I++)
    {
        M[i][I]=m[i+1][I];
    }
}
for (int I=n; I>0;I--)
{
delete m[I];
delete [] m;
}
cout << "\n deleted: \n";
for (int i=0;i<n; i++) 
{
    for (int I=0;I<n;I++)  
    {
        cout.width (8);
        cout << m[i][I];
    }
    cout << "\n";    
}
system("pause");
}
Ошибки выдает
0
Модератор
Эксперт С++
13331 / 10633 / 6352
Регистрация: 18.12.2011
Сообщений: 28,392
09.02.2014, 21:32 4
Так зачем же Вы создаете два массива с одним и тем же именем?
И зачем удалять массив m в строках 41-44. Он же потом используется!!!
0
2 / 2 / 1
Регистрация: 28.05.2013
Сообщений: 132
09.02.2014, 22:52  [ТС] 5
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
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int n;
do {cout << "Razmer massiva: "; cin >> n; system("cls");}
while (n<2);
 
cout << "osnovnoi massiv : \n";
int ** m = new int*[n];
for (int i=0;i<n; i++) 
{
     m[i] = new int[n];
    for (int I=0;I<n;I++) 
    {
        m[i][I]=rand()%10; 
        cout.width (3);
        cout << m[i][I];
    }
    cout << "\n";
} 
int k;
cout<<"k= ";
cin>>k;
int ** M = new int*[n];
int I=0;
for (int i=0;i<n; i++) 
{
    M[i] = new int[n-1];
    for (int I=0;I<k;I++)
    {
        M[i][I]=m[i][I];
    }
    for (int I=k;I<n-1;I++)
    {
        M[i][I]=m[i][I+1];
    }
}
cout << "\n deleted: \n";
for (int i=0;i<n; i++) 
{
    for (int I=0;I<n;I++)  
    {
        cout.width (8);
        cout << m[i][I];
    }
    cout << "\n";    
}
for (int i=0;i<k; i++) 
{
    M[i] = new int[n];
    for (int I=0;I<n;I++)
    {
        M[i][I]=m[i][I];
    }
}
for (int i=k;i<n-1; i++) 
{
    for (int I=0;I<n;I++)
    {
        M[i][I]=m[i+1][I];
    }
}
for (int i=n; i>0;i--)
{
delete m[i];
delete [] m;
}
for (int I=n; I>0;I--)
{
delete m[I];
delete [] m;
}
cout << "\n deleted: \n";
for (int i=0;i<n; i++) 
{
    for (int I=0;I<n;I++)  
    {
        cout.width (8);
        cout << m[i][I];
    }
    cout << "\n";    
}
system("pause");
}
Повторного создания массива нет и 41-44 строки, теперь находятся внизу..не работает, как нужно.
0
75 / 75 / 10
Регистрация: 26.02.2013
Сообщений: 224
09.02.2014, 23:27 6
Bubbles, вы там с индексами напутали.
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
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    int n;
    do {cout << "Razmer massiva: "; cin >> n; system("cls");}
    while (n<2);
 
    cout << "osnovnoi massiv : \n";
    int ** m = new int*[n];
    for (int i=0;i<n; i++) 
    {
        m[i] = new int[n];
        for (int I=0;I<n;I++) 
        {
            m[i][I]=rand()%10; 
            cout.width (3);
            cout << m[i][I];
        }
        cout << "\n";
    } 
    int k;
    cout<<"k= ";
    cin>>k;
    int ** M = new int*[n];
    int I=0;
    for (int i=0;i<n; i++) 
    {
        M[i] = new int[n-1];
        for (int I=0;I<k;I++)
        {
            M[i][I]=m[i][I];
        }
        for (int I=k;I<n-1;I++)
        {
            M[i][I]=m[i][I+1];
        }
    }
 
    cout << "\n deleted: \n";
    for (int i=0;i<n; i++) 
    {
        for (int I=0;I<n-1;I++)  
        {
            cout.width (8);
            cout << M[i][I];
        }
        cout << "\n";    
    }
 
 
    for (int i=0;i<k; i++) 
    {
        for (int I=0;I<n-1;I++)
            M[i][I]=m[i][I];
    }
    for (int i=k;i<n-1; i++)
    {
        for (int I=0;I<n-1; I++) 
            M[i][I]=m[i+1][I];
 
    }
 
    cout << "\n deleted: \n";
    for (int i=0;i<n-1; i++) 
    {
        for (int I=0;I<n-1;I++)  
        {
            cout.width (8);
            cout << M[i][I];
        }
        cout << "\n";    
    }
 
    for (int i=0; i<n;i++)
        delete m[i];
    delete [] m;
    
    for (int i=0; i<n;i++)
        delete M[i];
    delete [] M;
    
    system("pause");
}
1
Модератор
Эксперт С++
13331 / 10633 / 6352
Регистрация: 18.12.2011
Сообщений: 28,392
10.02.2014, 15:56 7
После исправления целого ряда огрехов получился такой код:
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
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    int n;
    do {cout << "Razmer massiva: "; cin >> n; system("cls");}
    while (n<2);
 
    cout << "osnovnoi massiv : \n";
    int ** m = new int*[n];
    for (int i=0;i<n; i++) 
    {
        m[i] = new int[n];
        for (int I=0;I<n;I++) 
        {
            m[i][I]=rand()%10; 
            cout.width (3);
            cout << m[i][I];
        }
        cout << "\n";
    } 
    int k;
    cout<<"k= ";
    cin>>k;
    int ** M = new int*[n];
    for (int i=0;i<n; i++) 
    {
        M[i] = new int[n-1];
        for (int I=0;I<k;I++)
        {
            M[i][I]=m[i][I];
        }
        for (int I=k;I<n-1;I++)
        {
            M[i][I]=m[i][I+1];
        }
    }
 
    cout << "\n deleted: \n";
    for (int i=0;i<n; i++) 
    {
        for (int I=0;I<n-1;I++)  
        {
            cout.width (8);
            cout << M[i][I];
        }
        cout << "\n";    
    }
 
 
    int** M2 = new int*[n-1];// нельзя использовать M (он другого размера)
    for (int i=0;i<n-1; i++) // создаем весь массив заранее
        M2[i] = new int[n];
    for (int i=0;i<k; i++) 
    {
        for (int I=0;I<n;I++)
            M2[i][I]=m[i][I];
    }
    for (int i=k;i<n-1; i++)
    {
        for (int I=0;I<n; I++) 
            M2[i][I]=m[i+1][I];
 
    }
 
    cout << "\n deleted: \n";
    for (int i=0;i<n-1; i++) 
    {
        for (int I=0;I<n;I++)  
        {
            cout.width (8);
            cout << M2[i][I];
        }
        cout << "\n";    
    }
 
    for (int i=0; i<n;i++)
        delete m[i];
    delete [] m;
    
    for (int i=0; i<n;i++)
        delete M[i];
    delete [] M;
   for (int i=0; i<n-1;i++)
        delete M2[i];
    delete [] M2;
     
    system("pause");
}
0
10.02.2014, 15:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2014, 15:56
Помогаю со студенческими работами здесь

Удаление строки и столбца в матрице с максимальным элементом
Доброго времени суток. Выделил память под матрицу. Заполнил её случайными элементами. Нашел...

Удаление строки или столбца из двумерного массива
Собственно сабж. Как это сделать? Есть какие то методы? Например удалить из массива строку...

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

Удаление строки из файла\либо удаление самого файла.
День добрый, вот функция(используемые переменные объявленны ранее): void delete_cruise() { FILE...


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

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

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