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

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

Войти
Регистрация
Восстановить пароль
 
bz_
6 / 6 / 1
Регистрация: 10.04.2012
Сообщений: 31
#1

Что является причиной ошибки после завершения всех операций? (динамический массив) - C++

20.04.2012, 22:30. Просмотров 323. Ответов 4
Метки нет (Все метки)

Что является причиной ошибки после завершения всех операций? (динамический массив)

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
#include <iostream>
#include <conio.h>
#include <ctime>
#include <locale>
using namespace std;
void main(){
    setlocale(LC_CTYPE, "russian");
    srand(time(NULL));
    int **a;
    a = new int*[5];
    for (int i = 0; i < 5; i++)
        a[i] = new int[4];
    for (int i = 0; i < 5; i++, cout << endl){
        for (int j = 0; j < 4; j++){
            a[i][j] = rand() % 10 + 1;
            cout << a[i][j] << "\t";
        }
    }
    int x, y;
    cout << "Введите строку, которую необходимо заменить: ";
    cin >> x;
    cout << "Введите столбец, который необходимо заменить: ";
    cin >> y;
    int **b;
    b = new int*[6];
    for (int i = 0; i < 6; i++)
        b[i] = new int[5];
    for (int i = 0; i < 6; i++, cout << endl){
        for (int j = 0; j < 5; j++){
            if (j == x)
                b[i][j] = 0;
            else {
                if (i != y){
                    if (j <= x){
                        b[i][j] = a[i][j];
                        if (i < y)
                            b[i][j] = a[i][j];
                        else
                            b[i][j] = a[i - 1][j];
                    }
                    else
                        b[i][j] = a[i][j - 1];
                }
                else
                    b[i][j] = 0;
            }
            cout << b[i][j] << "\t";
        }
    }
    delete[] a;
    delete[] b;
    _getch();
}
Все действия выполняются правильно. Есть динамический массив 5х4, после чего создается второй — 6х5, только элементы строки и столбца, номера которых вводит пользователь, заменяются нулями. Однако, после выполнения этой операции происходит ошибка. Не могу понять, почему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2012, 22:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что является причиной ошибки после завершения всех операций? (динамический массив) (C++):

Что есть причиной ошибки? - C++
Здравствуйте. Задача: Функция, принимает в качестве параметров: многозначное целое число, символ – разделитель. Возвращает строку...

Динамический массив, ошибки в программе - C++
Пробовала поразному описывать динамический массив и всё равно программка не работает... со статическими работает идеально, а начинаю...

Определите значение значений всех переменных после выполнения операций - C++
2. Определите значение значений всех переменных после выполнения операций: a=-1 b=1 d=a+++2-(--b); c=a+1+(--d);

После выполнения (завершения) функции test переменная умрет, а что будет с переменной в Result? - C++
class abc { public: int argc; char **argv; char **azColName; }; std::list&lt;abc&gt; Result;

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

Объявить и заполнить двумерный динамический массив случайными числами от 10 до 50 - исправить ошибки в коде - C++
Здравствуйте есть задача 3:http://http://purecodecpp.com/archives/1284 #include&lt;iostream&gt; using namespace std; int ny,my,i,n,rez,qwa;...

4
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
20.04.2012, 22:33 #2
C++
1
2
3
4
5
6
7
8
for ( int i = 0; < 5; i++ )
   delete [] a[ i ];
 
for ( int i = 0; i < 6; i++ )
   delete [] b[ i ];
 
delete [] a;
delete [] b;
На будущее запомните правило - на каждый new нужен свой delete.
1
bz_
6 / 6 / 1
Регистрация: 10.04.2012
Сообщений: 31
20.04.2012, 22:46  [ТС] #3
Цитата Сообщение от Toshkarik Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
for ( int i = 0; < 5; i++ )
   delete [] a[ i ];
 
for ( int i = 0; i < 6; i++ )
   delete [] b[ i ];
 
delete [] a;
delete [] b;
На будущее запомните правило - на каждый new нужен свой delete.
Черт, какая невнимательность! Спасибо !

Добавлено через 8 минут
Но проблема, тем не менее, не в этом. Ошибка вылетает сразу после вывода всех элементов. Вне цикла операции уже не производятся; удаление a и b — не исключение.
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
20.04.2012, 22:52 #4
Значит, скорей всего, выходите где то за границы массива, проверяйте.
1
bz_
6 / 6 / 1
Регистрация: 10.04.2012
Сообщений: 31
20.04.2012, 23:12  [ТС] #5
Спасибо огромное! Проблема была именно в этом, теперь все работает.
0
20.04.2012, 23:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2012, 23:12
Привет! Вот еще темы с ответами:

Найти причины возникновения ошибок в коде и исправить эти ошибки (динамический двумерный массив) - C++
Подскажите пожалуйста,что я упустила, где шибка? #include &lt;iostream&gt; using namespace std; void main() { int n=0; int...

динамический массив,что не так - C++
#include &quot;stdafx.h&quot; #include &lt;algorithm&gt; #include &lt;iostream&gt; using namespace std; int main(int argc, char* argv) { ...

Найти причины возникновения ошибок в коде и исправить эти ошибки (динамический массив как поле класса) - C++
когда запускаю, пишет что нет прав доступа для записи в память. если писать без класса, то все работает P.S. использую MVS Express 2015...

Как объявить динамический массив, чтобы он был виден во всех процедурах программы? - C++
Доброго времени суток! Суть проблемы: в Visual Studio создана форма с кнопкой, при нажатии на которую, из файла считываются необходимые...


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

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

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