Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 3

Определить абстрактный класс для работы с денежными суммами

04.01.2017, 15:06. Показов 2845. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, тут такое дело, завис над задачей:
Определить абстрактный класс Сurrency для работы с денежными суммами. Определить в нем методы перевода в рубли и вывода на экран. На его основе реализовать классы Dollar, Euro и Pound (фунт стерлингов) с возможностью пересчета в центы и пенсы соответственно и указанием текущего курса. Создать класс Purse (кошелек), содержащий массив объектов этих классов в динамической памяти. Предусмотреть возможность случайного наполнения кошелька купюрами различного типа и подсчета общей суммы кошелька при изменении курса валют. В программе продемонстрировать функциональность разработанных классов.

Может кто сможет решить? C++
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.01.2017, 15:06
Ответы с готовыми решениями:

Создать класс Money для работы с денежными суммами
Помогите решить:-[ Создать класс Money для работы с денежными суммами. Число должно быть представлено двумя полями: типа long для...

создать класс Money для работы с денежными суммами
1. Определение класса. Оценивается полнота и корректность определения класса (объявление его полей и методов). Поля класса должны быть...

Создать класс Money для работы с денежными суммами
Проблемы с задачей, а точнее, её полное не понимание. Надеюсь на вашу помощь.

5
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
04.01.2017, 18:32
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
#include <iostream>
#include <iomanip>
#include <vector>
#include <initializer_list>
#include <numeric>
using namespace std;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class Currency {
    public:
        virtual double toRub()=0;
        virtual void show()const=0;
        virtual ~Currency() {}
};
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class Dollar final:public Currency {
    private:
        double money;
    public:
        static double kurse;
        Dollar()=default;
        Dollar(double x):money(x) {}
        ~Dollar() {}
        Dollar(const Dollar&y):money(y.money) {}
        double toRub() override;
        void show()const override;
        Dollar& operator=(const Dollar&y) {     money=y.money;      }
        friend ostream& operator<<(ostream& os,const Dollar& y);
};
ostream& operator<<(ostream& os,const Dollar& y) {
    os<<fixed<<setprecision(2)<<"$: "<<static_cast<int>(y.money)<<" cent: "<<(y.money-(int)y.money)*100<<endl;
    return os;
}
double Dollar::toRub() {
    return money*kurse;
}
void Dollar::show()const {
    cout<<fixed<<setprecision(2)<<"$: "<<static_cast<int>(money)<<" cent: "<<(money-(int)money)*100<<endl;
}
double Dollar::kurse=60.66;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class Euro final:public Currency {
    private:
        double money;
    public:
        static double kurse;
        Euro()=default;
        Euro(double x):money(x) {}
        ~Euro() {}
        Euro(const Euro&y):money(y.money) {}
        double toRub() override;
        void show()const override;
        Dollar& operator=(const Euro&y) {    money=y.money;     }
        friend ostream& operator<<(ostream& os,const Euro& y);
};
ostream& operator<<(ostream& os,const Euro& y) {
    os<<fixed<<setprecision(2)<<"EUR: "<<static_cast<int>(y.money)<<" eurocent: "<<(y.money-(int)y.money)*100<<endl;
    return os;
}
double Euro::toRub() {
    return money*kurse;
}
void Euro::show()const {
    cout<<fixed<<setprecision(2)<<"EUR: "<<static_cast<int>(money)<<" eurocent: "<<(money-(int)money)*100<<endl;
}
double Euro::kurse=63.81;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class Purse final {
    private:
        vector<Currency*>p;
    public:
        Purse()=default;
        Purse(Currency *c) {    p.push_back(c);     }
        Purse(const Purse &p)=default;
        Purse& operator=(const Purse &p)=default;
        Purse(initializer_list<Currency*>&&l):p(move(l)) {}
        ~Purse() {}
        void add(Currency *c) {   p.push_back(c);   }
        void showM()const;
        double sumPerRub();
};
void Purse::showM()const {
    for(vector<Currency*>::const_iterator iter=p.begin(); iter!=p.end(); iter++) {
        (*iter)->show();
        cout<<endl;
    }
}
double Purse::sumPerRub() {
    return accumulate(p.begin(),p.end(),0.0,[](double x, Currency *c) {
        return x+c->toRub();
    });
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
using namespace std;
int main() {
    Currency*d=new Dollar(2.3);
    cout<<d->toRub()<<endl;
    Currency *e=new Euro(2.30);
    cout<<e->toRub()<<endl;
    Currency *e2=new Euro(5);
    cout<<e2->toRub()<<endl;
    cout<<endl;
    Purse pp {d,e,e2};
    pp.showM();
    cout<<"RUB: "<<(int)pp.sumPerRub()<<" cop: "<<int((pp.sumPerRub()-(int)pp.sumPerRub())*100);
    return 0;
}
Добавлено через 7 минут
C++
1
2
3
void Purse::showM()const {
for_each(p.begin(),p.end(),mem_fn(&Currency::show)); //#include <algorithm> #include <fucntional>
}
0
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 3
05.01.2017, 17:08  [ТС]
что-то она не то выводит
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
05.01.2017, 17:18
Цитата Сообщение от NikitaMoroz3456 Посмотреть сообщение
подсчета общей суммы кошелька
Выводит сумму кошелька в рублях
0
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 3
05.01.2017, 17:32  [ТС]
А откуда он берет купюры? Мы ведь ничего не вводим, он просто подсчитывает то, что есть, но добавить в него мы ничего не можем
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
05.01.2017, 17:40
Цитата Сообщение от Peoples Посмотреть сообщение
Currency*d=new Dollar(2.3);
Цитата Сообщение от Peoples Посмотреть сообщение
Currency *e=new Euro(2.30);
Цитата Сообщение от Peoples Посмотреть сообщение
Currency *e2=new Euro(5);
Цитата Сообщение от Peoples Посмотреть сообщение
Purse pp {d,e,e2};
Вот они. 2,30$ 2,30 евро и 5 евро

Добавлено через 3 минуты
Сделайте вводи своей купюры, с клавиатуры
C++
1
2
3
4
5
double x;
cin>>x;
Currency *newcup=new Euro(x);  //new Dollar(x)
/////
pp.add(newcup);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.01.2017, 17:40
Помогаю со студенческими работами здесь

Создать класс Money для работы с денежными суммами
Номиналы российских рублей могут принимать значения 1, 2, 5, 10, 50, 100, 500, 1000, 5000. Копейки представить как 0.01 (1 копейка), 0.05...

Реализовать класс Money для работы с денежными суммами; перегрузить операторы согласно условию
Вот условие задачи:Номиналы российских рублей могут принимать значения 1, 2, 5, 10, 50, 100, 500, 1000, 5000. Копейки представить как...

Создание класса для работы с денежными суммами
Создать класс Money для работы с денежными суммами. Сумма должна быть представлена массивом, каждый элемент которого - десятичная цифра....

Создать структуру Money для работы с денежными суммами
Люди, помогите, пожалуйста! Есть задача: Создать структуру Money для работы с денежными суммами. Число должно быть представлено двумя...

Абстрактный класс для работы с геометрическими фигурами
Создать абстрактный класс для работы с геометрическими фигурами. Предусмотреть такие компоненты- свойства класса: координаты центра фигуры;...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru