С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 22.12.2020
Сообщений: 14

Вызвано исключение: нарушение доступа для записи. father было 0xCDCDCDCD

16.02.2022, 10:03. Показов 497. Ответов 2

Студворк — интернет-сервис помощи студентам
Добрый день, у меня есть код, который по входным данным определяет, является ли дерево бинарным поисковым

возникло исключение, подскажите, пожалуйста, что не так и как это исправить
я только новичок в программировании, поэтому сильно тапками не кидайтесь
код:
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include <iostream>
#include <fstream>
#include <map>
 
using namespace std;
 
ofstream fout;
string out = "output.txt";
 
string in = "input.txt";
ifstream fin;
 
 
struct Node
{
    Node *Left, *Right;
    long long Key;
};
 
Node* root = NULL;
 
Node* Right(Node* Tree) {
    Node* Tr = Tree;
    while (Tr->Right != NULL)
    {
        Tr = Tr->Right;
    }
    return Tr;
}
 
Node* Left(Node* Tree) {
    Node* Q = Tree;
    while (Q->Left != NULL)
    {
        Q = Q->Left;
    }
    return Q;
}
 
bool isBST(Node* Tree) {
    if (Tree == NULL)
    {
        return true;
    }
    if (isBST(Tree->Left) || isBST(Tree->Right)) {
        if (Tree->Right != NULL &&
            Left(Tree->Right)->Key < Tree->Key)
        {
            return false;
        }
        if (Tree->Left != NULL &&
            Right(Tree->Left)->Key >= Tree->Key)
        {
            return false;
        }
    }
    else
    {
        return false;
    }
 
    return true;
  
}
 
 
int main() {
    fin.open(in);
 
 
    if (!fin.is_open())
    {
        exit(1);
    }
    else
    {
        if (fin.peek() == EOF)
        {
            exit(1);
        }
    }
 
    int n;
    bool flag = true; // флаг, является ли бпд или нет
    fin >> n;
    if (n == 0)
    {
        flag = false;
    }
    else if (n == 1)
    {
    }
    else
    {
        int p; // номер строки
        string c; // значение L Или R
        string left = "L";
        string right = "R";
        long long root, key; // 1 - значение корня .. 2 - значение остальных узлов(ключи)
        fin >> root; // узнаем значение корня
        Node** tree = new Node*[n];
        Node* roots = new Node;
        roots->Key = root;
        roots->Left = roots->Right = nullptr;
        tree[0] = roots;
       
        for (int i = 0; i < n; i++) {
            fin >> key;
            fin >> p;
            fin >> c;
            Node* T = new Node;
            T->Key = key;
            T->Left = T->Right = nullptr;
            Node* father = tree[p - 1];
           
            if (c == left)
            {
                if (father->Key == key) {
                    flag = false;
                }
                father->Left = T; //исключение здесь
            }
            else if (c == right)
            {
                father->Right = T;//исключение здесь
            }
            tree[i] = T;
        }
        flag = isBST(roots);
        
    }
    
        fout.open(out);
 
        if (flag == true)
        {
            fout << "YES";
        }
        else
        {
            fout << "NO";
        }
        fin.close();
 
        fout.close();
 
        return 0;
   }

входной файл выглядит след образом:
7 //количество вершин в дереве.
1 // значение корня
2 1 L // значение, записанное в вершине. номер строки входного файла, в которой был задан родитель текущей вершины (нумерация строк с нуля), `L' указывает на то, что текущая вершина присоединена к родительской слева, `R' – справа
4 2 L
3 1 R
5 2 R
6 4 L
7 4 R

Заранее спасибо за ответ!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.02.2022, 10:03
Ответы с готовыми решениями:

Вызвано исключение: нарушение доступа для записи. current было 0xCDCDCDCD
#include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;string&gt; #include &lt;fstream&gt; using namespace...

Вызвано исключение: нарушение доступа для чтения. this было 0xCDCDCDCD
Есть у меня код со структурой с динамическими массивами внутри. Через клаву я ввожу данные. И получается, что &quot;subjects&quot; я могу...

Вызвано исключение: нарушение доступа для записи. . было 0xCCCCCCCC
Знающие люди, объясните как при помощи структур реализовать данную функцию. Как я понял, элементы массива записываются, а индексы не могут...

2
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,208
16.02.2022, 10:22
Цитата Сообщение от Lahz Посмотреть сообщение
возникло исключение
Код невозможно скомпилировать из-за отсутствующего #include <string>

Цитата Сообщение от Lahz Посмотреть сообщение
tree[i] = T;
Так а какой смысл здесь играет переменная i? Почему tree[i] = T;? У вас изначально корень записывается в tree[0]. Затем следующий узел тоже записывается в tree[0]. Это уже ерунда какая-то.
0
0 / 0 / 0
Регистрация: 22.12.2020
Сообщений: 14
16.02.2022, 10:26  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Сообщение от Lahz
tree[i] = T;
Так а какой смысл здесь играет переменная i? Почему tree[i] = T;? У вас изначально корень записывается в tree[0]. Затем следующий узел тоже записывается в tree[0]. Это уже ерунда какая-то.
Можете, пожалуйста, подсказать, каким лучше образом стоит реализовать ввод
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.02.2022, 10:26
Помогаю со студенческими работами здесь

Вызвано исключение: нарушение доступа для записи. this->**arr** было nullptr
Написал код который должен выполнить транспонирование матрицы, выводит такую ошибку как дойдёт до 13 строки. Я примерно понял что это из-за...

Ошибка: вызвано исключение: нарушение доступа для записи. c.text было 0x1110112
вот такая вот ошибка: Вызвано исключение: нарушение доступа для записи. c.text было 0x1110112. Если что вот само задание: ...

Вызвано исключение: нарушение доступа для записи. this->max было nullptr. Подскажите в чем проблема,пожалуйста
Нужно вводить в конструктор 3 зарплаты,и чтобы выводилось значение (максимальная зп - минимальная зп). Только пытаюсь разобраться в...

У меня возникла проблема с исключениями. Вызвано исключение: нарушение доступа для записи. this->inv_boss было nullptr
#include &lt;iostream&gt; using namespace std; //Игра, в которой будет инвентарь и этот инвентарь будут иметь все NPC. class item {...

При реализации метода Хаффмана выскакивает исключение: нарушение доступа для чтения. root было 0xCDCDCDCD
Здравствуйте! Разбираюсь с методом Хаффмана в Visual Studio, язык C++. Выскакивает исключение:нарушение доступа для чтения. root было...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru