Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 16.12.2015
Сообщений: 45
1

Ошибка "нарушение прав доступа при чтении по адресу."

29.03.2016, 20:13. Просмотров 406. Ответов 2
Метки нет (Все метки)

Использовать стек для решения следующей задачи. В текстовом файле записана без ошибок формула следующего вида:
<формула>:=<цифра>|M(<формула> ,<формула>)| m(<формула>,<формула>)
<цифра>:=0|1|2|3|4|5|6|7|8|9
где М обозначает функцию max, а m – min.
Вычислить (как целое число) значение данной формулы (например, M(5,m(6,8))->6).
При запуске- ошибка на приложенном скриншоте.
Заранее благодарна
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
#define _CRT_SECURE_NO_WARNINGS
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <conio.h>
using namespace std;
 
const int l = 10, maxf = 0, minf = 1;
 
struct list {
    char z;
    list *next;
};
 
bool check(list *head) {
    if (head == NULL) return true; else return false;}
 
list *iinput(char x, list *head) {
    list *s;
    s = new list;
    s->z = x;
    s->next = head;
    head = s;
    return head;
}//кладем элемент в стек
 
int gget(list **head) {
    char x = (*head)->z;
    list *g = (*head)->next;
    *head = NULL;
    *head = g;
    return x;
}//берем элемент из стека
 
int main() {
    FILE *input;
    list *head = NULL, *s = NULL, *w = NULL, *buf = NULL; char x, c, duf[l]; int i = 0;
    input = fopen("input.txt", "r");
    while (fscanf(input, "%c", &x) != EOF) {
        head = iinput(x, head);
        i++;
    }
    int j, len = i;
    for (i = 0; i<len; i++) {
        x = gget(&head); w = head; c = x;
        if (x == 'M') { iinput(maxf, s); continue; }
        if (x == 'm') { iinput(minf, s); continue; }
        if (isdigit(x)) {
            j = 0;
            while (isdigit(c)) {
                buf = iinput(c, buf);
                c = gget(&w);
            }
            while (!check(buf)) {
                duf[j] = gget(&buf);
                j++;
            }
            s = iinput(atoi((duf)), s);
        }
        // кладем в стек коды операций и числа
        if (x == ')') {
            int b = gget(&s); int a = gget(&s); int func = gget(&s);
            if (func == maxf)s = iinput(a > b ? a : b, s);
            else s = iinput(a<b ? a : b, s);
            // если попадается закрывающая скобка, вытаскиваем из стека два числа и код
            // операции, производим операцию и закидываем результат обратно в стек
        }
    }
    printf("%d", gget(&s));
    cin.get();
    return 0;
}
0
Миниатюры
Ошибка "нарушение прав доступа при чтении по адресу."  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2016, 20:13
Ответы с готовыми решениями:

Ошибка при работе с OpenCV: "нарушение прав доступа при чтении по адресу"
Привет, всем:-) Имеется следующий код: #include &lt;opencv2/core/core.hpp&gt; #include...

"Нарушение прав доступа при чтении по адресу" при чтении структур из бинарного файла
Пытаюсь разобраться со структурами в бинарных файлах. Допустим, есть массив структур. Записываю...

"Нарушение прав доступа при чтении по адресу 0x00000000"
код: #define _CRT_SECURE_NO_WARNINGS #include &lt;stdio.h&gt; #include &lt;math.h&gt; int strtoint(char *s)...

Ошибка Необработанное исключение в "0x001d18f8" в "lr7v2.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcdcdcde9"
class Hdd { public: char Hdd_name; int total_space; int free_space; int speed; ...

2
Модератор
Эксперт С++
9488 / 8156 / 4983
Регистрация: 18.12.2011
Сообщений: 21,746
Завершенные тесты: 1
29.03.2016, 20:42 2
C++
1
2
3
4
int gget(list **head) {
    if(*head==NULL)
        return 0;
...
1
614 / 242 / 86
Регистрация: 04.07.2014
Сообщений: 685
29.03.2016, 23:16 3
C++
1
2
3
4
 while (fscanf(input, "%c", &x) != EOF) {
        head = iinput(x, head);
        i++;
    }
Зачем исходную строку в стек помещаешь, ты её ещё и перевернул.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2016, 23:16

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

"Нарушение прав доступа при чтении по адресу" при организации класса очереди типа FIFO
Есть класс очереди типа FIFO: class FIFO { private: int* queue; int cols; public:...

Возникает ошибка "0xC0000005: Нарушение прав доступа при чтении "0xfeeefee2"."
Подскажите, пожалуйста, в чем может быть ошибка и как его исправить? В деструкторе указывает на...

Ошибка: "нарушение прав доступа при записи по адресу"
Помогите не могу понять где ошибка &quot;Вызвано исключение по адресу 0x00C424AC в LAB_6-CCCA.exe:...

Ошибка 0xC0000005: Нарушение прав доступа при чтении "0xcccccccc"
Здравствуйте! Сегодня впервые столкнулся с данной ошибкой, поэтому не имею ни малейшего...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.