Форум программистов, компьютерный форум CyberForum.ru

Работа с объектами. Код вылетает сразу после инициализации элементов массива - C++

Восстановить пароль Регистрация
 
samaranin
0 / 0 / 0
Регистрация: 22.04.2014
Сообщений: 2
22.04.2014, 20:53     Работа с объектами. Код вылетает сразу после инициализации элементов массива #1
Код вылетает сразу после инициализации элементов массива. Не могу засечь в чем проблема. Не подскажете? Буду благодарен.
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
#include <cstdlib>
#include <iostream>
#include <algorithm>
 
using namespace std;
 
class Student
{
 private:
         char *lastName;
         int number;
         int marks[5];
 
 public:
        Student(char *name, int num, int *mark)
        {
                 lastName = name; 
                 number = num;
                 for (int i = 0; i<5; i++) marks[i] = mark[i];   
        }
        
        Student()
        {
                 lastName = "LastName";
                 number = 0;
                 for (int i = 0; i<5; i++) marks[i] = 0;
        }
        
        void SetName(char *lastname) { lastName = lastname; }
        void SetNumber(int num) { number = num; }
        void SetMarks (int *mark) 
        {
             for (int i = 0; i<5; i++) marks[i] = mark[i];
        }
        
        void Show() 
        {
             cout << "Last Name: " <<lastName << ". Number: " << number << endl;
             cout << "Marks: ";
             for (int i = 0; i<5; i++) cout << marks[i] << " ";
             cout << endl;
        }
        
        double AverageMark()
        {
               int summ = 0;
               for (int i = 0; i<5; i++) summ += marks[i];
               return (double) summ/5;
        }
};
 
class Group
{
 private:
         int n;
         Student group[];
 
 public:
        bool CMP (int a, int b) { return a < b; }
        
        Group()
        {
               
               cout << "Enter number of students: ";
               cin >> n;
               for (int i = 0; i<n; i++)
               {
                   char *name;
                   int num;
                   int mark[5];
                   cout << "Enter Last Name: "; cin >> name;
                   cout << "Enter Number: "; cin >> num;
                   cout << "Enter Marks: ";
                   for (int j = 0; j<5; j++) 
                   {
                       cout<< (j+1) << ": "; 
                       cin >> mark[j];
                   }
                   group[i].SetName(name); 
                   group[i].SetNumber(num); 
                   group[i].SetMarks(mark);
               }
        }
        
        Group(Student *gr)
        {
               cout << "Enter number of students: ";
               cin >> n;
               for (int i = 0; i<n; i++) group[i] = gr[i];
        }
        
        void Print()
        {
             for (int i = 0; i<n; i++) group[i].Show();
        }
        
        void StudWithMaxMark()
        {
             cout << "Students with max average mark: " << endl;
             if ( n < 5 )
                for (int i = 0; i < n; i++) group[i].Show();
             else
                for (int i = 0; i < 5; i++) group[i].Show();
        }
};
 
int main(int argc, char *argv[])
{
    Group gr;
    gr.Print();
    gr.StudWithMaxMark();
    system("PAUSE >> VOID");
    return EXIT_SUCCESS;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2014, 20:53     Работа с объектами. Код вылетает сразу после инициализации элементов массива
Посмотрите здесь:

Сразу три 1.анализ функции, 2.замена элементов массива, 3.максимальный элемент массива C++
После компиляции программы. Visual studio сразу закрывается. Вылетает ошибка. C++
Все элементы, равные нулю, поставить сразу после максимального элемента данного массива C++
C++ Объявление класса после инициализации
C++ после ввода сразу вылетает с крит. ошибкой
При отладке программы вылетает окошко с ошибкой: использование переменной без инициализации C++
C++ Работа с объектами в С++
Выкрутасы с объектами - напишите мне код C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 1
22.04.2014, 21:59     Работа с объектами. Код вылетает сразу после инициализации элементов массива #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Student(char *name, int num, int *mark)
 {
                 lastName=new char[strlen(name)+1];
                 strcpy(lastName ,name);
           ...
}
Student()
{
                lastName=new char[9];
                strcpy(lastName ,"LastName");
....
}
~Student()
{
    delete[] lastName;
} 
 void SetName(char *lastname) 
{ 
     delete[] lastName;
     lastName=new char[strlen(lastname)+1];
     strcpy(this->lastName,lastname); 
}
Добавлено через 9 минут
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
class Group
{
 private:
         int n;
         Student* group;
 
 public:
        bool CMP (int a, int b) { return a < b; }
        
        Group()
        {
               
               cout << "Enter number of students: ";
               cin >> n;
               group=new Student[n];
               for (int i = 0; i<n; i++)
               {
                   char name[100];
                   int num;
                   int mark[5];
                   cout << "Enter Last Name: "; cin >> name;
                   cout << "Enter Number: "; cin >> num;
                   cout << "Enter Marks: ";
                   for (int j = 0; j<5; j++) 
                   {
                       cout<< (j+1) << ": "; 
                       cin >> mark[j];
                   }
                   group[i].SetName(name); 
                   group[i].SetNumber(num); 
                   group[i].SetMarks(mark);
               }
        }
        
        Group(Student *gr)
        {
               n=gr->n;
               for (int i = 0; i<n; i++)
               {
                   group[i].SetName(gr[i].name); 
                   group[i].SetNumber(gr[i].num); 
                   group[i].SetMarks(gr[i].mark);
               }
        }
        
       ....
 
~Groupe()
{
    delete[] group;
}
};
samaranin
0 / 0 / 0
Регистрация: 22.04.2014
Сообщений: 2
22.04.2014, 22:00  [ТС]     Работа с объектами. Код вылетает сразу после инициализации элементов массива #3
Большое спасибо.
Yandex
Объявления
22.04.2014, 22:00     Работа с объектами. Код вылетает сразу после инициализации элементов массива
Ответ Создать тему
Опции темы

Текущее время: 05:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru