6 / 10 / 2
Регистрация: 04.10.2016
Сообщений: 115
1

Вызвано исключение по адресу 0x01361A1E в Matrix 1.0.exe: 0xC0000005: нарушение прав доступа при записи

05.10.2016, 16:21. Показов 7364. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вызвано исключение по адресу 0x01361A1E в Matrix 1.0.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0xCDCDCDCD.

Если для этого исключения имеется обработчик, выполнение программы может быть продолжено безопасно.

Выдается такая ошибка при попытке компиляции этого кода:

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
//det.h
#pragma once
#include <iostream>
using namespace std;
 
float det(float **m, int n)
{
    int i, j, k, a;
    float R = 1;
    float **mat = new float*[n];
    for (i = 0;i < n;i++)
        *mat = new float[n];
    for (i = 0;i < n;i++)
        for (j = 0;j < n;j++)
            mat[i][j] = m[i][j];
    for (i = 0;i < (n - 1);i++)
    {
        for (j = i + 1;j < n;j++)
        {
            a = mat[j][i] / mat[i][i];
            for (k = i + 1;k < n;k++)
                mat[j][k] -= mat[i][k] * a;     
        }       
        R *= mat[i][i];
    }
    delete[] mat;
    return R;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "det.h"
 
void main(void)
{
    const int I = 5;
    const int J = 5;
    float Matrix[I][J] = {
    {5,4,9,7,8},
    {5,7,8,9,4},
    {8,7,9,7,2},
    {7,8,6,4,1},
    {5,7,9,7,3} };
    float *M[I];
    for (int i = 0;i < J;i++)
        M[i] = Matrix[i];
    cout << det(M, I) << endl;
    
    system("pause");
}
В чем может быть проблема?
P.S. Пытаюсь вычислить детерминант(определитель) матрицы и не должен трогать передаваемую матрицу.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.10.2016, 16:21
Ответы с готовыми решениями:

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

Вызвано исключение по адресу 0x010F2FF7 в Project25.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0xFDFDF
Всплывает окно на 45ой строке с сообщением: &quot;Вызвано исключение по адресу 0x010F2FF7 в...

Вызвано исключение по адресу 0x01068781 в 2nd.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0xCCCCCCCC
Доброго времени суток, кто может помочь по вопросу? Постоянно выбивает ошибку. Мне кажется, там еще...

Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу
#include &lt;math.h&gt; const double eps = 0.001; ///&lt; желаемая точность /// N - размерность...

4
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,043
05.10.2016, 16:34 2
C++
1
*mat = new float[n];
Это значит mat[0] = new float[n];
т.е. mat[1] уже не инициализирован, а ты туда пишешь.
1
Модератор
Эксперт С++
12789 / 10243 / 6152
Регистрация: 18.12.2011
Сообщений: 27,436
05.10.2016, 16:37 3
Лучший ответ Сообщение было отмечено Saro как решение

Решение

Воспользуйтесь вот этим образцом
Образцы (шаблоны) программ для типовых задач
Функцию Process замените на
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//
// пример обработки матрицы - вычисление детерминанта
//
float Process( float ** m, size_t n) {
    float** mat=Create(n,n );
    float R=1.0;
    for (size_t i = 0;i < (n - 1);i++)
    {
        for (size_t j = i + 1;j < n;j++)
        {
            float a = mat[j][i] / mat[i][i];
            for (size_t k = i + 1;k < n;k++)
                mat[j][k] -= mat[i][k] * a;     
        }       
        R *= mat[i][i];
    }
    Free( mat, n );
    return R;
}
1
Объявлятель переменных
1204 / 394 / 315
Регистрация: 24.09.2011
Сообщений: 1,243
05.10.2016, 16:40 4
Возможно лезу с ненужным советом не по теме, но в 20-й строке первого листинга есть вероятность деления на ноль.
1
97 / 93 / 81
Регистрация: 10.01.2016
Сообщений: 660
Записей в блоге: 13
17.12.2021, 13:16 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
#include <iostream>
 
int main()
{
    using namespace std;
 
    // Создаем двумерный динамический массив
    unsigned size;
    cout << "Enter the size of the array: ";
    cin >> size;
    int** arr = new int* [size];
    for (int i = 0; i < size; i++)
    {
        arr[i] = new int[size];
    }
    
    // Выводим массив на экран
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            cout << arr[i][j] << "\t";
        }
        cout << endl;
    }
 
    // Основной алгоритм программы
 
 
    // Освобождаем память
    for (int i = 0; i < size; i++)
    {
        delete[] arr[i];
    }
    
    delete[] arr;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2021, 13:16
Помогаю со студенческими работами здесь

Вызвано исключение по адресу 0x00B31BEF в Project.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFDFDFE0
Написал программу, но выдает ошибку: Вызвано исключение по адресу 0x00B31BEF в Project.exe:...

C++ Вызвано исключение по адресу 0x00346786 в Smooth_.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x00
void getvector(string file_, vector&lt;double&gt; mass) { ifstream fin; fin.open(file_); if...

Вызвано исключение по адресу 0x01083191 в ConsoleApplication.exe: 0xC0000005: нарушение прав доступа при чтении по адрес
Вызвано исключение по адресу 0x01083191 в ConsoleApplication.exe: 0xC0000005: нарушение прав...

Вызвано исключение по адресу 0x501FF6E0 (ucrtbased.dll) в GlebProject.exe: 0xC0000005: нарушение прав доступа при чтении
Добрый день,подскажите пожалуйста в чем проблема. Никак не могу понять(( Не судите строго я...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru