Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/41: Рейтинг темы: голосов - 41, средняя оценка - 4.88
КристинаСыр
0 / 0 / 0
Регистрация: 10.01.2009
Сообщений: 4
1

Создать класс Money для работы с денежными суммами

11.01.2009, 14:23. Просмотров 8087. Ответов 8
Метки нет (Все метки)

Помогите решить


Создать класс Money для работы с денежными суммами. Число должно быть представлено двумя полями: типа long для рублей и типа unsigned char — для копеек. Дробная часть (копейки) при выводе на экран должна быть отделена от целой части запятой. Реализовать сложение, вычитание, деление сумм, деление суммы на дробное число, умножение на дробное число и операции сравнения.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2009, 14:23
Ответы с готовыми решениями:

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

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

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

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

Определить абстрактный класс для работы с денежными суммами
Ребят, тут такое дело, завис над задачей: Определить абстрактный класс...

8
Jabberwock
3 / 3 / 1
Регистрация: 05.01.2009
Сообщений: 23
11.01.2009, 15:12 2
unsigned char? массив что-ли? цифр-то в копейках две...
0
MAcK
Комбайнёр
1574 / 672 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
11.01.2009, 15:12 3
Такие примеры есть почти в любой книге ... просто нужно её отрыть
Могу отрыть за Вас, но платно
0
Jabberwock
3 / 3 / 1
Регистрация: 05.01.2009
Сообщений: 23
11.01.2009, 17:44 4
Почему бы и не написать? Мне вот самому интересно =).

Добавлено через 1 час 12 минут 32 секунды
Число копеек представлено не через unsigned char, а через int.

В итоге получился быдлокод следующего содержания:

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
#include <iostream>
#include <sstream>
using namespace std;
 
class CMoney
{
      long roubles;
      unsigned int copecks;
      float wholeSum;
      void splitUp()
      {
           roubles = (int)wholeSum;
           copecks = (int)((wholeSum - (int)wholeSum) * 100);
      };
      public:
             void get()
             {
                  cin >> wholeSum;
                  splitUp();
             };
             string show()
             {
                  stringstream out;
                  string str;
                  out << roubles << ",";
                  if (copecks < 10)
                  {
                              out << "0";
                  }
                  out << copecks;
                  str = out.str();
                  return str;
             };
             CMoney operator+ (CMoney arg)
             { 
                    CMoney temp;
                    temp.wholeSum = this->wholeSum + arg.wholeSum;
                    temp.splitUp();
                    return temp;
             };
             CMoney operator- (CMoney arg)
             { 
                    CMoney temp;
                    temp.wholeSum = this->wholeSum - arg.wholeSum;
                    temp.splitUp();
                    return temp;
             };
             float operator/ (CMoney arg)
             { 
                    float temp;
                    temp = this->wholeSum / arg.wholeSum;
                    return temp;
             };
             CMoney operator/ (float arg)
             { 
                    CMoney temp;
                    temp.wholeSum = this->wholeSum / arg;
                    temp.splitUp();
                    return temp;
             };
             CMoney operator* (float arg)
             { 
                    CMoney temp;
                    temp.wholeSum = this->wholeSum * arg;
                    temp.splitUp();
                    return temp;
             };
             bool operator== (CMoney arg)
             { return (this->wholeSum == arg.wholeSum); };
             bool operator!= (CMoney arg)
             { return (this->wholeSum != arg.wholeSum); };
             bool operator> (CMoney arg)
             { return (this->wholeSum > arg.wholeSum); };
             bool operator< (CMoney arg)
             { return (this->wholeSum < arg.wholeSum); };
             bool operator>= (CMoney arg)
             { return (this->wholeSum >= arg.wholeSum); };
             bool operator<= (CMoney arg)
             { return (this->wholeSum <= arg.wholeSum); };
};
0
КристинаСыр
0 / 0 / 0
Регистрация: 10.01.2009
Сообщений: 4
11.01.2009, 21:29  [ТС] 5
уряяяяяяяя спасибо
0
donya063
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 3
06.06.2011, 23:16 6
а если перегрузить операции в классе?
не напишешь код? ооочень надо!!!

Добавлено через 1 минуту
ааа ты их итак перегрузил чтоли?

Добавлено через 1 минуту
и как создать конструкторы тут?
0
ValeryLaptev
Эксперт С++
1050 / 829 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
06.06.2011, 23:23 7
Цитата Сообщение от Jabberwock Посмотреть сообщение
Почему бы и не написать? Мне вот самому интересно =).

Добавлено через 1 час 12 минут 32 секунды
Число копеек представлено не через unsigned char, а через int.

В итоге получился быдлокод следующего содержания:

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
#include <iostream>
#include <sstream>
using namespace std;
 
class CMoney
{
      long roubles;
      unsigned int copecks;
      float wholeSum;
      void splitUp()
      {
           roubles = (int)wholeSum;
           copecks = (int)((wholeSum - (int)wholeSum) * 100);
      };
      public:
             void get()
             {
                  cin >> wholeSum;
                  splitUp();
             };
             string show()
             {
                  stringstream out;
                  string str;
                  out << roubles << ",";
                  if (copecks < 10)
                  {
                              out << "0";
                  }
                  out << copecks;
                  str = out.str();
                  return str;
             };
             CMoney operator+ (CMoney arg)
             { 
                    CMoney temp;
                    temp.wholeSum = this->wholeSum + arg.wholeSum;
                    temp.splitUp();
                    return temp;
             };
             CMoney operator- (CMoney arg)
             { 
                    CMoney temp;
                    temp.wholeSum = this->wholeSum - arg.wholeSum;
                    temp.splitUp();
                    return temp;
             };
             float operator/ (CMoney arg)
             { 
                    float temp;
                    temp = this->wholeSum / arg.wholeSum;
                    return temp;
             };
             CMoney operator/ (float arg)
             { 
                    CMoney temp;
                    temp.wholeSum = this->wholeSum / arg;
                    temp.splitUp();
                    return temp;
             };
             CMoney operator* (float arg)
             { 
                    CMoney temp;
                    temp.wholeSum = this->wholeSum * arg;
                    temp.splitUp();
                    return temp;
             };
             bool operator== (CMoney arg)
             { return (this->wholeSum == arg.wholeSum); };
             bool operator!= (CMoney arg)
             { return (this->wholeSum != arg.wholeSum); };
             bool operator> (CMoney arg)
             { return (this->wholeSum > arg.wholeSum); };
             bool operator< (CMoney arg)
             { return (this->wholeSum < arg.wholeSum); };
             bool operator>= (CMoney arg)
             { return (this->wholeSum >= arg.wholeSum); };
             bool operator<= (CMoney arg)
             { return (this->wholeSum <= arg.wholeSum); };
};
1. Вместо unsigned int сделайте все же unsigned char.
2. Уберите лишнее поле типа float. И реализуйте всю арифметику непосредственно с полями рублей и копеек. Таким образом, функция splitUp() будет просто не нужна.
3. Соответственно, операция сравнения operator== непосредственно сравнивает рубли и копейки. Сравнение дробных чисел может выйти боком...

Добавлено через 2 минуты
Цитата Сообщение от donya063 Посмотреть сообщение
и как создать конструкторы тут?
Конструктор имеет имя класса.
Конструктор по умолчанию, очевидно, обнуляет поля. Конструктор инициализации имеет два аргумента: рубли и копейки...
0
donya063
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 3
06.06.2011, 23:25 8
не напишешь код? прост завтра сдавать, а так я не успею понять это все!! очень прошу
0
ValeryLaptev
Эксперт С++
1050 / 829 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
06.06.2011, 23:32 9
Цитата Сообщение от donya063 Посмотреть сообщение
не напишешь код? прост завтра сдавать, а так я не успею понять это все!! очень прошу
Код - не напишу... Еще я не писал код к собственным заданиям... ))
Но тебе же выложили практически готовый вариант. Там переделок - на полчаса... Вот и попробуй...
0
06.06.2011, 23:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2011, 23:32

Создание класса для работы с денежными суммами
Создать класс Money для работы с денежными суммами. Сумма должна быть...

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

Класс Money, перегрузка арифметических операций для работы с денежным форматом
//Ñîçäàéòå êëàññ Money, â êîòîðîì ïåðåãðóçèòå àðèôìåòè÷åñêèå //îïåðàöèè ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru