0 / 0 / 0
Регистрация: 16.12.2015
Сообщений: 45
1

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

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

Author24 — интернет-сервис помощи студентам
Использовать стек для решения следующей задачи. В текстовом файле записана без ошибок формула следующего вида:
<формула>:=<цифра>|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
Ответы с готовыми решениями:

Ошибка нарушение прав доступа при чтении по адресу
Здравствуйте, в VS 2022 пытался по видео сделать шахматы, но выдает вот такую ошибку: Вызвано...

Ошибка: нарушение прав доступа при чтении по адресу
Код: #include &lt;SFML/Graphics.hpp&gt; int M = 3; int N = 3; int Scale = 100; int w = Scale*M;...

Ошибка «Нарушение прав доступа при чтении по адресу»
Добрый вечер! Подскажите, пожалуйста, как я могу исправить ошибку, возникающую на строке...

Ошибка 0xC0000005: нарушение прав доступа при чтении по адресу 0x3854BDD4
задание: поменять местами отрицательные элементы массива с положительными. почему то выдает ошибку?...

2
Модератор
Эксперт С++
13456 / 10719 / 6394
Регистрация: 18.12.2011
Сообщений: 28,604
29.03.2016, 20:42 2
C++
1
2
3
4
int gget(list **head) {
    if(*head==NULL)
        return 0;
...
1
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 846
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
Помогаю со студенческими работами здесь

Ошибка при загрузке фото - нарушение прав доступа при чтении по адресу 0x00814000
При попытке компиляции кода выскакивает ошибка: Первый этап обработки исключения по адресу...

Вызвано исключение по адресу, нарушение прав доступа при чтении по адресу
void perechAvtoDinam(avto x, int n, spisok* py, int&amp; k) { int i, j, fl; spisok* p; ...

Вызвано исключение по адресу 0x006BEE7E в: 0xC0000005: нарушение прав доступа при чтении по адресу
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt;...

Вызвано исключение по адресу 0x00007FF7F71C960A в Project4.exe: 0xC0000005: нарушение прав доступа при чтении по адресу
Код очень легкий, я только учусь и не понимаю в чем проблема. #include&lt;iostream&gt;...

Вызвано исключение по адресу 0x009B3066 в 99.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFDFDFDFD
Привет, нужна помощь по коду. В прямоугольной матрице в каждом столбце поставить на первое место...

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

Вызвано исключение по адресу 0x003F7882 в Project1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу
void Pushage(tree** t, int ticket_code, int numberofthings,string last_name) { if...


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

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

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