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

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

Восстановить пароль Регистрация
 
LexaB
0 / 0 / 0
Регистрация: 31.10.2011
Сообщений: 31
02.12.2012, 15:49     Класс Money, перегрузка арифметических операций для работы с денежным форматом #1
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();
}
Первый метод работает нормально, а при написании следующего, например умножение, выдает ошибку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2012, 15:49     Класс Money, перегрузка арифметических операций для работы с денежным форматом
Посмотрите здесь:

C++ Создать класс Money для работы с денежными суммами
Перегрузка арифметических операций C++
Перегрузка арифметических операций для работы с объектами классов. C++
Класс арифметических операций матрицы как на другую матрицу так и на число C++
C++ Создать базовый класс - Array и производный класс - Money для работы денежной суммы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
StanislavUA
 Аватар для StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
02.12.2012, 16:02     Класс Money, перегрузка арифметических операций для работы с денежным форматом #2
Цитата Сообщение от LexaB Посмотреть сообщение
double summa(double, double) ;
//double raznica(double, double);
double umnozhenie(double, double);
у вас оба метода должны возвращать double, у вас же они ничего не возвращают
приведенное вами описание метода будет работать, если вместо double указать void
LexaB
0 / 0 / 0
Регистрация: 31.10.2011
Сообщений: 31
02.12.2012, 16:05  [ТС]     Класс Money, перегрузка арифметических операций для работы с денежным форматом #3
StanislavUA, благодарствую)
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
02.12.2012, 16:08     Класс Money, перегрузка арифметических операций для работы с денежным форматом #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;
}
Yandex
Объявления
02.12.2012, 16:08     Класс Money, перегрузка арифметических операций для работы с денежным форматом
Ответ Создать тему
Опции темы

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