Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Mallbert
2 / 2 / 5
Регистрация: 01.12.2014
Сообщений: 19
1

Access violation writing location

10.10.2015, 14:13. Просмотров 292. Ответов 5
Метки нет (Все метки)

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
149
150
151
152
153
#include <iostream>
using namespace std;
template < typename t > 
void QuickSort( t array[], int left,int right)
{
    int i = left;
    int j = right;
    t temp;
    int pivot=array[(left + right) / 2];
    while (i <= j)
    {
        while (array[i] < pivot)
            i++;
        while (array[j] > pivot)
            j--;
        if (i < j)
        {
            temp = array[i];
            array[i] = array[j];
            array[j] = temp;
            i++;
            j--;
        }
    }
    if (left < j)
        QuickSort(array, left, j);
    if (i < right)
        QuickSort(array, i, right);
}
template < typename t >
void Set(t array[],int n)
{
    for (int i = 0; i < n; i++)
    {
        cout << array[i] << "-";
    }
}
class Complex
{
protected:
    struct Comp
    {
        int im;
        int re;
    };
    Comp a;
    Comp *array;
    int size;
 
public:
    void QuickSort(int left, int right)
    {
        int i = left;
        int j = right;
        Comp temp;
        int pivot = array[size / 2].re;
        int pivot1 = array[size / 2].im;
        while (i <= j)
        {
            while (array[i].re > pivot || (array[i].re == pivot && array[i].im > pivot1))
                i++;
            while (array[j].re > pivot || array[j].re == pivot && array[j].im > pivot1)
                j--;
            if (i < j)
            {
                temp = array[i];
                array[i] = array[j];
                array[j] = temp;
                i++;
                j--;
            }
        }
        if (left < j)
            QuickSort( left, j);
        if (i < right)
            QuickSort(i, right);
    }
    void Set(int array[], int n) const
    {
        for (int i = 0; i < n; i++)
        {
            cout << array[i] << "-";
        }
    }
    void Get_size()
    {
        int n;
        cout << "Enter the size of array: ";
        cin >> n;
        this->size = n;
    }
    int Set_size()
    {
        return this->size;
    }
    void Get_array()
    {
        int k;
        int h;
        for (int i = 0; i < size; i++)
        {
            cout << "x[" << i << "](real)= ";
            cin >> k;
            cout << "x[" << i << "](imagine)= ";
            cin >> h;
            array[i].im = k;
            array[i].re = h;
        }
    }
    void Set_array()
    {
        for (int i = 0; i < size; i++)
        {
            cout << "x[" << i << "](real)= ";
            cout<<this->array[i].re ;
            cout << "x[" << i << "](imagine)= ";
            cout << this->array[i].im;
        }
    }
    Complex()
    {
        Get_size();
        Comp *array = new Comp[size];
    }
    ~Complex()
    {
        delete array;
    }
};
 
int main()
{
    Complex *Com;
    Com = new(Complex);
    //(*Com).Get_size();
    (*Com).Get_array();
    (*Com).QuickSort(0,(*Com).Set_size());
    (*Com).Set_array();
 
    /*int n;
    cout << "Enter the size of array: ";
    cin >> n;
    char *array = new char[n];
    for (int i = 0; i < n; i++)
    {
        cout << "x[" << i << "]= ";
        cin >> array[i];
    }
    QuickSort(array, 0, n-1);
    Set(array,n);
    system("pause");*/
    delete Com;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2015, 14:13
Ответы с готовыми решениями:

Access violation writing location
Добрый день! на строке ptr = ptr; бросает unhandeled exeption: Access...

Access violation writing location
Вылетает эта ошибка. В чём может быть проблема? Программа выполняется выводит...

Ошибка Access violation writing location
Структура и объявление массива: struct Particle { float X; float Y;...

0xC0000005: Access violation writing location 0xFDFDFE11
ошибка, вылетает после запуска программы. Exception thrown at 0x013E1C0A in...

__asm ошибка Access violation writing location
Код ниже выводит следующую ошибку &quot;Unhandled exception at 0x004116a7 in...

5
nmcf
6498 / 5734 / 2610
Регистрация: 14.04.2014
Сообщений: 24,453
10.10.2015, 14:19 2
Где у тебя задаётся size? Надо примерно так вместо строк 120-124:
C++
1
2
3
4
    Complex(int sz = 2): size(sz)
    {
        Comp *array = new Comp[size];
    }
0
Mallbert
2 / 2 / 5
Регистрация: 01.12.2014
Сообщений: 19
10.10.2015, 14:25  [ТС] 3
C++
1
2
3
4
5
6
7
    void Get_size()
    {
        int n;
        cout << "Enter the size of array: ";
        cin >> n;
        this->size = n;
    }
Добавлено через 1 минуту
масив динамический ......
0
nmcf
6498 / 5734 / 2610
Регистрация: 14.04.2014
Сообщений: 24,453
10.10.2015, 15:22 4
Я вижу, что динамический. Ты выходишь за правую границу.
C++
1
Com->QuickSort(0, Com->Set_size() - 1);
Названия не верные: Set_size() должен устанавливать size, а Get_size() - возвращать. И используй стрелку вместо этих скобок. Хотя не ясно, зачем вообще Complex создавать динамически.
0
Mallbert
2 / 2 / 5
Регистрация: 01.12.2014
Сообщений: 19
10.10.2015, 17:16  [ТС] 5
Ну да з сет гед напутал но она даже не выполняет записи массива (гет ерей)

Добавлено через 7 минут
Comolex динамически потому что есть разница между кучей и стеком если ты понимаешь о чем я
0
nmcf
6498 / 5734 / 2610
Регистрация: 14.04.2014
Сообщений: 24,453
10.10.2015, 17:20 6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    void Get_array()
    {
        for (int i = 0; i < size; i++)
        {
            cout << "x[" << i << "](real)= ";
            cin >> array[i].im;
            cout << "x[" << i << "](imagine)= ";
            cin >> array[i].re;
        }
    }
 
    Complex()
    {
        Get_size();
        array = new Comp[size];
    }
C++
1
2
3
4
    Complex Com;
    Com.Get_array();
    Com.QuickSort(0, Com.Set_size() - 1);
    Com.Set_array();
Добавлено через 43 секунды
Цитата Сообщение от Mallbert Посмотреть сообщение
есть разница между кучей и стеком если ты понимаешь о чем я
Тонко.
1
10.10.2015, 17:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2015, 17:20

Исключение Access violation writing location 0x0582D000
При попытке запустить программу на других ПК возникает исключение &quot;Access...

Код выдает ошибку Access violation writing location
#include&lt;stdio.h&gt; #include&lt;string.h&gt; #include&lt;locale.h&gt; int main()...

Unhandled exception at 0x0F73DF62 | 0xC0000005: Access violation writing location
Многоуважаемые форумчане, необходима небольшая консультация по следующему коду:...


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

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

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