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

Класс Money, перегрузка арифметических операций для работы с денежным форматом

02.12.2012, 15:49. Показов 2448. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
//Ñîçäàéòå êëàññ Money, â êîòîðîì ïåðåãðóçèòå àðèôìåòè÷åñêèå
//îïåðàöèè  äëÿ  ðàáîòû    ñ äåíåæíûì ôîðìàòîì. Ïåðåãðóçèòå äâà îïåðàòîðà
//ñëåäóþùèì îáðàçîì:
//double * Money      //óìíîæèòü ÷èñëî íà äåíüãè
//double / Money      //äåëèòü ÷èñëî íà äåíüãè
//Ýòè    îïåðàöèè   òðåáóþò   íàëè÷èÿ äðóæåñòâåííûõ  ôóíêöèé, òàê êàê ñïðàâà îò îïåðàòîðà
//íàõîäèòñÿ    îáúåêò,   à ñëåâà -   îáû÷íî ÷èñëî.    Óáåäèòåñü,   ÷òî main()
//ïîçâîëÿåò  ïîëüçîâàòåëþ  ââåñòè   äâå   äåíåæíûå  ñòðîêè  è ÷èñëî  ñ ïëàâàþùåé
//çàïÿòîé, à  çàòåì   êîððåêòíî   âûïîëíèòü  âñå  ñåìü  àðèôìåòè÷åñêèõ äåéñòâèé ñ
//ñîîòâåòñòâóþùèìè ïàðàìè çíà÷åíèé.
 
#include <stdio>
#include <conio>
#include <iostream>
#include <windows.h>
 
using namespace std;
class oper
{
private:
double a,b,summ;
public:
double summa(double, double) ;
//double raznica(double, double);
double umnozhenie(double, double);
//double delenie();
//double delenieNa();
//double umnozhenieNa();
};
double oper::summa(double a,double b)
{
double summ=a+b;
cout<<summ;
}
double oper::umnozhenie(double w, double e)
{double sum=w*e;
cout<<sum;
}
 
void main()
{
double q,w,e;
cin>>q;cin>>w;cin>>e ;
oper a;
 
a.summa(q,w);
a.umnozhenie(q,w);
system("PAUSE");
getch();
}
Первый метод работает нормально, а при написании следующего, например умножение, выдает ошибку.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2012, 15:49
Ответы с готовыми решениями:

Перегрузка арифметических операций для работы с объектами классов.
Создать класс Animal, содержащий следующие элементы: - поле «вес» float Mass; - поле «пол» ...

Класс Матрица, перегрузка арифметических операций
Не удаётся реализовать перегрузку операторов сложения, вычитания и т.д. причём не понимаю в чём...

Класс для работы с римскими числами: перегрузка операций +, ++ и +=
Доброго времени суток. Очень нужна помощь программистов. Есть такое задание: Создать класс,...

Перегрузка операций. Описать класс для работы с одномерным массивом строк фиксированной длины
Каждый разрабатываемый класс должен, содержать следующие элементы: скрытые и открытые поля,...

3
44 / 44 / 14
Регистрация: 27.04.2011
Сообщений: 163
02.12.2012, 16:02 2
Цитата Сообщение от LexaB Посмотреть сообщение
double summa(double, double) ;
//double raznica(double, double);
double umnozhenie(double, double);
у вас оба метода должны возвращать double, у вас же они ничего не возвращают
приведенное вами описание метода будет работать, если вместо double указать void
1
0 / 0 / 2
Регистрация: 31.10.2011
Сообщений: 31
02.12.2012, 16:05  [ТС] 3
StanislavUA, благодарствую)
0
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,593
02.12.2012, 16:08 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
#include <iostream>
 
class Money {
 private:
  double amount;
 public:
  Money() : amount(0.0) {}
  explicit Money(double amount) : amount(amount) {}
  double getAmount() const { return amount; }
  void setAmount(double amount) { this->amount = amount; }
};
 
Money operator*(const Money &money, double multiplier) {
  return Money(money.getAmount() * multiplier);
}
 
Money operator*(double multiplier, const Money &money) {
  return money * multiplier;
}
 
Money operator/(const Money &money, double multiplier) {
  return Money(money.getAmount() / multiplier);
}
 
std::ostream &operator<<(std::ostream &stream, const Money &money) {
  return stream << money.getAmount() << "$";
}
 
int main(int argc, char *argv[]) {
  setlocale(LC_ALL,"rus");
  srand(time(0));
 
  Money x(200.3);
  
  std::cout << x << std::endl <<
    x * 2 << std::endl <<
    x / 2 << std::endl <<
    2 * x << std::endl;
  
  std::cin.get();
  return EXIT_SUCCESS;
}
1
02.12.2012, 16:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2012, 16:08
Помогаю со студенческими работами здесь

Создать базовый класс - Array и производный класс - Money для работы денежной суммы
ПОМОГИТЕ, ПОЖАЛУЙСТА, С ЗАДАЧЕЙ Создать базовый класс - Array и производный класс - Money для...

Перегрузка арифметических операций
Помогите пожалуйста. Создать класс типа Float. Перегрузите для него арифметические операции,...

Перегрузка арифметических операций
Для соответствующего класса, перегрузить арифметические операции(+,-,*,/). При перезгузке...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru