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

Освобождение динамической памяти из-под прямоугольной матрицы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Char массив, развернуть отдельные слова http://www.cyberforum.ru/cpp-beginners/thread1543282.html
Здравствуйте, Подскажите пожалуйста, мне нужно в предложении все слова развернуть в обратном порядке, но следование данных слов должно оставаться не измененным, при реализации, все сбивается при вызове функции strrev(copyName), не могу понять в чем проблема, #include<iostream> #include<cstring> template<typename T> T *Reverse(T*pName, T* smart);
C++ Раскодировка ANSI Подскажите как раскодировать ANSI. Может быть есть онлайн декодеры или что то в этом роде? http://www.cyberforum.ru/cpp-beginners/thread1543277.html
C++ Вычислить сумму элементов массива в соответствии с заданной формулой
Ребят, как сделать чтоб массив: 1*2+2*3+...n*m
C++ Матрица char некорректно отображается
Здравствуйте. Проблема в том что если очень большая размерность массива то символы отображает криво. подскажите как исправить. Пишу в CodeBlocks. #include <iostream> using namespace std; int main()
C++ С2057:Требуется константное выражение http://www.cyberforum.ru/cpp-beginners/thread1543237.html
При компиляции выдает ошибки: вот часть кода: int main(int argc, char* argv) { setlocale(LC_ALL, "RUSSIAN"); int t; cin >> t;
C++ Найти слова содержщие символы отличные от букв для заданной строки текста определите слова, которые содержат символы, отличные от букв. напишите фукнцию, определяющую тип символа строки. подробнее

Показать сообщение отдельно
Evigilans
 Аватар для Evigilans
3 / 3 / 2
Регистрация: 02.10.2015
Сообщений: 12

Освобождение динамической памяти из-под прямоугольной матрицы - C++

02.10.2015, 23:55. Просмотров 178. Ответов 3
Метки (Все метки)

Добрый вечер! При попытке очищения памяти после завершения работы программы с прямоугольной матрицей m на n мне выдаёт ошибку а-ля "Необработанное исключение в "0x619d31ea" в "***.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfeeefee2"."
Насколько я понимаю, это проблема с очищением памяти, не так ли?
Прошу объяснить, как можно исправить данную проблему.

Вот текст программы:

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
#include <iostream>
using namespace std;
 
int main() {
    setlocale(LC_ALL, "Russian");
    int n, m, i, j, k, s1 = 0, s2 = 0;
    int **arr;
    cout << "Введите количество строк вашей прямоугольной матрицы: ";
    cin >> n;
    cout << "Введите количество столбцов вашей прямоугольной матрицы: ";
    cin >> m;
    arr = new int*[n];
    for (i = 0; i < n; i++) {
        arr[i] = new int[m];
    }
    if (n <= 20, m <= 20) {
        cout << "Введите элементы вашей прямоугольной матрицы: " << endl;
        for (i = 0; i < n; i++) {
            for(j = 0; j < m; j++) {
                cin >> arr[i][j];
            }
        }
        for (i = 0; i < n - 1; i++) {
            for (k = n - 1; k > i; k--) {
                for (j = 0; j < m; j++) {
                    s1 = s1 + arr[i][j];
                    s2 = s2 + arr[k][j];
                }
                if (s1 > s2) {
                    swap(arr[i], arr[k]);
                }
                s1 = 0;
                s2 = 0;
            }
        }
        cout << "Ваша новая матрица выглядит вот так: " << endl;
        for (i = 0; i < n; i++) {
            for (j = 0; j < m; j++) {
                cout << arr[i][j] << " ";
            }
            cout << endl;
        }
        k = 1;
        for (j = 0; j < m; j++) {
            for (i = 0; i < n; i++) {
                if (arr[i][j] < 0) {
                    k = 0;
                }
            }
            if (k == 1) {
                cout << "Первый из столбцов, не содержащих отрицетельных элементов, это столбец номер " << j + 1 << endl;
                break;
            }
            k = 1;
            if (j == m - 1) {
                cout << "Все стобцы содержат хотя бы один отрицательный элемент!" << endl;
            }
        }
    }
    else {
        cout << "Размеры вашей матрицы превосходят 20! Перезапустите программу и попробуйте ещё раз!" << endl;
    }
    for (i = 0; i < n; i++) {
        delete [] arr[i];
        delete [] arr;
    }
    system("pause");
    return 0;
}
Извиняюсь за говнокод, за трудоёмкость за куб (не придумал способа, как сделать проще) и за нубство.
Заранее спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru