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

Структуры - разбор упражнения - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.95
Daynine
 Аватар для Daynine
8 / 8 / 0
Регистрация: 18.11.2009
Сообщений: 24
01.12.2010, 13:32     Структуры - разбор упражнения #1
Прошу помочь с решением задачки и если не сложно объясните пожалуйста как вы то сделали.
Есть 3 задачи (1 и 2 - я решил) - не могу решить 3, т.к непонимаю как это сделать.

Задача1:
Создайте структуру с именем employee,содержащую 2 поля: номер сотрудника типа int и величину его пособия в долларах типа float. Запросите с клавиатуры данные о трех сотрудниках, сохраните их в трех структурных переменных типа employee и выведите информацию о каждом сотруднике на экран.
Задача2:
Написать программу которая должна по первой букве должности должна вывести полное название должности на экран. Сделать через перечесляемый тип данных
enim etype { laborer,secretary,manager, accountant, executive,researcher};

Пример работы программы:
Введите первую букву должности: a
Полное название: accountant
Эти 2 задачи я решил - если будет нужно - когда буду дома (сейчас пишу с телефона) скину свои листинги. А вот 3 не могу сделать - т.к не понимаю как организовать 2 структуры в 1,ну или я совсем не понял как сделать ее.
Задача - которую нужно решить!:
Добавьте поля типа enum etype (задача 2) и struct date (месяц,день,год) в структуру employee (задача 1). Организуйте программу таким образом,чтобы пользователь вводил 4 пункта данных о каждом из 3 сотрудников: его номер,велечину з\п, его должность и дату принятия на работу. Программа должна хранить введенные данные в трех переменных типа employee и выводить их содержимое на экран
Просто в книге не указано как решать подобные задачи,а знать это нужно. Дальше то я продолжил читать и заниматься,но узнать как сделать 2 структуры в 1 - хочется.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2010, 13:32     Структуры - разбор упражнения
Посмотрите здесь:

C++ Предложите упражнения по С++ мне
C++ Тренирующие упражнения
Упражнения по с++ C++
C++ Упражнения
Простые упражнения по С++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ne6u4u
 Аватар для ne6u4u
12 / 12 / 0
Регистрация: 14.11.2010
Сообщений: 29
01.12.2010, 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
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
using namespace std;
enum etype {laborarer, secretary, manager};
///////////////////////////////////////////////////////
class employee
{
private:
    etype dol;
    int number;
    float zp;
public:
    void get()
    {
        cout << "\nВведите номер сотрудника"; cin >> number;
        char temp;
        cout << "\nВведите первую букву должности (laborarer, secretary, manager): "; cin >> temp;
        switch(temp)
        {
        case 'l': dol = laborarer; break;
        case 's': dol = secretary; break;
        case 'm': dol = manager; break;
        }
        cout << "\nВведите ЗП: "; cin >> zp;
    }
    void show()
    {
        cout << endl << "Сотрудник номер " << number << " должность ";
        switch(dol)
        {
        case 0: cout << "laborarer "; break;
        case 1: cout << "secretary "; break;
        case 2: cout << "manager "; break;
        }
        cout << " с ЗП " << zp << endl;
    }
};
int main()
{
    setlocale(LC_ALL, "Russian");
    employee d1,d2,d3;
    d1.get();
    d2.get();
    d3.get();
    d1.show();
    d2.show();
    d3.show();
    return 0;
}
Правда, извиняй, я тока ща увидел что у тебя там еще структуры, а не классы, ну суть такае же, только методы не нужны а на прямую обращаться можно)

Добавлено через 10 минут
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
#include <iostream>
using namespace std;
enum etype {laborarer, secretary, manager};
///////////////////////////////////////////////////////
struct employee
{
    etype dol;
    int number;
    float zp;
 
};
int main()
{
    setlocale(LC_ALL, "Russian");
    employee d1,d2,d3;
    char temp;
    cout << "Введите номер сотрудника: "; 
    cin >> d1.number;
    cout << "Введите доджность (l-laborer,s-secretary,m-manager): ";
    cin >> temp;
    switch(temp)
    {
    case 'l': d1.dol = laborarer;break;
    case 's': d1.dol = secretary;break;
    case 'm': d1.dol = manager; break;
    }
    cout << "Введите ЗП: ";
    cin >> d1.zp;
    cout << endl << "Сотрудник номер " << d1.number << " должность ";
    switch(d1.dol)
    {
    case 0: cout << "laborarer "; break;
    case 1: cout << "secret "; break;
    case 2: cout << "manager "; break;
    }
    cout << " с ЗП " << d1.zp << endl;
    return 0;
}
:o)
Daynine
 Аватар для Daynine
8 / 8 / 0
Регистрация: 18.11.2009
Сообщений: 24
01.12.2010, 15:35  [ТС]     Структуры - разбор упражнения #3
Цитата Сообщение от ne6u4u Посмотреть сообщение
}{ы))) Лафоре. Объектно-ориентированное программирование в С++?)))
набросок:


Правда, извиняй, я тока ща увидел что у тебя там еще структуры, а не классы, ну суть такае же, только методы не нужны а на прямую обращаться можно)

Добавлено через 10 минут
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
#include <iostream>
using namespace std;
enum etype {laborarer, secretary, manager};
///////////////////////////////////////////////////////
struct employee
{
    etype dol;
    int number;
    float zp;
 
};
int main()
{
    setlocale(LC_ALL, "Russian");
    employee d1,d2,d3;
    char temp;
    cout << "Введите номер сотрудника: "; 
    cin >> d1.number;
    cout << "Введите доджность (l-laborer,s-secretary,m-manager): ";
    cin >> temp;
    switch(temp)
    {
    case 'l': d1.dol = laborarer;break;
    case 's': d1.dol = secretary;break;
    case 'm': d1.dol = manager; break;
    }
    cout << "Введите ЗП: ";
    cin >> d1.zp;
    cout << endl << "Сотрудник номер " << d1.number << " должность ";
    switch(d1.dol)
    {
    case 0: cout << "laborarer "; break;
    case 1: cout << "secret "; break;
    case 2: cout << "manager "; break;
    }
    cout << " с ЗП " << d1.zp << endl;
    return 0;
}
:o)
Да Лафоре=)
Спс только там еще 1 условие есть.. Нужно добавить struct Date (месяц,день,год) - принятия на работу и искать еще по ней. Вот как раз это я и не могу реализовать.
ne6u4u
 Аватар для ne6u4u
12 / 12 / 0
Регистрация: 14.11.2010
Сообщений: 29
01.12.2010, 17:08     Структуры - разбор упражнения #4
Аналогично списку emun (т.е до описания моего класса) создать еще одну структуру date, и добавить в ту структуру что я написал переменную структуры дата, попробуй так

Добавлено через 1 час 16 минут
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
#include <iostream>
using namespace std;
enum etype {laborarer, secretary, manager};
struct date
{
    int day;
    int month;
    int year;
};
///////////////////////////////////////////////////////
struct employee
{
    etype dol;
    int number;
    float zp;
    date dd;
};
int main()
{
    setlocale(LC_ALL, "Russian");
    employee d1,d2,d3;
    char temp;
    cout << "Введите номер сотрудника: "; 
    cin >> d1.number;
    cout << "Введите доджность (l-laborer,s-secretary,m-manager): ";
    cin >> temp;
 
    switch(temp)
    {
    case 'l': d1.dol = laborarer;break;
    case 's': d1.dol = secretary;break;
    case 'm': d1.dol = manager; break;
    }
    cout << "Введите ЗП: ";
    cin >> d1.zp;
    cout << "Введите день приема: ";
    cin >>d1.dd.day;
    cout << "Введите месяц приема: ";
    cin >>d1.dd.month;
    cout << "Введите год: ";
    cin >>d1.dd.year;
    cout << endl << "Сотрудник номер " << d1.number << " должность ";
    switch(d1.dol)
    {
    case 0: cout << "laborarer "; break;
    case 1: cout << "secret "; break;
    case 2: cout << "manager "; break;
    }
    cout << " с ЗП " << d1.zp;
    cout << " дата: " << d1.dd.day << "/" << d1.dd.month << "/" << d1.dd.year;
    return 0;
}
Daynine
 Аватар для Daynine
8 / 8 / 0
Регистрация: 18.11.2009
Сообщений: 24
01.12.2010, 20:50  [ТС]     Структуры - разбор упражнения #5
А можеш обьяснить плз как ты так организовал через employee d1\d2\d3 - 2 структуры.Или дать ссылочку где можно об этом почитать - не догоняю я что-то=(
ne6u4u
 Аватар для ne6u4u
12 / 12 / 0
Регистрация: 14.11.2010
Сообщений: 29
01.12.2010, 23:12     Структуры - разбор упражнения #6
Ммм... я даже не знаю как объяснить то... просто как ты можешь создать переменные в структуре, также можно и создать переменную собственного типа, т.е. как раз переменную типа структуры...получаются вложенные структуры, вторая содержит три переменные одна из которых является также структурой
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
02.12.2010, 01:18     Структуры - разбор упражнения #7
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
struct  {
    struct {
        int a, b, c;
    } i;
    struct {
        float a, b, c;
    } f;
    struct {
        char a, b, c
    } c;
} s;
 
...
 
    s.i.a = 1;
    s.f.a = 0.5f;
    s.c.a = 'A';
 
    s.i.b = 2;
    s.f.b = 1.5f;
    s.c.b = 'B';
переменная s содержит три переменные i, f и c
переменная s имеет безымянный структурный тип

переменная i содержит три переменные a, b и c
переменная i имеет безымянный структурный тип

переменная f содержит три переменные a, b и c
переменная f имеет безымянный структурный тип

переменная c содержит три переменные a, b и c
переменная c имеет безымянный структурный тип

s.i.a - переменная a структуры i структуры s (подструктуры i структуры s)
s.i.a имеет целочисленный тип
Daynine
 Аватар для Daynine
8 / 8 / 0
Регистрация: 18.11.2009
Сообщений: 24
02.12.2010, 12:09  [ТС]     Структуры - разбор упражнения #8
Если я все правильно понял то получается,что-то такое:
C++
1
2
3
4
5
6
7
8
9
10
11
Struct type_cars
{
 int univers;
 int hatchb;
};
Struct cars
{
 int mesta;
 int benz;
 type_cars tc; //тут я так понял просто переменная для связи с другой структурой?
};
Я извиняюсь если задаю глупые вопросы - но хочется понять все до мелочей,чтобы потом при работе не возникло каких-либо трудностей.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
02.12.2010, 12:18     Структуры - разбор упражнения #9
Может так понятней будет, вот это:
C++
1
2
3
4
5
6
7
8
9
10
11
Struct type_cars
{
 int univers;
 int hatchb;
};
Struct cars
{
 int mesta;
 int benz;
 type_cars tc;
};
Можно сказать (не вдаваясь в подробности) тоже самое, что:
C++
1
2
3
4
5
6
7
Struct cars
{
 int mesta;
 int benz;
 int univers;
 int hatchb;
};
LineStown
 Аватар для LineStown
63 / 63 / 3
Регистрация: 04.08.2010
Сообщений: 399
02.12.2010, 13:09     Структуры - разбор упражнения #10
я вот так решал задачу (сам Лафора читаю)
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
#include<iostream>
using namespace std;
enum etype{laborer,secretary,manager,accountant,executive,researcher};
struct date
{
    int day;
    int month;
    int year;
};
struct employee
{
    int number;
    float money;
    etype types;
    date data;
};
int main()
{
    setlocale(LC_ALL,"Russian");
    employee emp1,emp2,emp3;
    char s;
    cout << "1-й сотрудник:\nНомер: ";
    cin >> emp1.number;
    cout << "Величина пособия: ";
    cin >> emp1.money;
    cout << "Должность(1-ю букву)(laborer, secretary, manager, accountant, executive, researcher): ";
    cin >> s;
    switch(s)
    {
    case 'l':{emp1.types=laborer;break;}
    case 's':{emp1.types=secretary;break;}
    case 'm':{emp1.types=manager;break;}
    case 'a':{emp1.types=accountant;break;}
    case 'e':{emp1.types=executive;break;}
    case 'r':{emp1.types=researcher;break;}
    default:cout << "Не корректный ввод";
    }
    cout << "Дата поступления на работу(dd/mm/yyyy): ";
    cin >> emp1.data.day >> s >> emp1.data.month >> s >> emp1.data.year;
 
    cout << "2-й сотрудник:\nНомер: ";
    cin >> emp2.number;
    cout << "Величина пособия: ";
    cin >> emp2.money;
    cout << "Должность(1-ю букву)(laborer, secretary, manager, accountant, executive, researcher): ";
    cin >> s;
    switch(s)
    {
    case 'l':{emp2.types=laborer;break;}
    case 's':{emp2.types=secretary;break;}
    case 'm':{emp2.types=manager;break;}
    case 'a':{emp2.types=accountant;break;}
    case 'e':{emp2.types=executive;break;}
    case 'r':{emp2.types=researcher;break;}
    default:cout << "Не корректный ввод";
    }
    cout << "Дата поступления на работу(dd/mm/yyyy): ";
    cin >> emp2.data.day >> s >> emp2.data.month >> s >> emp2.data.year;
    
    cout << "3-й сотрудник:\nНомер: ";
    cin >> emp3.number;
    cout << "Величина пособия: ";
    cin >> emp3.money;
    cout << "Должность(1-ю букву)(laborer, secretary, manager, accountant, executive, researcher): ";
    cin >> s;
    switch(s)
    {
    case 'l':{emp3.types=laborer;break;}
    case 's':{emp3.types=secretary;break;}
    case 'm':{emp3.types=manager;break;}
    case 'a':{emp3.types=accountant;break;}
    case 'e':{emp3.types=executive;break;}
    case 'r':{emp3.types=researcher;break;}
    default:cout << "Не корректный ввод";
    }
    cout << "Дата поступления на работу(dd/mm/yyyy): ";
    cin >> emp3.data.day >> s >> emp3.data.month >> s >> emp3.data.year;
 
    cout << "\nБаза введеных сотрудников:\n";
    cout << "Номер: " << emp1.number << endl;
    cout << "Пособие: " << emp1.money << endl;
    cout << "Должность: ";
    switch(emp1.types)
    {
    case laborer:{cout << "laborer\n";break;}
    case secretary:{cout << "secretary\n";break;}
    case manager:{cout << "manager\n";break;}
    case accountant:{cout << "accountant\n";break;}
    case executive:{cout << "executive\n";break;}
    case researcher:{cout << "researcher\n";break;}
    }
    cout << "Дата приема на работу: " << emp1.data.day << '.' << emp1.data.month << '.' << emp1.data.year << endl << endl;
 
    cout << "Номер: " << emp2.number << endl;
    cout << "Пособие: " << emp2.money << endl;
    cout << "Должность: ";
    switch(emp2.types)
    {
    case laborer:{cout << "laborer\n";break;}
    case secretary:{cout << "secretary\n";break;}
    case manager:{cout << "manager\n";break;}
    case accountant:{cout << "accountant\n";break;}
    case executive:{cout << "executive\n";break;}
    case researcher:{cout << "researcher\n";break;}
    }
    cout << "Дата приема на работу: " << emp2.data.day << '.' << emp2.data.month << '.' << emp2.data.year << endl << endl;
 
    cout << "Номер: " << emp3.number << endl;
    cout << "Пособие: " << emp3.money << endl;
    cout << "Должность: ";
    switch(emp3.types)
    {
    case laborer:{cout << "laborer\n";break;}
    case secretary:{cout << "secretary\n";break;}
    case manager:{cout << "manager\n";break;}
    case accountant:{cout << "accountant\n";break;}
    case executive:{cout << "executive\n";break;}
    case researcher:{cout << "researcher\n";break;}
    }
    cout << "Дата приема на работу: " << emp3.data.day << '.' << emp3.data.month << '.' << emp3.data.year << endl;
    return 0;
}
Не судите строго) решал давно)
Daynine
 Аватар для Daynine
8 / 8 / 0
Регистрация: 18.11.2009
Сообщений: 24
02.12.2010, 13:25  [ТС]     Структуры - разбор упражнения #11
Цитата Сообщение от Kastaneda Посмотреть сообщение
Пост не понявшего меня человека..

Ты не понял - это конечно легче,но я хочу понять - как реализовывать 2 структуры.

Добавлено через 2 минуты
Цитата Сообщение от LineStown Посмотреть сообщение
я вот так решал задачу (сам Лафора читаю)
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
#include<iostream>
using namespace std;
enum etype{laborer,secretary,manager,accountant,executive,researcher};
struct date
{
    int day;
    int month;
    int year;
};
struct employee
{
    int number;
    float money;
    etype types;
    date data;
};
int main()
{
    setlocale(LC_ALL,"Russian");
    employee emp1,emp2,emp3;
    char s;
    cout << "1-й сотрудник:\nНомер: ";
    cin >> emp1.number;
    cout << "Величина пособия: ";
    cin >> emp1.money;
    cout << "Должность(1-ю букву)(laborer, secretary, manager, accountant, executive, researcher): ";
    cin >> s;
    switch(s)
    {
    case 'l':{emp1.types=laborer;break;}
    case 's':{emp1.types=secretary;break;}
    case 'm':{emp1.types=manager;break;}
    case 'a':{emp1.types=accountant;break;}
    case 'e':{emp1.types=executive;break;}
    case 'r':{emp1.types=researcher;break;}
    default:cout << "Не корректный ввод";
    }
    cout << "Дата поступления на работу(dd/mm/yyyy): ";
    cin >> emp1.data.day >> s >> emp1.data.month >> s >> emp1.data.year;
 
    cout << "2-й сотрудник:\nНомер: ";
    cin >> emp2.number;
    cout << "Величина пособия: ";
    cin >> emp2.money;
    cout << "Должность(1-ю букву)(laborer, secretary, manager, accountant, executive, researcher): ";
    cin >> s;
    switch(s)
    {
    case 'l':{emp2.types=laborer;break;}
    case 's':{emp2.types=secretary;break;}
    case 'm':{emp2.types=manager;break;}
    case 'a':{emp2.types=accountant;break;}
    case 'e':{emp2.types=executive;break;}
    case 'r':{emp2.types=researcher;break;}
    default:cout << "Не корректный ввод";
    }
    cout << "Дата поступления на работу(dd/mm/yyyy): ";
    cin >> emp2.data.day >> s >> emp2.data.month >> s >> emp2.data.year;
    
    cout << "3-й сотрудник:\nНомер: ";
    cin >> emp3.number;
    cout << "Величина пособия: ";
    cin >> emp3.money;
    cout << "Должность(1-ю букву)(laborer, secretary, manager, accountant, executive, researcher): ";
    cin >> s;
    switch(s)
    {
    case 'l':{emp3.types=laborer;break;}
    case 's':{emp3.types=secretary;break;}
    case 'm':{emp3.types=manager;break;}
    case 'a':{emp3.types=accountant;break;}
    case 'e':{emp3.types=executive;break;}
    case 'r':{emp3.types=researcher;break;}
    default:cout << "Не корректный ввод";
    }
    cout << "Дата поступления на работу(dd/mm/yyyy): ";
    cin >> emp3.data.day >> s >> emp3.data.month >> s >> emp3.data.year;
 
    cout << "\nБаза введеных сотрудников:\n";
    cout << "Номер: " << emp1.number << endl;
    cout << "Пособие: " << emp1.money << endl;
    cout << "Должность: ";
    switch(emp1.types)
    {
    case laborer:{cout << "laborer\n";break;}
    case secretary:{cout << "secretary\n";break;}
    case manager:{cout << "manager\n";break;}
    case accountant:{cout << "accountant\n";break;}
    case executive:{cout << "executive\n";break;}
    case researcher:{cout << "researcher\n";break;}
    }
    cout << "Дата приема на работу: " << emp1.data.day << '.' << emp1.data.month << '.' << emp1.data.year << endl << endl;
 
    cout << "Номер: " << emp2.number << endl;
    cout << "Пособие: " << emp2.money << endl;
    cout << "Должность: ";
    switch(emp2.types)
    {
    case laborer:{cout << "laborer\n";break;}
    case secretary:{cout << "secretary\n";break;}
    case manager:{cout << "manager\n";break;}
    case accountant:{cout << "accountant\n";break;}
    case executive:{cout << "executive\n";break;}
    case researcher:{cout << "researcher\n";break;}
    }
    cout << "Дата приема на работу: " << emp2.data.day << '.' << emp2.data.month << '.' << emp2.data.year << endl << endl;
 
    cout << "Номер: " << emp3.number << endl;
    cout << "Пособие: " << emp3.money << endl;
    cout << "Должность: ";
    switch(emp3.types)
    {
    case laborer:{cout << "laborer\n";break;}
    case secretary:{cout << "secretary\n";break;}
    case manager:{cout << "manager\n";break;}
    case accountant:{cout << "accountant\n";break;}
    case executive:{cout << "executive\n";break;}
    case researcher:{cout << "researcher\n";break;}
    }
    cout << "Дата приема на работу: " << emp3.data.day << '.' << emp3.data.month << '.' << emp3.data.year << endl;
    return 0;
}
Не судите строго) решал давно)
Все спасибо всем - мое предположение по поводу "ссылки" на структуру подтвердился. Кажется я допер как это реализовывается =)
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
02.12.2010, 23:23     Структуры - разбор упражнения #12
Цитата Сообщение от Daynine Посмотреть сообщение
Если я все правильно понял то получается,что-то такое:
C++
1
2
3
4
5
6
7
8
9
10
11
Struct type_cars
{
 int univers;
 int hatchb;
};
Struct cars
{
 int mesta;
 int benz;
 type_cars tc; //тут я так понял просто переменная для связи с другой структурой?
};
struct с большой буквы - это неправильно
struct - это ключевое слово, также как int

структура - это такой набор переменных, связанных одним именем, переменные не перекрывают друг друга (в объединении union все переменные пользуются общим участком памяти)

C
1
2
3
4
5
6
7
struct point {
    int x, y;
};
 
struct rect {
    struct point left_up, right_down;
};
C
1
2
3
4
5
6
7
    struct rect r;
 
    r.left_up.x = 0;
    r.left_up.y = 5;
 
    r.right_down.x = 3;
    r.right_down.y = -1;
сама структура сама по себе также является переменной, поэтому структуры могут содержать другие структуры, которые не перекрываются, они явлются частью той структуры, в которой находятся
процесс вложения не бесконечный
Bonaqus
2 / 2 / 0
Регистрация: 10.01.2013
Сообщений: 15
25.01.2013, 14:14     Структуры - разбор упражнения #13
Оттачиваю стиль программирования.

Какой код написан в хорошем стиле и прост для понимания?
Этот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    struct employee
    {
        int number;
        float money;
        
        enum etype { laborer, secretary, manager, accountant, executive, researcher };
        etype type;
        
        struct date
        {
            int day;
            int month;
            int year;
        };
        date data;
    };
или этот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
enum etype{laborer,secretary,manager,accountant,executive,researcher};
struct date
{
    int day;
    int month;
    int year;
};
struct employee
{
    int number;
    float money;
    etype type;
    date data;
};
И (в первом коде) структура date и перечисление enum не будут доступны для других (еще каких либо) структур, если мы укажем в них переменные типа date и enum? Я правильно понимаю?
Во втором в любом случае будут.

Добавлено через 11 минут
Блин, в первом случае компилятор при присвоении
C++
1
2
3
switch(letter)
    {
    case 'l': emp1.type=laborer;break; // на laborer ругается,
а если указать как в втором случае, то все нормально. Почему так?

Добавлено через 1 минуту
компилятор VS 2010
iifat
2179 / 1332 / 96
Регистрация: 05.06.2011
Сообщений: 3,690
25.01.2013, 15:34     Структуры - разбор упражнения #14
Цитата Сообщение от Daynine Посмотреть сообщение
структуры, а не классы
Так, на всякий случай: в ++ структуры и классы -- одно и то же. Отличаются только тем, что у class родители и члены (для которых не указано другое) private, а у struct -- public.
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
25.01.2013, 20:28     Структуры - разбор упражнения #15
Сам же написал:
Цитата Сообщение от Bonaqus Посмотреть сообщение
И (в первом коде) структура date и перечисление enum не будут доступны для других
Поэтому
C++
1
emp1.type = employee::laborer;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2014, 00:15     Структуры - разбор упражнения
Еще ссылки по теме:

Упражнения цикла for C++
Упражнения на массивы C++
Упражнения по с++ C++

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

Или воспользуйтесь поиском по форуму:
Lars
1 / 1 / 0
Регистрация: 16.09.2014
Сообщений: 34
23.12.2014, 00:15     Структуры - разбор упражнения #16
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
#include<iostream>
using  namespace std;
enum etype {laborer,secretary,manager,accoutant,executive,researcher};
struct date
{
    int den;
    int mes;
    int god;
};
struct employe
{
    etype lol;
    int nomer;
    float zarpl;
 
};
int main()
{
    etype lol;
    date    lc1,lc2,lc3;                            //1,2,3 сотрудники
    employe lk1,lk2,lk3,zp1,zp2,zp3;               // номера сотрудников  и зарплаты
 
    char ch='n';
    setlocale(LC_ALL,"rus");
    cout<<"Выберите должность:"; 
    
    cin>>ch;
    switch(ch)
    {
    case 'l':
        lol=laborer;
        cout<<"laborer"<<endl;
        
        break;
    case 's':
        lol=secretary;
        cout<<"secretary"<<endl;
        
        break;
    case 'm':
        lol=manager;
        cout<<"manager"<<endl;
        
        break;
    }
       cout<<"Введите дату принятия на работу 1 сотрудника:"<<endl;
       cout<<"День:";   cin>>lc1.den;//день
       cout<<"Месяц:";  cin>>lc1.mes;//месяц    
       cout<<"Год:";    cin>>lc1.god;//год
       cout<<"Введите дату принятия на работу 2 сотрудника:"<<endl;
       cout<<"День:";   cin>>lc2.den;//день
       cout<<"Месяц:";  cin>>lc2.mes;//месяц    
       cout<<"Год:";    cin>>lc2.god;//год
       cout<<"Введите дату принятия на работу 3 сотрудника:"<<endl;
       cout<<"День:";   cin>>lc3.den;//день
       cout<<"Месяц:";  cin>>lc3.mes;//месяц    
       cout<<"Год:";    cin>>lc3.god;//год
 
 
 
        cout<<"Введите номер соотрудника :"<<endl;
        cout<<"1 соотрудник:";      cin>>lk1.nomer;//номер
        cout<<"2 соотрудник:";      cin>>lk2.nomer;//номер
        cout<<"3 соотрудник:";      cin>>lk3.nomer;//номер
        cout<<"Пособие 1 сотрудника:";   cin>>zp1.zarpl;//зарплата
        cout<<"Пособие 2 сотрудника:";   cin>>zp2.zarpl;//зарплата
        cout<<"Пособие 3 сотрудника:";   cin>>zp3.zarpl;//зарплата
        cout<<"Сотрудник 1 :"<<lc1.den<<"/"<<lc1.mes<<"/"<<lc1.god<<"     Номер:"<<lk1.nomer<<" Зарплата:"<<zp1.zarpl<<endl;   
        cout<<"Сотрудник 2 :"<<lc2.den<<"/"<<lc2.mes<<"/"<<lc2.god<<"     Номер:"<<lk2.nomer<<" Зарплата:"<<zp2.zarpl<<endl;  
        cout<<"Сотрудник 3 :"<<lc1.den<<"/"<<lc1.mes<<"/"<<lc1.god<<"     Номер:"<<lk3.nomer<<" Зарплата:"<<zp3.zarpl<<endl;  
 
}
Проверьте пожалуйста, правильно ли я справился с заданием ?
Спасибо!
Yandex
Объявления
23.12.2014, 00:15     Структуры - разбор упражнения
Ответ Создать тему
Опции темы

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