Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 34

Ошибка по адресу памяти 0x012FF764

05.12.2019, 11:54. Показов 3182. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте помогите пожалуйста, мы с другом создавали консольное приложение, при запуске его появляется ошибка.
Возникло необработанное исключение по адресу 0x761B35D2 в graph.exe: исключение Microsoft C++: std::runtime_error по адресу памяти 0x012FF764.
Код программы:
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include "pch.h"
#include <fstream>
#include <iostream>
#include <queue>
#include <stack>
#include <list>
 
#include "simple_graph.h"
 
simple_graph::simple_graph(std::string fileName, std::string matrixEntity, std::string vertexEntity)
{
 
    std::ifstream file(fileName);
    if (!file.is_open())
        throw std::runtime_error("file not open");
 
    std::string now_string;
    std::getline(file, now_string);
 
    if (now_string != matrixEntity)
        throw std::runtime_error("not correct file");
 
    std::getline(file, now_string);
 
    auto matrix_size = now_string.length();
    std::cout << "Matrix dimension: " << matrix_size
        << "x" << matrix_size
        << std::endl;
 
    m_adjMatrix = std::vector<std::vector<int>>(matrix_size, std::vector<int>(matrix_size, 0));
 
    for (auto &v : m_adjMatrix)
    {
        for (size_t i = 0; i < now_string.length(); ++i)
        {
            v[i] = std::stoi(now_string.substr(i, 1));
        }
 
        std::getline(file, now_string);
 
        if (!file.good())
            throw std::runtime_error("not correct file");
 
        if (now_string == vertexEntity)
            break;
    }
 
    m_vertexes = std::vector<std::string>(matrix_size);
 
    for (auto &v : m_vertexes)
    {
        std::getline(file, now_string);
 
        v = now_string;
 
        if (!file.good())
            throw std::runtime_error("not correct file");
    }
}
 
void simple_graph::printUserData() const
{
    std::cout << "Your matrix:" << std::endl;
    for (const auto &v : m_adjMatrix)
    {
        for (const auto &ve : v)
            std::cout << ve << " ";
        std::cout << std::endl;
    }
 
    std::cout << "Your vertexes:" << std::endl;
    for (const auto &v : m_vertexes)
        std::cout << v << std::endl;
}
 
void simple_graph::printGraph() const
{
    for (const auto &v : m_graph)
        std::cout << v.second << " : " << v.first << std::endl;
}
 
static bool allChecked(const std::vector<VertexState> vec)
{
    for (const auto &v : vec)
        if (v != VertexState::Processed)
            return false;
    return true;
}
 
void simple_graph::calculateGraph()
{
    auto vertex_count = m_adjMatrix.size();
    std::vector<VertexState> nodes(vertex_count, VertexState::NotProcessed);
    std::stack<size_t> stack;
    auto vertex_index = 0u;
 
    while (!allChecked(nodes)) {
 
        auto now_index = 0u;
 
        for (const auto &v : nodes) {
            if (v == VertexState::NotProcessed)
                break;
 
            ++now_index;
        }
 
        if (now_index == vertex_count)
            break;
 
        // insert root vertex index in to stack
        stack.push(now_index);
 
        while (!stack.empty())
        {
            auto now_node = stack.top();
            nodes[now_node] = VertexState::Processed;
            stack.pop();
 
            for (size_t j = 0; j < vertex_count; ++j)
            {
                if (m_adjMatrix.at(now_node).at(j) == 1 && nodes.at(j) == VertexState::NotProcessed)
                {
                    stack.push(j);
                    break;
                }
            }
 
            m_graph.insert({ (now_node + 1), m_vertexes.at(vertex_index) });
            ++vertex_index;
        }
    }
}
Код класса
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
#ifndef SIMPLE_GRAPH_H
#define SIMPLE_GRAPH_H
 
#include <vector>
#include <string>
#include <map>
 
enum class VertexState
{
    NotProcessed = 0,
    Processed,
    Detected
};
 
struct node
{
    int left_index{ -1 };
    int right_index{ -1 };
    std::string name;
};
 
class simple_graph
{
public:
    simple_graph(std::string fileName,
        std::string matrixEntity = "Matrix:",
        std::string vertexEntity = "Vertex:");
 
    void printUserData() const;
    void printGraph() const;
    void calculateGraph();
private:
    std::vector<std::vector<int>> m_adjMatrix;
    std::vector<std::string> m_vertexes;
    std::map<int, std::string> m_graph;
};
 
#endif // SIMPLE_GRAPH_H
код дополнительного файла:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "pch.h"
#include "simple_graph.h"
 
int main()
{
    simple_graph gr("F:\graph\graph.txt");
    gr.printUserData();
    gr.calculateGraph();
    gr.printGraph();
 
    return 0;
}
Само консольное приложение выполняет обход графа в глубину. Само консольное приложение прилагаю в архиве, зарастание спасибо.
Вложения
Тип файла: rar graph.rar (7.84 Мб, 0 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.12.2019, 11:54
Ответы с готовыми решениями:

Ошибка «Инструкция по адресу 0х0093bd32 обратилась к памяти по адресу 0х00000000.Память не может быть «read»
Недавно установили 2ой Windows на диск D, старый остался на C. На первом Windows программа iTunes работала исправно, на новом,при...

Ошибка: инструкция по адресу 0x00aeb5e2 обратилась к памяти по адресу 0x00000008.память не может быть read
инструкция по адресу 0x00aeb5e2 обратилась к памяти по адресу 0x00000008.память не может быть read . рамка выскакивает при установке...

Ошибка приложения : Инструкция по адресу "0x77e76eb6" обратилась к памяти по адресу "0x00000001"
Цитата из Просмотр событий - Всплывающее окно приложения: Fscreen: ATKKBService.exe - Ошибка приложения : Инструкция по адресу...

8
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 34
05.12.2019, 11:57  [ТС]
Ошибка появляется тут.
Миниатюры
Ошибка по адресу памяти 0x012FF764  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.12.2019, 12:06
Цитата Сообщение от 20Sova24 Посмотреть сообщение
Ошибка появляется тут.
Скорее всего вот здесь throw std::runtime_error("file not open");
Сделай
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    try
    {
        simple_graph gr("F:\graph\graph.txt");
        gr.printUserData();
        gr.calculateGraph();
        gr.printGraph();
        return 0;
    }
    catch(const std::exception &e)
    {
        std::cerr << "ERROR: " << e.what() << std:endl;
    }
    return -1;
}
0
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 34
05.12.2019, 12:41  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    try
    {
        simple_graph gr("F:\graph\graph.txt");
        gr.printUserData();
        gr.calculateGraph();
        gr.printGraph();
        return 0;
    }
    catch(const std::exception &e)
    {
        std::cerr << "ERROR: " << e.what() << std:endl;
    }
    return -
Ошибка осталась но изменился код: Возникло необработанное исключение по адресу 0x761B35D2 в graph.exe: исключение Microsoft C++: std::runtime_error по адресу памяти 0x0133F384.
и добавились ещё две:
Ошибка C2882 std: недопустимое использование идентификатора пространства имен в выражении graph f:\graph\graph\main.cpp 21
Ошибка C2059 синтаксическая ошибка: : graph f:\graph\graph\main.cpp 21

У меня есть рабочее консольное приложение, которое выполняет почти всё но там я не могу разобраться как его переделать на поиск в глубину и чтобы на выходе создавался документ с названием вершин и на против их порядковый номер по матрице смежности.
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include "pch.h"
#include <iostream>
#include <string>
#include <queue>
#include <tuple>
#include <fstream>
#include <exception>
 
static const std::string c_matrix_entity("Matrix:");
static const std::string c_vertex_entity("Vertex:");
 
enum class VertexState
{
    Undetected = 0,
    Detected,
    Visited
};
 
std::tuple<std::vector<std::vector<int>>, std::vector<std::string>> load_file()
{
    std::ifstream file("F:\\Программы для графов\\Граф 3\\input.txt");
    if (!file.is_open())
        throw std::runtime_error("file not open");
 
    std::string now_string;
    std::getline(file, now_string);
 
    if (now_string != c_matrix_entity)
        throw std::runtime_error("not correct file");
 
    std::getline(file, now_string);
 
    auto matrix_size = now_string.length();
    std::cout << "Matrix dimension: " << matrix_size
        << "x" << matrix_size
        << std::endl;
 
    std::vector<std::vector<int>> adj_matrix(matrix_size, std::vector<int>(matrix_size, 0));
 
    for (auto &v : adj_matrix)
    {
        for (size_t i = 0; i < now_string.length(); ++i)
        {
            v[i] = std::stoi(now_string.substr(i, 1));
        }
 
        std::getline(file, now_string);
 
        if (!file.good())
            throw std::runtime_error("not correct file");
 
        if (now_string == c_vertex_entity)
            break;
    }
 
    std::vector<std::string> vertexes(matrix_size);
 
    for (auto &v : vertexes)
    {
        std::getline(file, now_string);
 
        v = now_string;
 
        if (!file.good())
            throw std::runtime_error("not correct file");
    }
 
    return { std::move(adj_matrix), std::move(vertexes) };
}
 
int main()
{
    auto file_result = load_file();
    auto adj_matrix = std::get<0>(file_result);
    auto vertexes = std::get<1>(file_result);
 
    std::cout << "Your matrix:" << std::endl;
    for (const auto &v : adj_matrix)
    {
        for (const auto &ve : v)
            std::cout << ve << " ";
        std::cout << std::endl;
    }
 
    std::cout << "Your vertexes:" << std::endl;
    for (const auto &v : vertexes)
    {
        std::cout << v << std::endl;
    }
 
    std::queue<size_t> queue;
    auto matrix_size = adj_matrix.size();
 
    std::vector<VertexState> nodes(matrix_size, VertexState::Undetected);
 
    queue.push(0);
    while (!queue.empty())
    {
        size_t node = queue.front();
 
        queue.pop();
        nodes[node] = VertexState::Visited;
 
        for (size_t j = 0; j < matrix_size; ++j)
        {
            if (adj_matrix.at(node).at(j) == 1 && nodes.at(j) == VertexState::Undetected)
            {
                queue.push(j);
                nodes[j] = VertexState::Detected;
            }
        }
        std::cout << "1:"<<  vertexes.at(node) << std::endl;
 
    }
 
    return 0;
}
Добавлено через 2 минуты
Подробная задача консольного приложения: Обход графа в глубину через файл txt
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.12.2019, 12:59
Цитата Сообщение от 20Sova24 Посмотреть сообщение
Ошибка C2882 std: недопустимое использование идентификатора пространства имен в выражении graph f:\graph\graph\main.cpp 21
Ошибка C2059 синтаксическая ошибка: : graph f:\graph\graph\main.cpp 21
std::cerr << "ERROR: " << e.what() << std::endl;
0
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 34
05.12.2019, 15:53  [ТС]
Ошибка пропала, но перестал открываться текстовый файл
Миниатюры
Ошибка по адресу памяти 0x012FF764  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.12.2019, 15:56
Цитата Сообщение от 20Sova24 Посмотреть сообщение
Ошибка пропала, но перестал открываться текстовый файл
simple_graph gr("F:\\graph\\graph.txt");

Добавлено через 42 секунды
Он у тебя и до этого не открывался, просто ты ошибку не отлавливал
1
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 34
05.12.2019, 15:59  [ТС]
Всё работает), огромное спасибо
Подскажите как организовать сохранение обработанной информации с консоли обратно в текстовый файл.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.12.2019, 16:05
Цитата Сообщение от 20Sova24 Посмотреть сообщение
Подскажите как организовать сохранение обработанной информации с консоли обратно в текстовый файл.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void simple_graph::printUserData(std::ofstream &out) const
{
    out << "Your matrix:" << std::endl;
    for (const auto &v : m_adjMatrix)
    {
        for (const auto &ve : v)
            out << ve << " ";
        out << std::endl;
    }
 
 
...................
 
simple_graph gr("F:\graph\graph.txt");
std::ofstream fout("F:\\graph\\graph_out.txt")
gr.printUserData(std::cout);
gr.printUserData(fout);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2019, 16:05
Помогаю со студенческими работами здесь

Ошибка приложения : Инструкция по адресу "0x00bcdde6" обратилась к памяти по адресу "0x00000000"
При каждом запуске игры появляется всплывающее окно - Ошибка приложения : Инструкция по адресу &quot;0x00bcdde6&quot; обратилась к памяти...

Ошибка приложения: инструкция по адресу "0х770301b8" обратилась к памяти по адресу "0х00000050"
здрасьте,комп постоянно выдает AvastUI.exe-Ошибка приложения Инструкция по адресу...

Ошибка приложения : Инструкция по адресу "0x7c910f29" обратилась к памяти по адресу "0x00000000". Память не может быть "read".
У меня в последнее время постоянная проблема с компьютером, предположим, я хочу выключить или перезагрузить комп, процесс идет, а потом за...

Ошибка приложения : Инструкция по адресу "0x00d72d0e" обратилась к памяти по адресу "0x00000001". Память не может быть "read"
Помогите пожалуйста что это за ошибка и как ее можно устранить? Ошибка приложения : Инструкция по адресу &quot;0x00d72d0e&quot;...

Ошибка при загрузке "Инструкция по адресу "0x0100466a" обратилась к памяти по адресу "0x00000000"
Уважаемые программисты и сисадмины!Прошу вашей помощи.У меня проблема следующего содержания: при загрузке системы,еще до приветствия,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru