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

Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Конвертер текстового файла http://www.cyberforum.ru/cpp-beginners/thread439174.html
Добрый день!!! Простите за наглость... Помогите пожалуйста написать программу-конвертер текстовых файлов из dos в windows и обратно. С командной строки должно вводится направление /d или /w. Я очень мало в этом понимаю. Заранее спасибо!!!
C++ Проблема с libmms - ошибка при компиляции. Здравствуйте. Уже который день не могу разобраться с упомянутой в заголовке библиотекой, а именно: пишу примерно такой тестовый код #include <iostream> #include <libmms/mms.h> int main() { mms_t *stream; char mms_link="mms://audio.rfn.ru/radiorus/audio/710/90.asf"; stream=mms_connect(0, 0, mms_link, 128); http://www.cyberforum.ru/cpp-beginners/thread439169.html
C++ Привет. Как можна найти с даного примера умножение элементов массива с четными номерами?
#include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <iostream> using namespace std; int main(int argc, _TCHAR* argv)
C++ Начало DEV С++
Здравствуйте, подскажите где ошибка? Задание Даны действительные числа х, у . Если х, у отрицательные то каждое значение заменить его модулем; если отрицательное только одно из них, то оба значения увеличить на 0.5; если оба значения не отрицательные и ни одно из них не принадлежат отрезку , то оба значения уменьшить в 10 раз; в остальных случаях х, у оставить без изменения. Решение ...
C++ Запись текста в файл http://www.cyberforum.ru/cpp-beginners/thread439138.html
Нужно составить прогрумма которая создает файл и записывает в него текст. Программа не записывает в файл текст после пробела, помогите пожалуйста. char name; char text; cout<<"vvedite put' i im9 faila:\n"; cin>>name; ofstream out(name); cout<<"vvedite text:\n"; cin>>text; out<<text; out.close();
C++ allocator std::map Подскажите вопрос, есть тестовое задание: Написать allocator для std::map, располагающий элементы контейнера последовательно в памяти. Подскажите где про это почитать и разъясните по-возможности, что это вообще такое (std::map я вкурсе что это контейнер и как с ним работать) в ступор вводит allocator подробнее

Показать сообщение отдельно
Kins
 Аватар для Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
25.04.2013, 13:44     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"
Глава 9 Упражнение №4
Кликните здесь для просмотра всего текста
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
using namespace std;
 
///////////////////////////////////////////////////////////////
class publication
{
private:
    string name;
    float price;
public:
    publication():name("N/A"), price(0.0)
    {}
    publication(string n, float p):name(n), price(p)
    {}
    void getdata()
    {
        cout <<"\nВведите название книги: "; cin >>name;
        cout <<"Введите цену книги: "; cin >>price;
    }
    void putdata()
    {
        cout <<"\nНазвание книги: " <<name;
        cout <<"\nЦена книги: " <<price;
    }
};
////////////////////////////////////////////////////////////////
class sales
{
private:
    static const int MAX=3;
    float summ[MAX];
public:
    sales():summ()
    {}
    sales(float su):summ()
    {}
    void getdata()
    {
        for(int j=0; j<MAX; j++){
            cout <<"Введите суммарную прибыль за " <<j+1 <<"-й месяц: ";
            cin >>summ[j];
        }
    }
    void putdata()
    {
        for(int j=0; j<MAX; j++){
            cout <<"\nСуммарная прибыль за " <<j+1 <<"-й месяц: " <<summ[j] <<" рубл.";
        }
    }
};
////////////////////////////////////////////////////////////////
class book:private publication, private sales
{
private:
    int number_pages;
public:
    book():publication(), sales(), number_pages(0)
    {}
    book(string n, float p, int np, float su):publication(n, p), sales(su), number_pages(np)
    {}
    void getdata()
    {
        publication::getdata();
        cout <<"Введите количество страниц: "; cin >>number_pages;
        sales::getdata();
    }
    void putdata()
    {
        publication::putdata();
        cout <<"\nКоличество страниц: " <<number_pages;
        sales::putdata();
    }
};
////////////////////////////////////////////////////////////////
class type:private publication, private sales
{
private:
    float time_rec;
public:
    type():publication(), sales(), time_rec(0.0)
    {}
    type(string n, float p, float tr, float su):publication(n, p), sales(su), time_rec(tr)
    {}
    void getdata()
    {
        publication::getdata();
        cout <<"Введите время записи аудиокниги в минутах: "; cin >>time_rec;
        sales::getdata();
    }
    void putdata()
    {
        publication::putdata();
        cout <<"\nВремя записи аудиокниги в минутах: " <<time_rec;
        sales::putdata();
    }
};
////////////////////////////////////////////////////////////////
class disk:private publication
{
private:
    enum disc_type{cd, dvd};
public:
    disc_type d1;
    char dd;
    void getdata()
    {
        publication::getdata();
        cout <<"Введите тип диска, на котором находится книга(c/d):";
        cin >>dd;
    }
    void putdata()
    {
        publication::putdata();
        if(dd=='c'){d1=cd;}
        if(dd=='d'){d1=dvd;}
        switch (d1){
        case 0: cout <<"\nТип диска CD"; break;
        case 1: cout <<"\nТип диска DVD"; break;
        }
    }
};
////////////////////////////////////////////////////////////////        
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"");
    book b;
    type t;
    disk d;
    cout <<"\nВведите данные на книгу";
    b.getdata();
    cout <<"\nВведите данные на аудиокнигу";
    t.getdata();
    cout <<"\nВведите данные на диск";
    d.getdata();
    cout <<"\nДанные на книгу";
    b.putdata();
    cout <<"\nДанные на аудиокнигу";
    t.putdata();
    cout <<"\nДанные на диск";
    d.putdata();
    cout <<endl;
    system("pause");
    return 0;
}


Добавлено через 59 секунд
Глава 9 Упражнение №5
Кликните здесь для просмотра всего текста
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
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
156
157
158
159
160
161
162
163
using namespace std;
const int LEN=80;
////////////////////////////////////////////////////////////////////
class employee
{
private:
    char name[LEN];//имя сотрудника
    unsigned long number;//номер сотрудника
public:
    void getdata()
    {
        cout <<"\nВведите фамилию: "; cin >>name;
        cout <<"Введите номер: "; cin >>number;
    }
    void putdata()
    {
        cout <<"\nФамилия: " <<name;
        cout <<"\nНомер: " <<number;
    }
};
///////////////////////////////////////////////////////////////////
class compensation
{
private:
    double compensations;
    enum period{hrs, week, mnts};
public:
    period per;
    char ch;
    void getdata()
    {
        cout <<"Введите вознаграждение за работу: "; cin >>compensations;
        cout <<"Введите тип оплаты (h/w/m)"; cin >>ch;
    }
    void putdata()
    {
        cout <<"\nВознаграждение за работу составляет: " <<compensations <<" руб.";
        cout <<"\nТип оплаты: ";
        if(ch=='h'){per=hrs;}
        else if(ch=='w'){per=week;}
        else if(ch=='m'){per=mnts;}
        switch(per){
        case 0: cout <<"почасовая"; break;
        case 1: cout <<"еженедельная"; break;
        case 2: cout <<"ежемесячная"; break;
        }
    }
};
///////////////////////////////////////////////////////////////////
class manager:public employee//менеджер
{
private:
    char title[LEN];//должность, например вице-президент
    double dues;//сумма взносов в гольф-клуб
public:
    void getdata()
    {
        employee::getdata();
        cout <<"Введите должность: "; cin >>title;
        cout <<"Введите сумму взносов в гольф-клуб: "; cin >>dues;
    }
    void putdata()
    {
        employee::putdata();
        cout <<"\nДолжность: " <<title;
        cout <<"\nСумма взносов в гольф-клуб: " <<dues;
    }
};
///////////////////////////////////////////////////////////////////
class scientist:public employee
{
private:
    int pubs;//количество публикаций
public:
    void getdata()
    {
        employee::getdata();
        cout <<"Введите количество публикаций: "; cin >>pubs;
    }
    void putdata()
    {
        employee::putdata();
        cout <<"\nКоличество публикаций: " <<pubs;
    }
};
//////////////////////////////////////////////////////////////////
class laborer:public employee//класс рабочий
{
};
//////////////////////////////////////////////////////////////////
class manager2: private manager, private compensation
{
public:
    void getdata()
    {
        manager::getdata();
        compensation::getdata();
    }
    void putdata()
    {
        manager::putdata();
        compensation::putdata();
    }
};
/////////////////////////////////////////////////////////////////
class scientist2: private scientist, private compensation
{
public:
    void getdata()
    {
        scientist::getdata();
        compensation::getdata();
    }
    void putdata()
    {
        scientist::putdata();
        compensation::putdata();
    }
};
//////////////////////////////////////////////////////////////////
class laborer2: private laborer, private compensation
{
public:
    void getdata()
    {
        laborer::getdata();
        compensation::getdata();
    }
    void putdata()
    {
        laborer::putdata();
        compensation::putdata();
    }
};
//////////////////////////////////////////////////////////////////
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"");
    manager2 m1, m2;
    scientist2 s1;
    laborer2 l1;
    //введем информацию о нескольких сотрудниках
    cout <<endl;
    cout <<"Ввод информации о первом менеджере";
    m1.getdata();
    cout <<"\nВвод информации о втором менеджере";
    m2.getdata();
    cout <<"\nВвод информации о первом ученом";
    s1.getdata();
    cout <<"\nВвод информации о первом рабочем";
    l1.getdata();
    //выведем полученую информацию на экран
    cout <<"\nИнформация о первом менеджере";
    m1.putdata();
    cout <<"\nИнформация о втором менеджере";
    m2.putdata();
    cout <<"\nИнформация о первом ученом";
    s1.putdata();
    cout <<"\nИнформация о первом рабочем";
    l1.putdata();
    system("pause");
    return 0;
}


Добавлено через 46 секунд
Глава 9 Упражнение №6
Кликните здесь для просмотра всего текста
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
using namespace std;
 
const int LIMIT=100;
//////////////////////////////////////////////////////////////////
class safearray
{
protected:
    int arr[LIMIT];
public:
    //функция возвращает ссылку
    int& operator[](int n)
    {
        if(n<0||n>=LIMIT){
            cout <<"Ошибочный индекс!";
            exit(1);
        }
        return arr[n];
    }
};
/////////////////////////////////////////////////////////////////
class safehilo: private safearray
{
private:
    int min;
    int max;
public:
    safehilo():min(0), max(0)
    {}
    safehilo(int mn, int mx):min(mn), max(mx)
    {}
    void getin()
    {
        cout <<"Введите min массива: "; cin >>min;
        cout <<"Введите max массива: "; cin >>max;
    }
    void zap_mass()
    {
        int puk=max-min;
        if(puk>LIMIT)exit(1);
        for(int j=0; j<=puk; j++){
            arr[j]=j*10;
        }
    }
    void show_arr()
    {
        int puk=max-min;
        for(int j=0; j<=puk; j++){
            int temp=arr[j];
            cout <<"Элемент " <<j+min <<" равен " <<temp <<endl;
        }
    }
};
//////////////////////////////////////////////////////////////
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"");
    safehilo sh1;
    sh1.getin();
    sh1.zap_mass();
    sh1.show_arr();
    system("pause");
    return 0;
}


Добавлено через 1 минуту
Глава 9 Упражнение №7
Кликните здесь для просмотра всего текста
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
using namespace std;
 
//////////////////////////////////////////////////////////////////
class Counter//базовый класс
{
protected:
    unsigned int count;//счетчик
public:
    Counter():count(0)
    {}
    Counter(int c):count(c)
    {}
    unsigned int get_count()const
    {return count;}//возвращает з начение счетчика
    Counter operator++()//увеличивает значение счетчика
    {return Counter(++count);}
 
};
////////////////////////////////////////////////////////////////
class CountDn:public Counter//производный класс
{
public:
    CountDn():Counter()//конструктор без параметров
    {}
    CountDn(int c):Counter(c)//конструктор с одним параметром
    {}
    CountDn operator--()//уменьшает значение счетчика
    {return CountDn(--count);}
};
////////////////////////////////////////////////////////////////
class CountPosx:public CountDn
{
public:
    CountPosx():CountDn()
    {}
    CountPosx(int c):CountDn(c)
    {}
    CountDn::operator++;
    CountDn::operator--;
    CountPosx operator++(int)
    {return CountPosx(count++);}
    CountPosx operator--(int)
    {return CountPosx(count--);}
};
////////////////////////////////////////////////////////////////
int _tmain(int argc, _TCHAR* argv[])
{
    CountPosx c1;//объекс с1
    CountPosx c2(100);
    cout <<"\n c1=" <<c1.get_count();//вывод на печать
    cout <<"\n c2=" <<c2.get_count();//вывод на печать
    ++c1; ++c1; c1++;//увеличиваем три раза с1
    cout <<"\n c1=" <<c1.get_count();//выводим на печать
    --c2; --c2;//уменьшаем два раза с2
    cout <<"\n c2=" <<c2.get_count();//выводим на печать
    CountDn c3=c2--;//создаем переменную с3 на основе с2
    cout <<"\n c3=" <<c3.get_count();//выводим на печать
    cout <<endl;
    system("pause");
    return 0;
}


Добавлено через 5 минут
Глава 9 Упражнение №8
Кликните здесь для просмотра всего текста
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
using namespace std;
 
////////////////////////////////////////////////////////////////
class String
{
protected:
    static const int SZ=18;//максимальный размер строки
    char str[SZ];//сама строка
public:
    String()//конструктор без параметров
    {str[0]='\x0';}
    String(char s[])//конструктор с одним параметром
    {strcpy_s(str, s);}
    void display()//показ строки
    {
        cout <<str <<endl;
    }
    //перевод строки к обычному типу
    operator char*()
    {return str;}
};
///////////////////////////////////////////////////////////////
class Pstring:public String
{
public:
    Pstring():String()
    {}
    Pstring(char s[])
    {
        if(strlen(s)<SZ){
            strcpy_s(str, s);}
        if(strlen(s)>=SZ){
            for(int j=0; j<SZ; j++){
                if(j==(SZ-1)){
                    str[j]='\0';
                    continue;
                }
                str[j]=s[j];                
            }
        }
    }
    void display()
    {String::display();}
};
///////////////////////////////////////////////////////////////
class Pstring2: public Pstring
{
private:
    int number;//номер символа
    char simbol;//символ строки
public:
    Pstring2():Pstring()
    {}
    Pstring2(char s[]):Pstring(s)
    {}
    Pstring2& left(Pstring p2, int number)//в строку s2 помещаются n самых левых символов строки s1
    {
        for(int j=0; j<=number; j++){
            str[j]=p2[j];
            if(j==number){
                str[j]='\0';
            }
        }
        return Pstring2(str);
    }
    Pstring2& mid(Pstring p2, char sl, int n)//в строку s2 помещаются n символов строки s1 начиная с символа s
    {
        for(int j=0; j<strlen(p2); j++){
            if(p2[j]!=sl){
                continue;
            }else{
                for(int i=0; i<=n; i++){
                    str[i]=p2[j+i];
                    if(i==n){
                        str[i]='\0';
                        break;
                    }
                }
            }
        }
        return Pstring2(str);
    }
    Pstring2& right(Pstring p2, int n)//в строку s2 помещаются n самых правых символов строки s1
    {
        int t=strlen(p2)-n;
        for(int j=0; j<=strlen(p2); j++){
            str[j]=p2[j+t];
            if(j==strlen(p2)){
                str[j]='\0';
            }
        }
        return Pstring2(str);
    }
};
///////////////////////////////////////////////////////////////
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"");
    Pstring s, s1;
    s="Шла саша по шоссе";  
    s.display();
    s1="Асталависта бэйби нау";
    s1.display();
    Pstring2 s2, s3, s4;
    s3.left(s1, 5);//пять символов слева
    s3.display();
    s2=s3.mid(s1, 'в', 7);//семь символов начиная с символа 'в'
    s2.display();
    s4.right(s1, 9);//девять крайних правых символов
    s4.display();
    cout <<endl;
    system("pause");
    return 0;
}


Добавлено через 1 минуту
Глава 9 Упражнение №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
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
using namespace std;
 
///////////////////////////////////////////////////////////////
class publication
{
private:
    string name;
    float price;
public:
    publication():name("N/A"), price(0.0)
    {}
    publication(string n, float p):name(n), price(p)
    {}
    void getdata()
    {
        cout <<"\nВведите название книги: "; cin >>name;
        cout <<"Введите цену книги: "; cin >>price;
    }
    void putdata()const
    {
        cout <<"\nНазвание книги: " <<name;
        cout <<"\nЦена книги: " <<price;
    }
};
////////////////////////////////////////////////////////////////
class publication2: private publication
{
private:
    int month, day, year;
public:
    char ch;
    publication2(){month=0, day=0, year=0;}
    publication2(int mn, int dy, int yr, string n, float p):month(mn), day(dy), year(yr), publication(n, p)
    {}
    void getdata()
    {
        publication::getdata();
        cout <<"Введите дату издания книги (мм/дд/гггг): ";
        cin >>month >>ch >>day >>ch >>year;
    }
    void putdata()const
    {
        publication::putdata();
        cout <<"\nДата издания книги: " <<month <<ch <<day <<ch <<year;
    }
 
};
///////////////////////////////////////////////////////////////
class book:private publication2
{
private:
    int number_pages;
public:
    book():publication2(), number_pages(0)
    {}
    book(int np, int mn, int dy, int yr, string n, float p):number_pages(np), publication2(mn, dy, yr, n, p)
    {}
    void getdata()
    {
        publication2::getdata();
        cout <<"Введите количество страниц: "; cin >>number_pages;
    }
    void putdata()const
    {
        publication2::putdata();
        cout <<"\nКоличество страниц: " <<number_pages;
    }
};
////////////////////////////////////////////////////////////////
class type:private publication2
{
private:
    float time_rec;
public:
    type():publication2(), time_rec(0.0)
    {}
    type(float tr, int mn, int dy, int yr, string n, float p):time_rec(tr), publication2(mn, dy, yr, n, p) 
    {}
    void getdata()
    {
        publication2::getdata();
        cout <<"Введите время записи аудиокниги в минутах: "; cin >>time_rec;
    }
    void putdata()const
    {
        publication2::putdata();
        cout <<"\nВремя записи аудиокниги в минутах: " <<time_rec;
    }
};
////////////////////////////////////////////////////////////////
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"");
    book b;
    type t;
    cout <<"\nВведите данные на книгу";
    b.getdata();
    cout <<"\nВведите данные на аудиокнигу";
    t.getdata();
    cout <<"\nДанные на книгу";
    b.putdata();
    cout <<"\nДанные на аудиокнигу";
    t.putdata();
    cout <<endl;
    system("pause");
    return 0;
}


Добавлено через 53 секунды
Глава 9 Упражнение №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
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
using namespace std;
const int LEN=80;
////////////////////////////////////////////////////////////////////
class student//сведения об образовании
{
private:
    char scool[LEN];//название учебного заведения
    char degree[LEN];//уровень образования
public:
    void getedu()
    {
        cout <<"Введите название учебного заведения: "; cin >>scool;
        cout <<"Введите степень высшего образования: "; cin >>degree;
    }
    void putedu()
    {
        cout <<"\nУчебное заведение: " <<scool;
        cout <<"\nУченая степень: " <<degree;
    }
};
////////////////////////////////////////////////////////////////////
class employee
{
private:
    char name[LEN];//имя сотрудника
    unsigned long number;//номер сотрудника
public:
    void getdata()
    {
        cout <<"\nВведите фамилию: "; cin >>name;
        cout <<"Введите номер: "; cin >>number;
    }
    void putdata()
    {
        cout <<"\nФамилия: " <<name;
        cout <<"\nНомер: " <<number;
    }
};
///////////////////////////////////////////////////////////////////
class manager:private employee, private student//менеджер
{
private:
    char title[LEN];//должность, например вице-президент
    double dues;//сумма взносов в гольф-клуб
public:
    void getdata()
    {
        employee::getdata();
        cout <<"Введите должность: "; cin >>title;
        cout <<"Введите сумму взносов в гольф-клуб: "; cin >>dues;
        student::getedu();
    }
    void putdata()
    {
        employee::putdata();
        cout <<"\nДолжность: " <<title;
        cout <<"\nСумма взносов в гольф-клуб: " <<dues;
        student::putedu();
    }
};
///////////////////////////////////////////////////////////////////
class scientist:private employee, private student
{
private:
    int pubs;//количество публикаций
public:
    void getdata()
    {
        employee::getdata();
        cout <<"Введите количество публикаций: "; cin >>pubs;
        student::getedu();
    }
    void putdata()
    {
        employee::putdata();
        cout <<"\nКоличество публикаций: " <<pubs;
        student::putedu();
    }
};
//////////////////////////////////////////////////////////////////
class laborer:public employee//класс рабочий
{
};
//////////////////////////////////////////////////////////////////
class foreman:public laborer//бригадир
{
private:
    float quotas;//норма выработки
public:
    void getdata()
    {
        laborer::getdata();
        cout <<"Введите норму выработки: "; cin >>quotas;
    }
    void putdata()
    {
        laborer::putdata();
        cout <<"Норма выработки: " <<quotas;
    }
};
//////////////////////////////////////////////////////////////////
class executive:private manager
{
private:
    double yr_bonus;
    int n_of_shares;
public:
    void getdata()
    {
        manager::getdata();
        cout <<"Введите годовую премию: "; cin >>yr_bonus;
        cout <<"Введите количество акций: "; cin >>n_of_shares; 
    }
    void putdata()
    {
        manager::putdata();
        cout <<"\nГодовая премия: " <<yr_bonus;
        cout <<"\nКоличество акций: " <<n_of_shares;
    }
};
///////////////////////////////////////////////////////////////////
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"");
    manager m1;
    scientist s1;
    laborer l1;
    executive ex1;
    //введем информацию о нескольких сотрудниках
    cout <<endl;
    cout <<"Ввод информации о первом менеджере: ";
    m1.getdata();
    cout <<"Ввод информации о первом ученом: ";
    s1.getdata();
    cout <<"Ввод информации о первом рабочем: ";
    l1.getdata();
    cout <<"Ввод информации о управляющем: ";
    ex1.getdata();
 
    //выведем полученую информацию на экран
    cout <<"Информации о первом менеджере: ";
    m1.putdata();
    cout <<"Информации о первом ученом: ";
    s1.putdata();
    cout <<"Информации о первом рабочем: ";
    l1.putdata();
    cout <<"Информация о первом управляющем: ";
    ex1.putdata();
    cout <<endl;
    system("pause");
    return 0;
}


Добавлено через 1 минуту
Глава 9 Упражнение №11
Кликните здесь для просмотра всего текста
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
using namespace std;
 
//////////////////////////////////////////////////////////////////
class Stack
{
protected:
    static const int MAX=10;//размер стека
    //enum {MAX=10};
    int st[MAX];//данные, хранящиеся в стеке
    int top;//индекс последнего элемента в стеке
public:
    Stack()//конструктор
    {top=-1;}
    void push(int var)//поместить в стек
    {st[++top]=var;}
    int pop()//взять из стека
    {return st[top--];}
};
/////////////////////////////////////////////////////////////////
class Stack2:public Stack
{
public:
    void push(int var)
    {
        if(top>=MAX-1)//если стек полон, то ошибка
        {cout <<"\nОшибка! Стек полон!"; exit(1);}
        Stack::push(var);//вызов функции push класса Stack
    }
    int pop()//извлечение числа из стека
    {
        if(top<0)//если стек пуст, то ошибка
        {cout <<"\nОшибка! Стек пуст!"; exit(1);}
        return Stack::pop();//вызов функции pop класса Stack
    }
};
//////////////////////////////////////////////////////////////////
class pairStack:private Stack2
{
public:
    void push(int var, int var2)
    {
        Stack2::push(var);
        Stack2::push(var2);
    }
    void pop()
    {cout <<Stack2::pop() <<" " <<Stack2::pop() <<endl;}
};
//////////////////////////////////////////////////////////////////
int _tmain(int argc, _TCHAR* argv[])
{
    pairStack ps;
    ps.push(11, 12);
    ps.push(21, 22);
    ps.push(31, 32);
    ps.pop();
    ps.pop();
    ps.pop();
    system("pause");
    return 0;
}
 
Текущее время: 07:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru