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

Добавление элементов в динамический двумерный массив - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Just_2D
0 / 0 / 0
Регистрация: 08.03.2013
Сообщений: 22
20.03.2013, 22:41     Добавление элементов в динамический двумерный массив #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
void arr_2d_manipulation(int** &a, int n, int &m)
{
    int i_max = 0, j_max = 0;
    for(int i=0; i<n; i++)
        for(int j=0; j<m; j++)
            if(a[i][j] > a[i_max][j_max])
            {
                i_max = i;
                j_max = j;
            };
 
    m += 1;
    int **tmp = new int * [n];
    for(int i=0; i<n; i++)
        tmp[i] = new int[m];
 
    for(int i=0; i<n; i++)
        for(int j=0; j<=j_max; j++)
            tmp[i][j] = a[i][j];
    for(int i=0; i<n; i++)
        tmp[i][j_max+1] = 1+rand()%9;
    for(int i=0; i<n; i++)
        for(int j=j_max+2; j<m; j++)
            tmp[i][j] = a[i][j-1];
 
    for(int i=0; i<n; i++)
        delete [] a[i];
    delete [] a;
    a = tmp;
}
При компиляции, появляется такая ошибка.
Миниатюры
Добавление элементов в динамический двумерный массив  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2013, 22:41     Добавление элементов в динамический двумерный массив
Посмотрите здесь:

C++ двумерный динамический массив
Двумерный динамический массив C++
Динамический двумерный массив: найти наибольший из нименьших элементов строк C++
C++ Добавление строки в двумерный динамический массив (исправить ошибки)
C++ Реализовать двумерный динамический треугольный массив. Количество строк и сами элементы вводит пользователь. Количество элементов в строке рассчитывае
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
20.03.2013, 23:07     Добавление элементов в динамический двумерный массив #2
Давайте остальной код.
Just_2D
0 / 0 / 0
Регистрация: 08.03.2013
Сообщений: 22
20.03.2013, 23:22  [ТС]     Добавление элементов в динамический двумерный массив #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
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
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <iomanip>
 
using namespace std;
 
void arr_input(int *a, int n);
void arr_output(int *a, int n);
void arr_1D(int* &a, int &n);
 
 
void arr_2d_input(int **a, int n, int m);
void arr_2d_output(int **a, int n, int m);
void arr_2d_manipulation(int** &a, int n, int &m);
 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "Russian");
 
    cout << "Завдання 1." << endl;
    cout << "Знищити всi елементи з непарними iндексами." << endl;
    int n;
    cout << "Введiть кiлькiсть елементiв в масивi: ";
    cin >> n;
    static int *a = new int[n];
    arr_input(a, n);
    cout << "Отриманий масив: " << endl;
    arr_output(a, n);
    cout << endl;
    cout << "Масив пiсля обробки: " << endl;
    arr_1D(a, n);
    arr_output(a, n);
 
 
    cout << "\n\nЗавдання 2." << endl;
    cout << "Додати стовпчик пiсля стовпчика, що мiстить найбiльший елемент." << endl;
    cin >> n;
    int **arr_2d = new int * [n];
    int m;
    cin >> m;
    for(int i=0; i<n; i++)
        arr_2d[i] = new int[m];
    arr_2d_input(arr_2d, n, m);
    arr_2d_output(arr_2d, n, m);
    arr_2d_manipulation(arr_2d, n, m);
    cout << endl << endl;
    arr_2d_output(arr_2d, n, m);
 
 
    return 0;
}
 
 
void arr_input(int *a, int n)
{
    srand((unsigned int)time(NULL));
    for(int i=0; i<n; i++)
        a[i] = 1+rand()%500;
}
 
 
void arr_output(int *a, int n)
{
    for(int i=0; i<n; i++)
        cout << "a[" << i << "]=" << a[i] << ' ';
}
 
 
void arr_1D(int* &a, int &n)
{
    int cnt;
    cnt = n/2;
    int *b = new int[n-cnt];
    int i_b = 0;
    for(int i=0; i<n; i++)
        if (i%2 == 0)
        {
            b[i_b] = a[i];
            i_b++;
        }
        n -= cnt;
        delete[] a;
        a = b;
}
 
 
 
 
void arr_2d_input(int **a, int n, int m)
{
    for(int i=0; i<n; i++)
        for(int j=0; j<n; j++)
            a[i][j] = 1 + rand()%500;
}
void arr_2d_output(int **a, int n, int m)
{
    cout << setw(4);
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<m; j++)
            cout << a[i][j] << setw(4);
        cout << endl;
    }
}
 
void arr_2d_manipulation(int** &a, int n, int &m)
{
    int i_max = 0, j_max = 0;
    for(int i=0; i<n; i++)
        for(int j=0; j<m; j++)
            if(a[i][j] > a[i_max][j_max])
            {
                i_max = i;
                j_max = j;
            };
 
    m += 1;
    int **tmp = new int * [n];
    for(int i=0; i<n; i++)
        tmp[i] = new int[m];
 
    for(int i=0; i<n; i++)
        for(int j=0; j<=j_max; j++)
            tmp[i][j] = a[i][j];
    for(int i=0; i<n; i++)
        tmp[i][j_max+1] = 1+rand()%9;
    for(int i=0; i<n; i++)
        for(int j=j_max+2; j<m; j++)
            tmp[i][j] = a[i][j-1];
 
    for(int i=0; i<n; i++)
        delete [] a[i];
    delete [] a;
    a = tmp;
}
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
21.03.2013, 00:01     Добавление элементов в динамический двумерный массив #4
C++
1
2
3
4
void arr_2d_input(int **a, int n, int m) {
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            a[i][j] = 1 + rand() % 500;
Добавлено через 1 минуту
ошибка во внутреннем цикле (было n вместо m)
Just_2D
0 / 0 / 0
Регистрация: 08.03.2013
Сообщений: 22
21.03.2013, 00:05  [ТС]     Добавление элементов в динамический двумерный массив #5
Я понял уже)
Обидно, несколько часов сидел не мог понять. Спасибо
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
21.03.2013, 00:07     Добавление элементов в динамический двумерный массив #6
освойте дебагер и не будете тратить часы на поиск ошибок методом пристального взгляда.
Yandex
Объявления
21.03.2013, 00:07     Добавление элементов в динамический двумерный массив
Ответ Создать тему
Опции темы

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