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

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

Восстановить пароль Регистрация
 
bz_
6 / 6 / 1
Регистрация: 10.04.2012
Сообщений: 31
20.04.2012, 22:30     Что является причиной ошибки после завершения всех операций? (динамический массив) #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
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, только элементы строки и столбца, номера которых вводит пользователь, заменяются нулями. Однако, после выполнения этой операции происходит ошибка. Не могу понять, почему.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2012, 22:30     Что является причиной ошибки после завершения всех операций? (динамический массив)
Посмотрите здесь:

Что есть причиной ошибки? C++
Создать динамический массив из чисел, расположенных после первого отрицательного числа C++ Builder
C++ Добавление строки в двумерный динамический массив (исправить ошибки)
Как объявить динамический массив, чтобы он был виден во всех процедурах программы? C++
C++ Динамический массив, ошибки в программе
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 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.
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 — не исключение.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
20.04.2012, 22:52     Что является причиной ошибки после завершения всех операций? (динамический массив) #4
Значит, скорей всего, выходите где то за границы массива, проверяйте.
bz_
6 / 6 / 1
Регистрация: 10.04.2012
Сообщений: 31
20.04.2012, 23:12  [ТС]     Что является причиной ошибки после завершения всех операций? (динамический массив) #5
Спасибо огромное! Проблема была именно в этом, теперь все работает.
Yandex
Объявления
20.04.2012, 23:12     Что является причиной ошибки после завершения всех операций? (динамический массив)
Ответ Создать тему
Опции темы

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