Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495

Необработаное исключение по адресу

05.12.2018, 02:56. Показов 1129. Ответов 7

Студворк — интернет-сервис помощи студентам
Доброй ночи!
У меня выскочила проблема:
Создал два массива(динамических), первый записывает значения в другой предварительно сделав некоторые обчисления.
До этого ввел размеры каждого массива вручную(через клавиатуру). Допустим для первого ввел n = 5(n x n), и для второго - m = 3(m x m).
дальше на следующий тест решил поменять значения(поменял местами n = 3, a m = 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
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
#include "stdafx.h"
#include <iostream>
#include <ctime>
 
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
 
void Memory_escape(int** arr, int size_x);
void Add(int** arr, int size_x);
void Show(int** arr, int size_x);
 
int main(int argc, char** argv)
{
    srand(time(0));
    int n;
    cout << "Enter \"n\", please: ";
    cin >> n;
    
 
    int** array_original = new int *[n];
    Add(array_original, n);
 
    for (int k = 0; k < n; k++)
        for (int j = 0; j < n; j++)
        {
            array_original[k][j] = -55 + rand() % 100;
        }
    Show(array_original, n);
 
    int negative = 0;
    int positive = 0;
 
    for (int k = 0; k < n; k++)
        for (int j = 0; j < n; j++)
        {
            if (array_original[k][j] < 0 && array_original[k][j] % 2 == 0) negative += array_original[k][j];
            if (array_original[k][j] > 0 && array_original[k][j] % 2 != 0) positive += array_original[k][j];
        }
    int N;
    cout << "Enter \"n\", please: ";
    cin >> N;
 
    int** array_NEoriginal = new int*[N];
    Add(array_NEoriginal, N);
 
    for (int k = 0; k < N; k++)
        for (int j = 0; j < N; j++)
        {
            array_NEoriginal[k][j] = negative / positive;
        }
    Show(array_NEoriginal, N);
    cout << "Without numeric rounding = " << double(negative / positive) << endl;
 
    Memory_escape(array_NEoriginal, N);
    Memory_escape(array_original, n);
 
        return 0;
}
 
void Show(int** arr, int size_x)
{
    for (int k = 0; k < size_x; k++)
    {
        for (int j = 0; j < size_x; j++)
        {
            cout << arr[k][j] << " ";
        }
        cout << endl;
    }
}
 
void Add(int** arr, int size_x)
{
    for (int k = 0; k < size_x; k++) arr[k] = new int[size_x];
}
 
void Memory_escape(int** arr, int size_x)
{
    for (int k = 0; k < size_x; k++) delete[] arr [size_x];
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.12.2018, 02:56
Ответы с готовыми решениями:

необработаное исключение ?? оО
ну короче воть на скрине ошибка.. вперовй такое вижу. =&gt; я не знаю че делать Эта мини прога должна типо читать файл с матрици.. все...

Необработаное исключение с++
Запускаю программу до 41 строчки работает нормально, а дальше появляется это: Необработанное исключение по адресу 0x000C610B в Проект7.exe:...

Необработаное исключение
создаю программу, которая будет находить на отрезке 10 точек, находящихся на одинаковом расстоянии одна от другой(но это неважно), с...

7
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.12.2018, 03:25
напишите условие задачи
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
05.12.2018, 03:47
Вы неправильно освобождаете память, зачем-то обращаясь за пределы массива. Переменную k здесь явно нужно было использовать вместо size_x.
Цитата Сообщение от Iangyl Посмотреть сообщение
C++
1
2
3
4
void Memory_escape(int** arr, int size_x)
{
    for (int k = 0; k < size_x; k++) delete[] arr [size_x]; // <---- ошибка тут.
}
При этом у вас еще остается неосвобожденная память. Посчитайте, сколько раз у вас написан оператор new? А сколько раз delete[] ?
1
06.12.2018, 20:32  [ТС]

Не по теме:

Yetty, задано матрицу А[n,n]. Cформировать новую матрицу В[N,N], э-нты которой равны результату деления сумы парных отрицательных значений исходного массива на суму положительных непарных значений.

0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.12.2018, 00:39
Лучший ответ Сообщение было отмечено Iangyl как решение

Решение

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
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n, N;
    cout <<"Size A="; cin >>n;
    cout <<"Size B="; cin >>N;
    
      int **A = new int*[n], sum_even_neg=0.0, sum_odd_pos=0.0;
    for (int i = 0; i < n; i++)
         A[i]=new int[n];
         
        double **B = new double*[N];
    for (int i = 0; i < N; i++)
         B[i]=new double[N]; 
    
    cout <<"Matrix A:\n";
    for (int i = 0; i < n; i++)
    {
    for (int j = 0; j < n; j++)
    {
      A[i][j]=rand()%19-9;
      if (A[i][j]%2==0 && A[i][j]<0) sum_even_neg+=A[i][j];
      else if (A[i][j]%2!=0 && A[i][j]>0) sum_odd_pos+=A[i][j];
      cout <<setw(3)<<A[i][j]<<" ";
    }
    cout <<endl;
    }
    cout <<"sum_even_neg="<<sum_even_neg
    <<"\nsum_odd_pos="<<sum_odd_pos<<endl;
    if (sum_odd_pos!=0)
       {
          cout <<"Matrix B:\n"; 
          for (int i = 0; i < N; i++)
          {
          for (int j = 0; j < N; j++)
          {
          B[i][j]=(double)sum_even_neg/sum_odd_pos;   
          cout <<B[i][j]<<" ";
          }
          cout <<endl;
          }
       }
    else cout <<"Odd positive elements are absent. Array formation is impossible.\n";   
 
    for (int i = 0; i < n; i++)
    delete[]A[i];
    delete[]A;
    for (int i = 0; i < N; i++)
    delete[]B[i];
    delete[]B;
system("pause");
return 0;
}
1
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
07.12.2018, 01:57  [ТС]
Yetty,
Цитата Сообщение от Yetty Посмотреть сообщение
A[i][j]=rand()%19-9;
что это за интервал, объясните пожалуйста.
И вот это непонятно, ведь написано int, а там точки стоят.
Цитата Сообщение от Yetty Посмотреть сообщение
int sum_even_neg=0.0, sum_odd_pos=0.0;
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.12.2018, 02:18
Цитата Сообщение от Iangyl Посмотреть сообщение
что это за интервал, объясните пожалуйста.
от -9 до 9 чтобы были и отрицательные и положительные и матрица была поровнее
Цитата Сообщение от Iangyl Посмотреть сообщение
И вот это непонятно, ведь написано int, а там точки стоят
спасибо что заметили. это я не исправил. конечно для int 0 без точки.
1
07.12.2018, 02:44  [ТС]

Не по теме:

Yetty, спасибо!

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.12.2018, 02:44
Помогаю со студенческими работами здесь

Необработаное исключение при выполнении gets
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;malloc.h&gt; #include &lt;string.h&gt; typedef struct Stack { char *str; Stack...

Чтение/запись бинарного файла: необработаное исключение
Здравствуйте. Есть данный код: #ifdef _MSC_VER #define _CRT_SECURE_NO_WARNINGS #endif #include &lt;iostream&gt; #include...

Необработанное исключение по адресу, нарушение прав доступа при записи по адресу
вот само задание: Авиарейсы (номер рейса, пункт назначения, время вылета, дата вылета, стоимость билета, количество мест). Выбор по дате...

Исправить ошибку: необработанное исключение по адресу, нарушение прав доступа при записи по адресу
Помогите, пожалуйста, исправит ошибку. Необработанное исключение по адресу 0x77D88E19 (ntdll.dll) в Lab11.exe: 0xC0000005: нарушение...

Вызвано исключение по адресу 0x003F2357 в Лабораторна 15.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x
Что это такое и как это исправить? Вот фрагмент кода где и есть проблема: ... int size = 9; int **intMas =...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru