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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Bubbles
1 / 1 / 0
Регистрация: 28.05.2013
Сообщений: 132
#1

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

09.02.2014, 20:57. Просмотров 692. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2014, 20:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Здесь есть удаление столбца, как добавить удаление строки (C++):

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

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

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

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

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

Удаление строки из файла\либо удаление самого файла. - C++
День добрый, вот функция(используемые переменные объявленны ранее): void delete_cruise() { FILE *fout; open_file(&quot;abase.dat&quot;); ...

6
zss
Модератор
Эксперт С++
6404 / 5970 / 1945
Регистрация: 18.12.2011
Сообщений: 15,401
Завершенные тесты: 1
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
Bubbles
1 / 1 / 0
Регистрация: 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
zss
Модератор
Эксперт С++
6404 / 5970 / 1945
Регистрация: 18.12.2011
Сообщений: 15,401
Завершенные тесты: 1
09.02.2014, 21:32 #4
Так зачем же Вы создаете два массива с одним и тем же именем?
И зачем удалять массив m в строках 41-44. Он же потом используется!!!
0
Bubbles
1 / 1 / 0
Регистрация: 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
Stella
75 / 75 / 5
Регистрация: 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
zss
Модератор
Эксперт С++
6404 / 5970 / 1945
Регистрация: 18.12.2011
Сообщений: 15,401
Завершенные тесты: 1
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2014, 15:56
Привет! Вот еще темы с ответами:

Удаление столбца в массиве - C++
Помогите пожалуйста, как можно удалить из двумерного массива N x M столбцов которые содержат нули?

Удаление столбца массива - C++
Не выходит удаление столбца!!! #include &quot;iostream&quot; #include &quot;ctime&quot; using namespace std; int main() { int i,...

Удаление столбца в двумерном динамическом массиве - C++
Необходимо удалить столбец, содержащий хотя бы один ноль, из двумерного динамического массива.(матрица) Кода нет, так как выходит ерунда.

Удаление последнего столбца динамической матрицы - C++
Здрасти, я все со своими массивами. У меня есть двумерный динамический массив Matrix 6*4. Удаление последнего столбца надо так делать?:...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
10.02.2014, 15:56
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru