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

Создание массива класса

22.11.2014, 14:43. Показов 697. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пишу курсовую, задание получил следующее:

"Разработать приложение на С++, позволяющее, собирать, накапливать сведения о студентах и занятиях, посещаемых ими. Структура приложения должна включать классы студента и занятия."

При этом требования еще такие:

- Студенту предоставляется право самостоятельно выбрать структуру и тип хранилища данных – текстовый файл либо база данных.

- После чтения данных, последние должны храниться в памяти и обрабатываться как классы.

- Работа в программе в консольном исполнении должна осуществляться с помощью меню операций. Данные должны выводиться в табличном виде.


С классами никогда не работал впринципе в с++, но вроде разобрался боле менее, пока с одним классом:

класс студент

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
class student
{
    string last_name;
    string name;
    string middle_name;
    string phone_number;
    int group_number;
 
public:
    void record_last_name () // метод_записи_фамилии
    {
        string temporary;
        for (;;)
        {
            getline (cin , temporary);
            if (temporary.empty()){cout << "Empty string\n";continue;}
            else{cout << "Record\n" << endl;break;}
        }
        last_name = temporary;
    }
 
    void record_name () // метод_записи_имени
    {
        string temporary;
        for (;;)
        {
            getline (cin , temporary);
            if (temporary.empty()){cout << "Empty string\n";continue;}
            else{cout << "Record\n" << endl;break;}
        }
        name = temporary;
    }
 
    void record_middle_name () // метод_записи_отчества
    {
        string temporary;
        for (;;)
        {
            getline (cin , temporary);
            if (temporary.empty()){cout << "Empty string\n" <<endl;continue;}
            else{cout << "Record\n" << endl;break;}
        }
        middle_name = temporary;
    }
 
    void record_phone_number () // метод_записи_телефонного_номера
    {
        string temporary;
        for (;;)
        {
            getline (cin , temporary);
            if (temporary.empty()){cout << "Empty string\n" <<endl;continue;}
            else{cout << "Record\n" << endl;break;}
        }
        phone_number = temporary;
    }
 
    void record_group_number () // метод_записи_номера_группы
    {
        int temporary = 0;
        do
        {
            cin >> temporary ;
        }while (temporary <= 0);
        group_number = temporary;
    }
 
    void Print () // вывод_на_экран_информации_о_студенте
    {
        cout << "Name of the student " << last_name << endl;
        cout << "The student's name " << name << endl;
        cout << "Student's first name " << middle_name << endl;
        cout << "Phone number of the student " << phone_number << endl;
        cout << "Group_number " << group_number << endl;
    }
 
    void create_student (int size)
    {
        system("mode con cols=70 lines=50");
 
        // выделяем память под массив из 10 элементов
//        int size = 1;
//        student *array = new student [size];
 
        // заполняем массив
        for (int i = 0; i < size; ++i)
        {
           cout << "Last name\n";
           array[i].record_last_name ();
 
           cout << "Name\n";
           array[i].record_name ();
 
           cout << "Middle name\n";
           array[i].record_middle_name ();
 
           cout << "Phone number\n";
           array[i].record_phone_number ();
 
           cout << "Group number\n";
           array[i].record_group_number ();
 
         }
 
     }
 
    student () // конструктор_класса
    {
        last_name = "NULL";
        name = "NULL";
        middle_name = "NULL";
        phone_number = "NULL";
        group_number = 0;
    }
 
    student (char *last_name_2, char *name_2, char *middle_name_2, char *phone_number_2,
        int group_number_2)  // конструктор с параметрами
    {
        last_name = last_name_2;
        name = name_2;
        middle_name = middle_name_2;
        phone_number = phone_number_2;
        group_number = group_number_2;
    }
 
    ~student (void){}; // деструктор_класса
 
 
};
и main

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void main ()
{
        int size = 1;
        student *array = new student [size];
 
        
        array[size].create_student(size);
 
 
      //вывод массива на экран
        cout << "Show\n";
        for (int i = 0; i < size; ++i)
        {
           array[i].Print ();
        }
 
 
 
        // удаляем массив
        delete [] array;
       
}
Проблема в том как вернуть созданный в функции create_student массив, чтоб из main его вывести на экран?


И вообще мб я слишком заморочился, может как то все проще можно сделать?(((

При таком коде, выводи пустой массив данных((
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2014, 14:43
Ответы с готовыми решениями:

Создание массива объектов класса
Создание массива объектов класса. E2451 Undefined symbol 'myZKH' По-разному уже...

Создание Массива Объектов класса
Здравствуйте, такая вот проблемка возникла: нужно создать массив B объектов класса TGoods. И...

Создание массива элементов класса
Добрый день. Возможно ли сделать следующий финт: class Device { byte mGroup; public: ...

Создание массива объектов класса
Здравствуйте Подскажите пожалуйста как правилььно создать массив объектов класса, что бы не...

4
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
22.11.2014, 15:09 2
Наверное как то так
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
class Student
{
    private:
        int * array; // массив структор и т.д.
        size_t SIZE;
    public: 
        Student(const size_t & size = 1)
        {
            SIZE = size;
            array = new int[SIZE];
        }
        ~Student(){ delete [] array; }
        
        void creat_student()
        {
            // TO DO
        }
        
        int * getArray(){ return array; } //получаем массив
        size_t getSize(){ return SIZE; }
        
        
};
 
 
int main() {
    
    Student st(5);
    
    int * arr = st.getArray();
    
    for(int i = 0; i < st.getSize(); ++i)
        std::cout << arr[i];
    
    return 0;
}
1
0 / 0 / 0
Регистрация: 22.11.2014
Сообщений: 7
22.11.2014, 15:39  [ТС] 3
Чет я тпулю))) Я так понимаю это массив внутри класса, да? А мне нужен массив из элементов самого класса(
т.е. у нас допусти класс student и у него переменные фамилия имя отчество и тд., вот мне надо чтоб в каждой "ячейке" массива были все составляющие этого класса
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
22.11.2014, 16:24 4
Если я правильно понял:
вынеси работу с массивом за пределы класса. А то у тебя получается, что класс Student а в нем идет обработка группы студентов, 1 обьект = 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
Student
{
  // to do
}
 
int main()
{
  const size_t size = 5;
  Student array[size];
  for (int i = 0; i < size; ++i)
        {
           cout << "Last name\n";
           array[i].record_last_name ();
 
           cout << "Name\n";
           array[i].record_name ();
 
           cout << "Middle name\n";
           array[i].record_middle_name ();
 
           cout << "Phone number\n";
           array[i].record_phone_number ();
 
           cout << "Group number\n";
           array[i].record_group_number ();
 
         }
}
Другими словами все что относится к ОДНОМУ студенту и действия с ОДНИМ студентом должно быть в классе, а создание группы студентов и манипуляции с группой за его пределами(в другом классе GROUP например или просто в main).
1
0 / 0 / 0
Регистрация: 22.11.2014
Сообщений: 7
22.11.2014, 17:34  [ТС] 5
Во так уже понятнее)) спасибо большое попробую сделать, дело в том что мне нужно заполнение массива функцией, просто ее как отдельную надо делать, а не в классе.... если что отпишусь)
0
22.11.2014, 17:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2014, 17:34
Помогаю со студенческими работами здесь

Создание класса по обработке массива.
Помогите, пожалуйста решить!!! Задание: Напишите программу по обработке массива, как объекта...

Создание массива объектов класса
Доброго времени суток! Хотела бы разобраться с вашей помощью в чем-таки состоит моя ошибка. ...

Создание массива классов(обектов класса)
Здрасти, для этого я использую vector std::vector&lt;Sprite&gt; sprites; После чего пытаюсь добавить...

Создание класса по обработке данных массива
Добрый день!!!Помогите в решении задачи на массивы. А то в них вообще бум-бум.. Нужно написать...


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

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