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

Массив объектов одного класса как поле другого класса

19.03.2018, 12:09. Показов 3570. Ответов 7

Студворк — интернет-сервис помощи студентам
Доброе время суток. Мне тут в универе задали лабу, нужно создать класс полем которого будет массив объектов класса из предыдущей лабы и в котором будут содержаться методы выводящие в консоль информацию о некоторых из этих объектов. Как мне кажется все правильно написал и оформил но компилятор ругается на ошибки природа которых мне не совсем ясна. Прошу помочь и указать в чем я не прав. abit тот самый класс из первой лабы. menu - класс поле которого массив объектов и который содержит нужные методы. Ошибки что выдает компилятор:
menu.h(5): error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
menu.h(5): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
menu.h(5): error C2238: непредвиденные лексемы перед ";"
menu.h(11): error C2061: синтаксическая ошибка: идентификатор "abit"
menu.h(5): error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
menu.h(5): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
menu.h(5): error C2238: непредвиденные лексемы перед ";"
menu.h(11): error C2061: синтаксическая ошибка: идентификатор "abit"

------------main.cpp -------------------

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define _CRT_SECURE_NO_WARNINGS
#include <cstring>
#include <iostream>
#include "abit.h"
#include "menu.h"
 
using namespace std;
 
void main()
{
    menu List;
    List.Showmenu();
    List.~menu();
    system("pause");
}

-------------abit.h----------------------

C++ (Qt)
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
#pragma once
#include "menu.h"
class abit
{
    private:
        char *address;
        char *name;
        char *surname;
        char *middlename;
        int math;
        int physics;
        int ukrainian;
    public:
        void set_address(char *addresstmp);
        void set_name(char *nametmp);
        void set_surname(char *surnametmp);
        void set_middlename(char *middletmp);
        void set_math(int temp);
        void set_physics(int temp);
        void set_ukrainian(int temp);
        char *get_address();
        char *get_name();
        char *get_surname();
        char *get_middlename();
        int get_math();
        int get_physics();
        int get_ukrainian();
        void writer();
        abit();
        ~abit();
};


--------------------abit.cpp-------------------------
C++ (Qt)
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
#define _CRT_SECURE_NO_WARNINGS
#include "abit.h"
#include "menu.h"
#include <cstring>
#include <iostream>
using namespace std;
    void abit::set_address(char *addresstmp)
    {
        if (address != NULL)
        {
            delete[] address;
        }
        address = new char[strlen(addresstmp) + 1];
        strcpy(address, addresstmp);
    }
    void abit::set_name(char *nametmp)
    {
        if (name != NULL)
        {
            delete[] name;
        }
        name = new char[strlen(nametmp) + 1];
        strcpy(name, nametmp);
    }
    void abit::set_surname(char *surnametmp)
    {
        if (surname != NULL)
        {
            delete[] surname;
        }
        surname = new char[strlen(surnametmp) + 1];
        strcpy(surname, surnametmp);
    }
    void abit::set_middlename(char *middletmp)
    {
        if (middlename != NULL) {
            delete[] middlename;
        }
        middlename = new char[strlen(middletmp) + 1];
        strcpy(middlename, middletmp);
    }
    void abit::set_math(int temp)
    {
        math = temp;
    }
    void abit::set_physics(int temp)
    {
        physics = temp;
    }
    void abit::set_ukrainian(int temp)
    {
        ukrainian = temp;
    }
    char *abit::get_address()
    {
        return address;
    }
    char *abit::get_name()
    {
        return name;
    }
    char *abit::get_surname()
    {
        return surname;
    }
    char *abit::get_middlename()
    {
        return middlename;
    }
    int abit::get_math()
    {
        return math;
    }
    int abit::get_physics()
    {
        return physics;
    }
    int abit::get_ukrainian()
    {
        return ukrainian;
    }
    abit::abit() : math(0), physics(0), ukrainian(0) {
        if (address != NULL)
        {
            delete[] address;
        }
        else
        {
            address = new char[strlen("Street 1") + 1];
            strcpy(address, "Street 1");
        }
        if (name != NULL)
        {
            delete[] name;
        }
        else
        {
            name = new char[strlen("Ivan") + 1];
            strcpy(name, "Ivan");
        }
        if (surname != NULL)
        {
            delete[] surname;
        }
        else
        {
            surname = new char[strlen("Ivanov") + 1];
            strcpy(surname, "Ivanov");
        }
        if (middlename != NULL)
        {
            delete[] middlename;
        }
        else
        {
            middlename = new char[strlen("Ivanovich") + 1];
            strcpy(middlename, "Ivanovich");
        }
        math = 0;
        physics = 0;
        ukrainian = 0;
    };
    void abit::writer()
    {
        cout << "Abit pib: " << surname << " " << name << " " << middlename << endl;
        cout << "Abit address: " << address << endl;;
        cout << "Abit marks: " << "Math - " << math << "; Physics - " << physics << "; Ukrainian - " << ukrainian << endl;
 
    }
    abit::~abit() {
 
        if (address != NULL)
        {
            delete[] address;
        }
        if (name != NULL)
        {
            delete[] name;
        }
        if (surname != NULL)
        {
            delete[] surname;
        }
        if (middlename != NULL)
        {
            delete[] middlename;
        }
    }

-------------------menu.h-------------------------


C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#pragma once
#include "abit.h"
class menu
{
    abit *abitList;
public:
    void Showmenu();
    void ShowFirstList();
    void ShowSecondList(int n);
    void ShowThirdList(int count);
    void SortArray(abit *array);
    menu();
    ~menu();
};

-----------------menu.cpp-------------------------




C++ (Qt)
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
154
155
#define _CRT_SECURE_NO_WARNINGS
#include "menu.h"
#include "abit.h"
#include <cstring>
#include <iostream>
using namespace std;
 
menu::menu()
{
    if (abitList != NULL)
    {
        delete[] abitList;
    }
    abitList = new abit[5];
    //Первый абитуриент
    abitList[1].set_name("Ivan");
    abitList[1].set_surname("Ivanov");
    abitList[1].set_middlename("Ivanovich");
    abitList[1].set_math(2);
    abitList[1].set_physics(3);
    abitList[1].set_ukrainian(5);
    //Второй абитуриент
    abitList[2].set_name("Petya");
    abitList[2].set_surname("Petrov");
    abitList[2].set_middlename("Petrovich");
    abitList[2].set_math(5);
    abitList[2].set_physics(4);
    abitList[2].set_ukrainian(2);
    //Третий абитуриент
    abitList[3].set_name("Dmitriy");
    abitList[3].set_surname("Chaban");
    abitList[3].set_middlename("Igorevich");
    abitList[3].set_math(3);
    abitList[3].set_physics(3);
    abitList[3].set_ukrainian(3);
    //Четвертый абитуриент
    abitList[4].set_name("Melnik");
    abitList[4].set_surname("Nikolay");
    abitList[4].set_middlename("Andreevich");
    abitList[4].set_math(4);
    abitList[4].set_physics(4);
    abitList[4].set_ukrainian(2);
    //Пятый абитуриент
    abitList[5].set_name("Belinskiy");
    abitList[5].set_surname("Vitaliy");
    abitList[5].set_middlename("Valentinovich");
    abitList[5].set_math(4);
    abitList[5].set_physics(3);
    abitList[5].set_ukrainian(3);
}
void menu::Showmenu()
{
    int flag;
    int n;
    int count;
    cout << "-------------------------menu--------------------------" << endl;
    cout << "Press 1 - Show list of abit's with low marks " << endl;
    cout << "Press 2 - Show list of abit's with marks >= your value" << endl;
    cout << "Press 3 - Show N abit's with best summ of marks" << endl;
    cin >> flag;
    switch (flag)
    {
    case 1:
    {
        ShowFirstList();
    }
    case 2:
    {
        cout << "Enter value : ";
        cin >> n;
        ShowSecondList(n);
    }
    case 3:
    {
        cout << "Enter N : ";
        cin >> count;
        ShowThirdList(count);
    }
    }
}
void menu::ShowFirstList()
{
    cout << "List of abit's with low marks : " << endl;;
    for (int i = 0; i < 5; i++)
    {
        if ((abitList[i].get_math() < 3) || (abitList[i].get_physics() < 3) || (abitList[i].get_ukrainian() < 3))
        {
            cout << i << ". " << abitList[i].get_name() << endl;
        }
    }
}
void menu::ShowSecondList(int n)
{
    cout << "List of abit's with marks >= your value : " << endl;
    for (int i = 0; i < 5; i++)
    {
        if ((abitList[i].get_math() + abitList[i].get_physics() + abitList[i].get_ukrainian()) >= n)
        {
            cout << i << ". " << abitList[i].get_name() << endl;
        }
    }
}
void menu::ShowThirdList(int count)
{
    SortArray(abitList);
    cout << count << " abit's with best summ of marks :" << endl;
    for (int i = 0; i < count; i++)
    {
        cout << i << ". " << abitList[i].get_name() << "Summ - " << (abitList[i].get_math() + abitList[i].get_physics() + abitList[i].get_ukrainian()) << endl;
    }
 
 
}
void menu::SortArray(abit *array)
{
    abit temp;
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            if ((array[j].get_math() + array[j].get_physics() + array[j].get_ukrainian()) < (array[j + 1].get_math() + array[j + 1].get_physics() + array[j + 1].get_ukrainian()))
            {
                temp.set_address(array[j].get_address());
                temp.set_name(array[j].get_name());
                temp.set_surname(array[j].get_surname());
                temp.set_middlename(array[j].get_middlename());
                temp.set_math(array[j].get_math());
                temp.set_physics(array[j].get_physics());
                temp.set_ukrainian(array[j].get_ukrainian());
                array[j].set_address(array[j + 1].get_address());
                array[j].set_name(array[j + 1].get_name());
                array[j].set_surname(array[j + 1].get_surname());
                array[j].set_middlename(array[j + 1].get_middlename());
                array[j].set_math(array[j + 1].get_math());
                array[j].set_physics(array[j + 1].get_physics());
                array[j].set_ukrainian(array[j + 1].get_ukrainian());
                array[j + 1].set_address(array[j].get_address());
                array[j + 1].set_name(array[j].get_name());
                array[j + 1].set_surname(array[j].get_surname());
                array[j + 1].set_middlename(array[j].get_middlename());
                array[j + 1].set_math(array[j].get_math());
                array[j + 1].set_physics(array[j].get_physics());
                array[j + 1].set_ukrainian(array[j].get_ukrainian());
            }
        }
    }
}
 
menu::~menu()
{
    if (abitList != NULL)
    {
        delete[]abitList;
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.03.2018, 12:09
Ответы с готовыми решениями:

Массив объектов класса как член другого класса
Здравствуйте. У меня тут возникла проблемка #include &quot;main.h&quot; class player { public: player(); player(char*); ...

Как переместить из стека одного класса в массив другого класса?
// HW_on.24.11_classStack_SantaClaus.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; ...

Перегрузка операции + с преобразованием объектов одного класса в объекты другого класса
Доброго времени суток! Изучаю ООП, при выполнении следующего задания возникли сложности: Создать класс Polar для хранения полярных...

7
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,236
19.03.2018, 12:21
В abit.h Лишний #include menu.h:
C++
1
2
3
//#include "menu.h" 
class abit {
....
1
techpriest
 Аватар для Mirmik
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
19.03.2018, 12:24
это происходит, потому что два файла пытаются подключить друг друга.
1
0 / 0 / 0
Регистрация: 19.03.2018
Сообщений: 9
19.03.2018, 12:39  [ТС]
Спасибо, помогло.

Добавлено через 11 минут
zss, Появилась новая проблема после запуска открывается откладка со словами "Необработанное исключение по адресу 0x656A66CB (ucrtbased.dll) в Final_02_Pract.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCDCDCDBD."
Указывая на 86 строку abit.cpp, не могли бы вы и с этим помочь? Так же убрал else которые были в конструкторе, они там не нужны и присвивания 3х переменных, т.к. они в списке инициализации конструктора
0
0 / 0 / 0
Регистрация: 19.03.2018
Сообщений: 9
19.03.2018, 15:19  [ТС]
Помогите пожалуйста.Мне тут в универе задали лабу, нужно создать класс полем которого будет массив объектов класса из предыдущей лабы и в котором будут содержаться методы выводящие в консоль информацию о некоторых из этих объектов. После запуска открывается окно завершение роботы и в отладчике вот это "Необработанное исключение по адресу 0x52F966CB (ucrtbased.dll) в Final_02_Pract.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCDCDCDBD." Прошу помочь и указать в чем я не прав. abit тот самый класс из первой лабы. menu - класс поле которого массив объектов и который содержит нужные методы.

------main.cpp--------

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define _CRT_SECURE_NO_WARNINGS
#include <cstring>
#include <iostream>
#include "abit.h"
#include "menu.h"
 
using namespace std;
 
void main()
{
    menu List;
    List.Showmenu();
    List.~menu();
    system("pause");
}


------abit.h------------

C++ (Qt)
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
#pragma once
class abit
{
    private:
        char *address;
        char *name;
        char *surname;
        char *middlename;
        int math;
        int physics;
        int ukrainian;
    public:
        void set_address(char *addresstmp);
        void set_name(char *nametmp);
        void set_surname(char *surnametmp);
        void set_middlename(char *middletmp);
        void set_math(int temp);
        void set_physics(int temp);
        void set_ukrainian(int temp);
        char *get_address();
        char *get_name();
        char *get_surname();
        char *get_middlename();
        int get_math();
        int get_physics();
        int get_ukrainian();
        void writer();
        abit();
        ~abit();
};


------abut.cpp----------

C++ (Qt)
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
#define _CRT_SECURE_NO_WARNINGS
#include "abit.h"
#include "menu.h"
#include <cstring>
#include <iostream>
using namespace std;
    void abit::set_address(char *addresstmp)
    {
        if (address != NULL)
        {
            delete[] address;
        }
        address = new char[strlen(addresstmp) + 1];
        strcpy(address, addresstmp);
    }
    void abit::set_name(char *nametmp)
    {
        if (name != NULL)
        {
            delete[] name;
        }
        name = new char[strlen(nametmp) + 1];
        strcpy(name, nametmp);
    }
    void abit::set_surname(char *surnametmp)
    {
        if (surname != NULL)
        {
            delete[] surname;
        }
        surname = new char[strlen(surnametmp) + 1];
        strcpy(surname, surnametmp);
    }
    void abit::set_middlename(char *middletmp)
    {
        if (middlename != NULL) 
        {
            delete[] middlename;
        }
        middlename = new char[strlen(middletmp) + 1];
        strcpy(middlename, middletmp);
    }
    void abit::set_math(int temp)
    {
        math = temp;
    }
    void abit::set_physics(int temp)
    {
        physics = temp;
    }
    void abit::set_ukrainian(int temp)
    {
        ukrainian = temp;
    }
    char *abit::get_address()
    {
        return address;
    }
    char *abit::get_name()
    {
        return name;
    }
    char *abit::get_surname()
    {
        return surname;
    }
    char *abit::get_middlename()
    {
        return middlename;
    }
    int abit::get_math()
    {
        return math;
    }
    int abit::get_physics()
    {
        return physics;
    }
    int abit::get_ukrainian()
    {
        return ukrainian;
    }
    abit::abit() : math(0), physics(0), ukrainian(0) 
    {
        if (address != NULL)
        {
            delete[] address;
        }
        address = new char[strlen("Street 1") + 1];
        strcpy(address, "Street 1");
        if (name != NULL)
        {
            delete[] name;
        }
        name = new char[strlen("Ivan") + 1];
        strcpy(name, "Ivan");
        if (surname != NULL)
        {
            delete[] surname;
        }
        surname = new char[strlen("Ivanov") + 1];
        strcpy(surname, "Ivanov");
        if (middlename != NULL)
        {
            delete[] middlename;
        }
        middlename = new char[strlen("Ivanovich") + 1];
        strcpy(middlename, "Ivanovich");
    };
    void abit::writer()
    {
        cout << "Abit pib: " << surname << " " << name << " " << middlename << endl;
        cout << "Abit address: " << address << endl;;
        cout << "Abit marks: " << "Math - " << math << "; Physics - " << physics << "; Ukrainian - " << ukrainian << endl;
 
    }
    abit::~abit() 
    {
 
        if (address != NULL)
        {
            delete[] address;
        }
        if (name != NULL)
        {
            delete[] name;
        }
        if (surname != NULL)
        {
            delete[] surname;
        }
        if (middlename != NULL)
        {
            delete[] middlename;
        }
    }



--------menu.h----------



C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#pragma once
#include "abit.h"
class menu
{
    abit *abitList;
public:
    void Showmenu();
    void ShowFirstList();
    void ShowSecondList(int n);
    void ShowThirdList(int count);
    void SortArray(abit *array);
    menu();
    ~menu();
};


------menu.cpp--------

C++ (Qt)
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
154
155
#define _CRT_SECURE_NO_WARNINGS
#include "menu.h"
#include "abit.h"
#include <cstring>
#include <iostream>
using namespace std;
 
menu::menu()
{
    if (abitList != NULL)
    {
        delete[] abitList;
    }
    abitList = new abit[5];
    //Первый абитуриент
    abitList[1].set_name("Ivan");
    abitList[1].set_surname("Ivanov");
    abitList[1].set_middlename("Ivanovich");
    abitList[1].set_math(2);
    abitList[1].set_physics(3);
    abitList[1].set_ukrainian(5);
    //Второй абитуриент
    abitList[2].set_name("Petya");
    abitList[2].set_surname("Petrov");
    abitList[2].set_middlename("Petrovich");
    abitList[2].set_math(5);
    abitList[2].set_physics(4);
    abitList[2].set_ukrainian(2);
    //Третий абитуриент
    abitList[3].set_name("Dmitriy");
    abitList[3].set_surname("Chaban");
    abitList[3].set_middlename("Igorevich");
    abitList[3].set_math(3);
    abitList[3].set_physics(3);
    abitList[3].set_ukrainian(3);
    //Четвертый абитуриент
    abitList[4].set_name("Melnik");
    abitList[4].set_surname("Nikolay");
    abitList[4].set_middlename("Andreevich");
    abitList[4].set_math(4);
    abitList[4].set_physics(4);
    abitList[4].set_ukrainian(2);
    //Пятый абитуриент
    abitList[5].set_name("Belinskiy");
    abitList[5].set_surname("Vitaliy");
    abitList[5].set_middlename("Valentinovich");
    abitList[5].set_math(4);
    abitList[5].set_physics(3);
    abitList[5].set_ukrainian(3);
}
void menu::Showmenu()
{
    int flag;
    int n;
    int count;
    cout << "-------------------------menu--------------------------" << endl;
    cout << "Press 1 - Show list of abit's with low marks " << endl;
    cout << "Press 2 - Show list of abit's with marks >= your value" << endl;
    cout << "Press 3 - Show N abit's with best summ of marks" << endl;
    cin >> flag;
    switch (flag)
    {
    case 1:
    {
        ShowFirstList();
    }
    case 2:
    {
        cout << "Enter value : ";
        cin >> n;
        ShowSecondList(n);
    }
    case 3:
    {
        cout << "Enter N : ";
        cin >> count;
        ShowThirdList(count);
    }
    }
}
void menu::ShowFirstList()
{
    cout << "List of abit's with low marks : " << endl;;
    for (int i = 0; i < 5; i++)
    {
        if ((abitList[i].get_math() < 3) || (abitList[i].get_physics() < 3) || (abitList[i].get_ukrainian() < 3))
        {
            cout << i << ". " << abitList[i].get_name() << endl;
        }
    }
}
void menu::ShowSecondList(int n)
{
    cout << "List of abit's with marks >= your value : " << endl;
    for (int i = 0; i < 5; i++)
    {
        if ((abitList[i].get_math() + abitList[i].get_physics() + abitList[i].get_ukrainian()) >= n)
        {
            cout << i << ". " << abitList[i].get_name() << endl;
        }
    }
}
void menu::ShowThirdList(int count)
{
    SortArray(abitList);
    cout << count << " abit's with best summ of marks :" << endl;
    for (int i = 0; i < count; i++)
    {
        cout << i << ". " << abitList[i].get_name() << "Summ - " << (abitList[i].get_math() + abitList[i].get_physics() + abitList[i].get_ukrainian()) << endl;
    }
 
 
}
void menu::SortArray(abit *array)
{
    abit temp;
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            if ((array[j].get_math() + array[j].get_physics() + array[j].get_ukrainian()) < (array[j + 1].get_math() + array[j + 1].get_physics() + array[j + 1].get_ukrainian()))
            {
                temp.set_address(array[j].get_address());
                temp.set_name(array[j].get_name());
                temp.set_surname(array[j].get_surname());
                temp.set_middlename(array[j].get_middlename());
                temp.set_math(array[j].get_math());
                temp.set_physics(array[j].get_physics());
                temp.set_ukrainian(array[j].get_ukrainian());
                array[j].set_address(array[j + 1].get_address());
                array[j].set_name(array[j + 1].get_name());
                array[j].set_surname(array[j + 1].get_surname());
                array[j].set_middlename(array[j + 1].get_middlename());
                array[j].set_math(array[j + 1].get_math());
                array[j].set_physics(array[j + 1].get_physics());
                array[j].set_ukrainian(array[j + 1].get_ukrainian());
                array[j + 1].set_address(array[j].get_address());
                array[j + 1].set_name(array[j].get_name());
                array[j + 1].set_surname(array[j].get_surname());
                array[j + 1].set_middlename(array[j].get_middlename());
                array[j + 1].set_math(array[j].get_math());
                array[j + 1].set_physics(array[j].get_physics());
                array[j + 1].set_ukrainian(array[j].get_ukrainian());
            }
        }
    }
}
 
menu::~menu()
{
    if (abitList != NULL)
    {
        delete[]abitList;
    }
}
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
19.03.2018, 16:20
Цитата Сообщение от Genomu Посмотреть сообщение
Прошу помочь и указать в чем я не прав
Можете пройтись отладчиком по шагам и посмотреть в какой конкретно момент возникает исключение.
Но, судя по логу, у вас VS ругается на то, что вы залезли не в свою память.
При осмотре класса abit сразу бросается в глаза, что у вас используются указатели и работа с динамической памятью, но при этом не соблюдено правило трёх. Вам нужно явно определить конструктор копий и оператор копирующего присваивания
C++
1
2
abit(const abit &other);
abit& operator=(const abit &other);
Скорее всего, при копировании, у вас возникает ситуация, что свойства разных объектов ссылаются на один и тот же участок памяти. В итоге при уничтожении первого объекта у нас всё хорошо, а при уничтожении второго мы попадаем на попытку повторного освобождения динамической памяти, что и генерирует ошибку.

Добавлено через 27 минут
 Комментарий модератора 
Genomu, запрещено дублировать темы
0
10 / 10 / 0
Регистрация: 29.04.2013
Сообщений: 145
19.03.2018, 16:38
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
abitList = new abit[5];
    //Первый абитуриент
    abitList[1].set_name("Ivan");
    abitList[1].set_surname("Ivanov");
    abitList[1].set_middlename("Ivanovich");
    abitList[1].set_math(2);
    abitList[1].set_physics(3);
    abitList[1].set_ukrainian(5);
    //Второй абитуриент
    abitList[2].set_name("Petya");
    abitList[2].set_surname("Petrov");
    abitList[2].set_middlename("Petrovich");
    abitList[2].set_math(5);
    abitList[2].set_physics(4);
    abitList[2].set_ukrainian(2);
    //Третий абитуриент
    abitList[3].set_name("Dmitriy");
    abitList[3].set_surname("Chaban");
    abitList[3].set_middlename("Igorevich");
    abitList[3].set_math(3);
    abitList[3].set_physics(3);
    abitList[3].set_ukrainian(3);
    //Четвертый абитуриент
    abitList[4].set_name("Melnik");
    abitList[4].set_surname("Nikolay");
    abitList[4].set_middlename("Andreevich");
    abitList[4].set_math(4);
    abitList[4].set_physics(4);
    abitList[4].set_ukrainian(2);
    //Пятый абитуриент
    abitList[5].set_name("Belinskiy");
    abitList[5].set_surname("Vitaliy");
    abitList[5].set_middlename("Valentinovich");
    abitList[5].set_math(4);
    abitList[5].set_physics(3);
    abitList[5].set_ukrainian(3);
Таки 5 абитуриент записывается за пределы массива. А в 0 ячейке остаётся билиберда.
1
0 / 0 / 0
Регистрация: 19.03.2018
Сообщений: 9
19.03.2018, 16:57  [ТС]
Просто нет слов, на таких мелочах погореть это нужно уметь. Огромное спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.03.2018, 16:57
Помогаю со студенческими работами здесь

Инициализация экземпляра класса, как поле другого класса
Всем доброго времени суток ! Есть класс: class a{ public: a(int _type): type(_type) {} private: int type; }

Преобразование объектов одного класса в объекты другого
Есть сей код.Тут я пытаюсь осуществить преобразование объекта класса myCl к классу myCl2. Код вызывает завершение работы компилятора. В чем...

Как сделать вектор/массив объектов одного класса с разным <типом>
У меня есть класс MySet&lt;T&gt;, я хочу сделать массив/вектор таких объектов, в который можно будет добавлять как MySet&lt;int&gt;, так и...

Как создать массив объектов одного класса в другом, и как к ним обращаться?
вот класс: #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; class File { private: char *name, *date; int ...

Массив объектов в конструкторе другого класса
есть класс A: class A{ public: double *weights; A() { } A(int a) {


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru