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

Класс в классе - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.82
Giggs131
0 / 0 / 0
Регистрация: 13.04.2010
Сообщений: 19
27.05.2010, 01:13     Класс в классе #1
Не могу доделать код(Надо написать класс группы студентов(студентов реализовать в классе).Уже понаписывал много,а толку 0.
В первый раз заношу данные,вывожу-работает,добавляю данные-уже что-то страшное выводит.
Кто может,помогите,пожалуйста..



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
#include<iostream>
#include<string.h>
using namespace std;
class Student
{
    char name[50];
    char family[50];
    int age;
public:
    Student();
    void Ad(char buff2[], char buff3[], int buf);
    void Show();
};
Student::Student()
{
}
void Student::Ad(char buff2[], char buff3[], int buf)
{
        strcpy(name,buff2);
        name[((strlen(buff2))+1)]='\0';
        strcpy(family,buff3);
        family[((strlen(buff3))+1)]='\0';
        age=buf;
}
void Student::Show()
{
    cout<<name<<endl;
    cout<<family<<endl;
    cout<<age<<endl;
}
class Group
{
    char name_group[50];
    Student prototype[50];
public:
    Group();
    ~Group();
    void Add(char [], char [], char [], int, int);
    void Show(int size);
};
Group::Group()
{
}
Group::~Group()
{
    cout<<"\n******************\n";
}
void Group::Add(char buff1[], char buff2[], char buff3[], int buf, int size)
{
    strcpy(this->name_group,buff1);
    prototype[size].Ad(buff2,buff3,buf);
}
void Group::Show(int size)
{
    if(size==0) puts("\nДанных нет!\n");
    else
    {
        for(int i=0;i<size;i++)
        {
            cout<<name_group[i]<<endl;
            prototype[i].Show();
        }
    }
}
    int size=0;
 
 
 
 
 
 
 
 
void main()
{
    Group* Arr=new Group[];
    char key;
    int buf;
    char* buff1=new char[];
    char* buff2=new char[];
    char* buff3=new char[];
    char* buff4=new char[];
    setlocale(LC_ALL,("RUS"));
    cout<<"\t\tКласс группы студентов"<<endl<<endl;
    for(;;)
    {
        cout<<"\n0 - Выход;\n1 - Добавить информацию;\n2 - Показ информации.\n";
        cin>>key;
        if(key=='0') exit(0);
        else if(key=='1')
        {
            cout<<"\nВведите название группы:\n";
            cin>>buff1;
            buff1[((strlen(buff1))+1)]='\0';
            cout<<"\nВведите имя:\n";
            cin>>buff2;
            buff2[((strlen(buff2))+1)]='\0';
            cout<<"\nВведите фамилию:\n";
            cin>>buff3;
            buff3[((strlen(buff3))+1)]='\0';
            cout<<"\nВведите возраст\n";
            cin>>buf;
            Arr[size].Add(buff1,buff2,buff3,buf,size);
            buff1[0]=buff2[0]=buff3[0]='\0';
            buf=0;
            ++size;
        }
        else if(key=='2') Arr->Show(size);
        else
        {
            cout<<"\nПопробуйте ввести заново!\n";
            continue;
        }
        system("pause");
        //system("cls");
    }
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2010, 01:13     Класс в классе
Посмотрите здесь:

Класс в классе C++
задании первый класс вводиться по порядку а уже втором классе некоторый ввод перескакивает через одну C++
У меня класс B в классе A, а в классе B рекурсивная функция переопределения оператора "()", как её вызвать, не создавая явно объект класса B? C++
Реализовать класс Account, представляющий собой банковский счет. В классе должны быть четыре поля C++
Указатели в базовом классе на базовый класс и производный класс C++
Класс в классе C++
C++ Чем может быть чревато создание в классе адреса на другой класс
Как использовать вектор, содержащий указатели на класс, в этом же классе? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Crudelis
Шаровик затейник
 Аватар для Crudelis
667 / 409 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
27.05.2010, 01:52     Класс в классе #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
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
//Написать класс, описывающий группу студентов. 
//Студент также реализуется с помощью соответствующего класса. 
#include<iostream>
#include<windows.h>
#define cikl for(int i=0;i<n;i++)
using namespace std;
class Group
{
    char group[50];
public:
    void Inpgroup()
    {
        cout<<"Введите группу: \n";
        gets(group);
        OemToCharA(group,group);
    
    }
    void Show()
    {
        cout<<"Группа: "<<group<<endl;
        cout<<endl;
    
    }
};
class Student
{
    char name[50];
    char fam[50];
    int age;
    char specializ[50];
public:
    void Show()
    {
            cout<<"Фамилия: "<<fam<<endl;
            cout<<"Имя: "<<name<<endl;
            cout<<"Специализация: "<<specializ<<endl;
            cout<<"Возраст: "<<age<<endl;
    }
    void Inpfam()
    {
        cout<<"Введите фамилию студента: \n";
        gets(fam);
        OemToCharA(fam,fam);
    }
    void Inpname()
    {
        cout<<"Введите имя студента: \n";
        gets(name);
        OemToCharA(name,name);
    }
    void Inpage()
    {
        cout<<"Введите возраст: \n";
        cin>>age;
        cin.ignore(1);
    }
    void Inpspecializ()
    {
        cout<<"Введите специализацию: \n";
        gets(specializ);
        OemToCharA(specializ,specializ);
    }
    
};
void main()
{
    setlocale(LC_CTYPE,"Rus");
    int n=0,a=0,key;
    Student obj[100];
    Group gr[100];
    do
    {
        cout<<"1. Добавить студента в группу\n2. Показать базу студентов.\n0. Выход\n";
        cin>>key;
        cin.ignore(1);
    switch(key)
    {
    case 1:
                gr[n].Inpgroup();
                obj[n].Inpfam();
                obj[n].Inpname();
                obj[n].Inpage();
                obj[n].Inpspecializ();
                n++;
                system("pause");
                system("cls");
                break;
    case 2:
        if(n==0)
            cout<<"База студентов пуста, вначале введите их\n";
        else
        {
            cikl
            {
            obj[i].Show();
            gr[i].Show();
            }
        }
        system("pause");
        system("cls");
        break;
    case 0:
        cout<<"До свидания\n";
        break;
    default:
        cout<<"Выбран неправильный пункт меню\n";
        break;
    }
    }while(key!=0);
    
}
Добавлено через 27 секунд
на самом то деле всё намного проще)
Maithil
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 3
10.10.2013, 14:15     Класс в классе #3
Crudelis, два вопроса: что делает cin.ignore(1) и зачем объявлено int a=0?
P.S. Я вижу, что прошло 3 года, может кто-то другой ответит

Добавлено через 35 минут
Одна проблема - класс Group некорректно работает. Выводится сообщение "Введите название группы: " и за ним сразу сообщение из другой функции - "Введите фамилию студента: ".
Не могу понять, где ошибка.
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
//Написать класс, описывающий группу студентов. Студент также реализуется с помощью соответствующего класса.
 
#include <iostream>
#include<windows.h>
using namespace std;
 
class Group
{
    char Group_name[50];
public:
    void Inp_group()
    {
        cout<<"Введите название группы: ";
        gets_s(Group_name);
        OemToCharA(Group_name, Group_name);
    }
 
    void Show_group()
    {
        cout<<"Группа: "<<Group_name<<endl;
    }
};
 
class Student
{
    char name[20];
    char sername[30];
    char speciality[30];
    int age;
public:
    void Inp_name()
    {
        cout<<"Введите имя студента: ";
        gets_s(name);
        OemToCharA(name, name);
    }
 
    void Inp_sername()
    {
        cout<<"Введите фамилию  студента: ";
        gets_s(sername);
        OemToCharA(sername, sername);
    }
 
    void Inp_speciality()
    {
        cout<<"Введите специальность  студента: ";
        gets_s(speciality);
        OemToCharA(speciality, speciality);
    }
 
    void Inp_age()
    {
        cout<<"Введите возраст  студента: ";
        cin>>age;
    }
 
    void Show()
    {
        cout<<"Фамилия: "<<sername<<endl;
        cout<<"Имя: "<<name<<endl;
        cout<<"Специализация: "<<speciality<<endl;
        cout<<"Возраст: "<<age<<endl;
    }
};
 
void main()
{
    setlocale(LC_ALL,"");
    int key, n=0;
    Group grup[100];
    Student obj[100];
 
    do
    {
        cout<<"Выберите действие:\n1 - добавить студента в базу.\n2 - показать базу студентов.\n3 - завершить работу программы.\n";
        cout<<"Ваш выбор: ";
        cin>>key;
        system("cls");
        switch(key)
        {
        case 1:
            grup[n].Inp_group();
            obj[n].Inp_sername();
            obj[n].Inp_name();
            obj[n].Inp_speciality();
            obj[n].Inp_age();
            n++;
            system("pause");
            system("cls");
            break;
        case 2:
            if(n==0)
            {
                cout<<"База студентов пуста.\n";
            }
            else
            {
                for(int i=0;i<n;i++)
                {
                    grup[i].Show_group();
                    obj[i].Show();
                }
            }
            system("pause");
            system("cls");
            break;
        case 3:
            system("cls");
            cout<<"Завершение работы.\n";
            break;
        default:
            cout<<"Некорректный ввод!\n";
            system("pause");
            system("cls");
            break;
        }
    }
    while(key!=3);
}
Yandex
Объявления
10.10.2013, 14:15     Класс в классе
Ответ Создать тему
Опции темы

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