Форум программистов, компьютерный форум 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 подробнее

Показать сообщение отдельно
MacInsider
4 / 4 / 0
Регистрация: 09.08.2013
Сообщений: 30
09.08.2013, 10:39     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"
Вот моё решение 11 задания из главы 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
115
116
117
118
119
120
121
122
123
124
125
126
127
#include "stdafx.h"
#include <iostream>
using namespace std;
//////////////////////////////////////////////////////////////////////
class sterling
{
    private:
        long pounds;
        int shilling;
        int pense;
    public:
        // конструктор без параметров
        sterling() : pounds(0), shilling(0), pense(0)
        { }
        // конструктор с одним аргументом
        sterling(double decfunt)
        {
            pounds = (long) decfunt;
            shilling = (int) ((decfunt - pounds) * 20);
            pense = (int) ((((decfunt - pounds) * 20) - shilling) * 12);
        }
        // конструктор с тремя аргументами
        sterling(long f, int s, int p) : pounds(f), shilling(s), pense(p)
        { }
        // методы 
        //--------------------------------------
        // получения значений от пользователя
        void getSterling()
        {
            cout << "Введите фунты: "; cin >> pounds;
            cout << "Введите шиллингы: "; cin >> shilling;
            cout << "Введите пенсы: "; cin >> pense;
        }
        // вывод значений на экран
        void putSterling() const
        {
            cout << pounds << "." << shilling << "." << pense;
        }
        // перегруженные операции
        //--------------------------------------
        // операция сложения
        sterling operator + (sterling st2);
        // операция вычитания
        sterling operator - (sterling st2);
        // операция умножения
        sterling operator * (sterling st2);
        // операция деления на sterling
        sterling operator / (sterling st2);
        // операция деления на double
        sterling operator / (double st2);
        // операция double для преобразования к типу double
        operator double()
        {
            return (pounds * 240 + shilling * 12 + pense) / 240.0;
        }
};
//--------------------------------------------------------------------
sterling sterling :: operator + (sterling st2)
{
    return sterling(double(sterling(pounds, shilling, pense)) + double(st2));
}
//--------------------------------------------------------------------
sterling sterling :: operator - (sterling st2)
{
    return sterling(double(sterling(pounds, shilling, pense)) - double(st2));
}
//--------------------------------------------------------------------
sterling sterling :: operator * (sterling st2)
{
    return sterling(double(sterling(pounds, shilling, pense)) * double(st2));
}
//--------------------------------------------------------------------
sterling sterling :: operator / (sterling st2)
{
    return sterling(double(sterling(pounds, shilling, pense)) / double(st2));
}
//--------------------------------------------------------------------
sterling sterling :: operator / (double st2)
{
    return sterling(double(sterling(pounds, shilling, pense)) / st2);
}
//--------------------------------------------------------------------
void line()
{
    for(int i = 0; i < 22; i++)
        cout << "--";
    cout << endl;
}
//////////////////////////////////////////////////////////////////////
int main() 
{
    setlocale(LC_ALL,"");
    
    sterling st, st1, st2;
 
    cout << "Введите первую сумму: " << endl; st1.getSterling();
    line();
    cout << "Введите вторую сумму: " << endl; st2.getSterling();
 
    double d = 1.234;
 
    cout << endl << "Операции: " << endl;
    line();
 
    st = st1 + st2; cout << "Сумма: ";
    st1.putSterling(); cout << " + "; st2.putSterling(); cout << " = "; st.putSterling(); cout << endl;
    line();
 
    st = st1 - st2; cout << "Вычисление: ";
    st1.putSterling(); cout << " - "; st2.putSterling(); cout << " = "; st.putSterling(); cout << endl;
    line();
 
    st = st1 * st2; cout << "Умножение: ";
    st1.putSterling(); cout << " * "; st2.putSterling(); cout << " = "; st.putSterling(); cout << endl;
    line();
 
    st = st1 / st2; cout << "Деление: ";
    st1.putSterling(); cout << " / "; st2.putSterling(); cout << " = "; st.putSterling(); cout << endl;
    line();
 
    st = st1 / d; cout << "Деление на double: ";
    st1.putSterling(); cout << " / "; cout << d << " = "; st.putSterling(); cout << endl;
    line();
 
    system("pause");
    return 0;
}
позже скину все свои решения до главы 9.

Добавлено через 10 часов 7 минут
8 Глава, задание 12:

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
#include "stdafx.h"
#include <iostream>
using namespace std;
//////////////////////////////////////////////////////////////////////////////////
class sterling
{
    private:
        long pounds;
        int shilling;
        int pense;
    public:
        // констуктор без аргументов
        sterling() : pounds(0), shilling(0), pense(0)
        { }
        // конструктор с одним аргументом
        sterling(double decfunt)
        {
            pounds = (long) decfunt;
            shilling = (int) ((decfunt - pounds) * 20);
            pense = (int) ((((decfunt - pounds) * 20) - shilling) * 12);
        }
        // конструктор с тремя аргументами
        sterling(long f, int s, int p) : pounds(f), shilling(s), pense(p)
        { }
        //доступ до поля pounds
        long getPounds() const
        {
            return pounds;
        }
        //доступ до поля shilling
        int getShilling() const
        {
            return shilling;
        }
        //доступ до поля pense
        int getPense() const
        {
            return pense;
        }
        // методы 
        //--------------------------------------
        // получения значений от пользователя
        void getSterling()
        {
            cout << "Введите фунты: "; cin >> pounds;
            cout << "Введите шиллингы: "; cin >> shilling;
            cout << "Введите пенсы: "; cin >> pense;
        }
        // вывод значений на экран
        void putSterling() const
        {
            cout << pounds << "." << shilling << "." << pense;
        }
 
};
//////////////////////////////////////////////////////////////////////
class bMoney
{
    private:
        long double money;
    public:
        //конструктор без аргументов
        bMoney() : money(0.0) 
        { }
        //конструктор с одним аргументом
        bMoney(long double m) : money(m)
        { }
        // преобразование bMoney в long double
        operator long double()
        {
            return money;
        }
        //вывод bMoney на экран
        void showMoney()
        {
            cout << money << endl;
        }
        //преобразование sterling в bMoney
        bMoney(sterling st)
        {
            long funts = st.getPounds();
            int shill = st.getShilling();
            int pens = st.getPense();
            money = ((funts * 240 + shill * 12 + pens) / 240.0) * 50; //50 - один фунт
        }
 
};
//--------------------------------------------------------------------
void line()
{
    for(int i = 0; i < 22; i++)
        cout << "--";
}
///////////////////////////////////////////////////////////////////////
int main() 
{
    setlocale(LC_ALL,"");
    
    sterling st;
    cout << "Введите сумму (фунты, шиллингы и пенсы): " << endl;
    st.getSterling();
    bMoney bmoney(123.321);
    line();
    
    cout << endl << "\nВходящие данные: ";
    cout << "\nsterling:  "; st.putSterling();
    cout << "\nbMoney:    "; bmoney.showMoney();
    cout << endl;
    line();
 
    cout << "\nПреобразование sterling и bMoney: ";
    bMoney sterlingToBmoney = bmoney;   
    sterlingToBmoney.showMoney();
    line();
 
    cout << "\nПреобразование bMoney в sterling: ";
    sterling bMoneyToSterling = bmoney;
    bMoneyToSterling.putSterling();
    cout << endl;
    line();
    cout << endl << endl;;
 
    system("pause");
    return 0;
}
 
Текущее время: 06:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru