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

Вызвано исключение: нарушение доступа для чтения. this->t было 0xFFFFFFFFFFFFFFF7

19.12.2019, 18:39. Показов 1360. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Задача такая: Вокруг считающего стоит N человек, из которых выделен первый, а остальные занумерованы по часовой стрелке числами от 2 до N. Считающий, начиная с кого-то, ведет счет до M. Человек на котором остановился счет, выходит из круга. Счет продолжается со следующего человека и так до тех пор, пока не останется один человек.
Определить
a) номер оставшегося человека, если известно M и то, что счет начинался с первого человека;
b) номер человека c которого начинался счет, если известно M и номер оставшегося человека L.
Появляется ошибка из заголовка, да и сам код с какими-то недочетами, не позволяющими выполнить задание, не могу найти проблему. Прошу помощи(
Код:

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
#include <iostream> 
using namespace std; 
struct chel  //структура-1 человек  
{  
    int numb;//его номер  
    chel *next;//указатель на следующего 
}; 
class Krug 
{ private: 
    chel *nach, *res, *t;//nach- указатель на начального, res- указатель на удаляемого, t-указатель на структуру 
    public:  
        Krug() 
        {//конструктор   
            nach = new(chel); res = 0;//выделяем память под nach  
        };  
        ~Krug() 
        {   
            delete nach;  
        };  
        void POSTROENIE(int);//построение списка  
        void VYVOD(); 
        chel *POISK( int, bool*, int);//поиск удаляемого элемента и вывод конечного результата  
        void Delete();//удаление найденного элемента  
        void OCHISTKA(); 
}; 
int main() 
{  
    Krug A; 
    int n, m, kolostchel;//n-количество человек, m-номер удаляемого человека, kolostchel-количество оставшихся человек  
    bool h;//переменная, чтобы в POISK t=nach выполнилось один раз  
    h = true; 
 
 
 std::cout << "Vvedi kolichestvo chelovek" << endl;  
 cin >> n;  
 kolostchel = n;  
 cout << "Vvedi nomer udalaemogo cheloveka" << endl;  
 cin >> m;  
 A.POSTROENIE(n); 
 while (kolostchel != 1)  
 {   
     if (A.POISK( m, &h, kolostchel) != 0)   
     {    
         A.Delete();   
     }   
     else  cout << "Zvena s el v kolce net!";   
     kolostchel--;  
 }  
 cout << "\n" << "Nomer poslednego cheloveka: " << endl;  
 A.POISK( m, &h, 1);  
 return 0; 
} 
void Krug::POSTROENIE(int n) 
{  
    chel *t;  
    nach = new (chel);  
    t = nach;//для первого элемента t=nach  
    for (int i = 0; i < n; i++)//заполняем список номерами людей  
    {   
        if (i != n - 1)   
        {    
            (*t).numb = i + 1;    
            (*t).next = new (chel);    
            t = (*t).next;   
        }   
        else  
        {//для последнего элемента его указатель указывает на первый элемент    
            (*t).numb = i + 1;    
            (*t).next = nach;   
        }  
    } 
    int i;                                              
    i = 0;  
    cout << "\n";             
    cout << "Krug ludey: ";          
    for (t = nach; i < n; t = (*t).next)//вывод  
    {                                                       
        cout << (*t).numb << " ";             
        i++;                                            
    }  
    cout << "\n"; 
} 
chel *Krug::POISK( int m, bool *h, int kolostchel) 
{  
    int e, d;  
    d = 0;//номер последнего человека  
    if (*h == true)  
    {   
        t = nach;   
        *h = false;  
    }  
    res = 0;  
    e = 1;//постепенно переводим указатель на m элемент  
    for (e = 1; e < m; e++)  
    {   
        t = (*t).next;  
    } 
 
 
 if (e == m)//запоминаем адрес m элемента для удаления  
 {   
     res = t;   
     t = (*t).next;  СТРОЧКА В КОТОРОЙ ВЫВОДИТСЯ ЭТА ОШИБКА
 }  
 if (kolostchel == 1)                                         
 {               
     cout << res->numb << "\n";           
     cout << "Vedi nomer poslednego cheloveka: " << endl;   //вывод последнего человека и первого человека, если известен последний    
     cin >> d;            
     cout << "Nomer pervogo cheloveka:" << endl;         
     cout << d - (res->numb) + 1 << endl;         
 }  
 return res; 
} 
void Krug::Delete() 
{  
    chel *z, *q; 
    if ((*res).next != nach)//если адрес не указывает на первый элемент, т.е. удаляется не последний элемент 
    {   
        q = (*res).next;   
        (*res).numb = (*((*res).next)).numb;   
        (*res).next = (*((*res).next)).next;   
        delete q;  
    }  
    else  
    {   
        z = nach;  
        q = (*nach).next;//если удаляется последний элемент   
        while (q != res)   
        {    
            z = q; q = (*q).next;   
        }   
        (*z).next = (*((*z).next)).next;   
        delete q;  
    } 
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2019, 18:39
Ответы с готовыми решениями:

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

Вызвано исключение: нарушение доступа для чтения. s было 0x1110112
Товарищи форумчане, нужна ваша помощь! (Для простоты объяснения прикреплю скрин) Насколько я...

Ошибка Вызвано исключение: нарушение доступа для чтения. first было nullptr
При запуске появляется ошибка &quot;Вызвано исключение: нарушение доступа для чтения. first было...

Вызвано исключение: нарушение доступа для чтения. _Pnext было 0xCCCCCCD0
Написал код крестиков-ноликов по методу альфа-бета обрезки. Но при выполнении рекурсии, возникает...

0
19.12.2019, 18:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2019, 18:39
Помогаю со студенческими работами здесь

Вызвано исключение: нарушение доступа для чтения. **pline** было 0x1C47112
Здравствуйте! Хотелось бы обратиться со следующей проблемой. &quot;Вызвано исключение: нарушение доступа...

Вызвано необработанное исключение: нарушение доступа для чтения. a было 0x34F4A7AE
Исключение в функции Drow_ship. Как это починить? #include &lt;iostream&gt; #include &lt;ctime&gt;...

Вызвано исключение: нарушение доступа для чтения. **_Pnext** было 0x92DE94
Здраствуйте нужнаюсь в ваших наставлениях у кого на это есть время. При попытке вывести данные из...

Выскакивает ошибка: Вызвано исключение: нарушение доступа для чтения. c было 0x1D83F5A
Привет всем. Дали задание: ввести из файла в массив элементы, кол-во задается пользователем, затем...

Вызвано необработанное исключение: нарушение доступа для чтения. InvMArr было 0x1110113
#include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;stdlib.h&gt; #include&lt;time.h&gt; #include&lt;Windows.h&gt;...

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


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

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