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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Just_2D
0 / 0 / 0
Регистрация: 08.03.2013
Сообщений: 22
#1

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

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

Добавление строки в двумерный динамический массив (исправить ошибки) - C++
Выкладываю лаб. Помогите исправить ошибки в функции с добавлением строки в двумерный динамический массив , уже противно смотреть эту на...

Динамический двумерный массив: найти наибольший из нименьших элементов строк - C++
здравствуйте! пишу первый раз, не знаю точно, к С или С++ относится вопрос (п.ч. там нет объектов), я учусь на 2 курсе, нам задали написать...

Двумерный динамический массив. Все нечетные строки матрицы сдвинуть циклически на К элементов влево - C++
Помогите пожалуйста нужно нужно создать двумерный динамический массив и все нечетные строки матрицы сдвинуть циклически на К элементов...

Класс "динамический массив" - добавление и удаление элементов в рантайме - C++
#ifndef ARRAY// if not defined #define ARRAY Class ARRAY{ Public ARRAY(); ~ ARRAY(); Void push_back (int...

Реализовать двумерный динамический треугольный массив. Количество строк и сами элементы вводит пользователь. Количество элементов в строке рассчитывае - C++
Реализовать двумерный динамический треугольный массив. Количество строк и сами элементы вводит пользователь. Количество элементов в строке...

Динамический двумерный массив - C++
Если число находится в интервале от 100 до 110, то используя подпрограмму, в матрицах Р(N,M), Q(N1,M1) и R(N2,M2) найти и отпечатать L -...

5
vua72
416 / 416 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
20.03.2013, 23:07 #2
Давайте остальной код.
0
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;
}
0
vua72
416 / 416 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
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)
0
Just_2D
0 / 0 / 0
Регистрация: 08.03.2013
Сообщений: 22
21.03.2013, 00:05  [ТС] #5
Я понял уже)
Обидно, несколько часов сидел не мог понять. Спасибо
0
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
21.03.2013, 00:07 #6
освойте дебагер и не будете тратить часы на поиск ошибок методом пристального взгляда.
0
21.03.2013, 00:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2013, 00:07
Привет! Вот еще темы с ответами:

Двумерный динамический массив - C++
Здравствуйте, задание такое: &quot;Описать двумерный массив R целых чисел, размерностью NхM элементов, заполнять массив случайными числами по...

Двумерный динамический массив - C++
Выскакивает ошибка Ошибка C2440 =: невозможно преобразовать &quot;int *&quot; в &quot;int **&quot; ConsoleApplication5 Из-за этого не выполняются...

Двумерный динамический массив - C++
Необходимо ввести с клавиатуры количество строк и столбцов массива(матрица размером N*M), ввести исходные данные. Удалить столбец матрицы,...

Двумерный динамический массив - C++
Здравствуйте, подскажите пожалуйста где ошибка? реализовал 2 фукнции ввода и вывода массива. #include &lt;iostream&gt; #include &lt;windows.h&gt; ...


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

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

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