Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/56: Рейтинг темы: голосов - 56, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 21.04.2012
Сообщений: 8

Описать класс Money

05.06.2012, 17:13. Показов 11068. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста вывести перегрузки))

Вот задание:

Создать класс Money, разработав следующие элементы класса:
Поля:
- Номинал купюры - int first
- Количество купюр - int second
Конструктор:
- Позволяющий создать экземпляр класса с заданными значениям полей
Методы:
- Вывести номинал и количество купюр
- Определить, хватит ли денежных средств на покупку товара на сумму N рублей
- Определить, сколько штук товара стоимости n рублей можно купить на имеющиеся денежные средства
Свойства:
- Позволяющее получить-установить значение полей (доступное для чтения и записи)
- Позволяющее расчитатать сумму денег (доступное только для чтения)

Добавить перегрузку:
• операции ++ (--): одновременно увеличивает (уменьшает) значение полей first и second;
• операции !: возвращает значение true, если поле second не нулевое, иначе false;
• операции бинарный +: добавляет к значению поля second значение скаляра;
• преобразования типа Money в string (и наоборот).

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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace classss
{
    class Money
    {
        private int first; // Номинал купюры
        private int second; // Колличество купюр
 
        public Money(int banknotes, int number)
        {
            first = banknotes;
            second = number;
        }
         public void ShowInfoMoney(Money[] purse)
        {
            // Цикл выводящий номинал и колличество купюр
            foreach (Money i in purse)
            {
                Console.WriteLine("Купюра номиналом: {0} руб. - {1} шт.",
                i.first, i.second);
            }
        }
         public bool BuyOne(Money[] purse, int price) //Хватает ли денежных средств на покупку
         {
             return (ShowAllMoney(purse) >= price);
         }
         public int BuyAll(Money[] purse, int price) //Сколько шт. можно купить на деньги
         {
             return (ShowAllMoney(purse) / price);
         }
         public int ShowAllMoney(Money[] purse)
         {
             // Переменная для хранения суммы банкнот
            int sum = 0;
 
            // Цикл считающий сумму всех банкнот
            foreach (Money i in purse)
            {
                // Сумма увеличивается на произведение номинала на колличество
                sum += i.first * i.second;
            }
 
            //Вернуть сумму
            return sum;
        }
        public int Banknote         //Свойства: получает значение полей
        {
            get
            {
                // Вернуть номинал банкноты
                return first;
            }
 
            set
            {
                // Установить номинал банкноты
                first = value;
            }
        }
        public int Number             // Свойства: чтение номинала банкнот и колличества
        {
            get
            {
                // Вернуть номинал банкноты
                return second;
            }
 
            
        }
        public int AllMoneyBanknote                         //Свойство расчитать сумму денег
        {
            get
            {
                //Вернуть сумму банкнот данного номинала
                return first * second;
            }
        }
        public static Money operator ++(Money t)
        {//перегрузка  ++
            t.first = t.first + 1;
            t.second = t.second + 1;
            return t;
        }
        public static Money operator --(Money t)
        {//перегрузка --
            t.first = t.first - 1;
            t.second = t.second - 1;
            return t;
        }
        public static bool operator !(Money t)
        {//перегрузка !
            if (t.second != 0) return true;
            else return false;
        }
        public static Money operator +(Money t, int skalyar)
        {//перегрузка +
            t.second += skalyar;
            return t;
        }
        public static explicit operator string(Money t)
        {
            return t.first + " " + t.second;
        }
        public static explicit operator Money(string t)
        { //перегрузка- money в string
            string[] m = t.Split(' ');
            Money M = new Money(int.Parse(m[0]), int.Parse(m[1]));
            return M;
        }
    }
 
    class Program
    {
        static void Main()
        {
            // Создание массива кошелька и наполнения его банкнотами
            Money[] dengi = new Money[4];
            dengi[0] = new Money(50, 4);
            dengi[1] = new Money(100, 8);
            dengi[2] = new Money(500, 2);
            dengi[3] = new Money(1000, 3);
 
            // Вывести информацию о всех банкнотах
            dengi[0].ShowInfoMoney(dengi);
 
            // Вывести сумму всех банкнот
            Console.WriteLine("В вашем кошельке: {0} руб.", dengi[0].ShowAllMoney(dengi));
 
            // Хватит ли денег на покупку
            if (dengi[0].BuyOne(dengi, 3500))
                Console.WriteLine("На оплату товара, денежных стредств хватает");
            else
                Console.WriteLine("На оплату товара, денег НЕ хватает");
 
            // Купить на все деньги
            Console.WriteLine("На {0} можно купть {1} ед. товара по 330",
            dengi[0].ShowAllMoney(dengi), dengi[0].BuyAll(dengi, 330));
 
            // Свойства: чтение-запись номинала банкнот и колличества,
            // вывод суммы всех банкнот данного номинала
            Console.WriteLine("\nНоминал банкнот: {0}\n" +
            "Колличество банкнот: {1}\n" +
            "Сумма всех банкнот данного номинала: {2}",
           dengi[3].Banknote, dengi[3].Number, dengi[3].AllMoneyBanknote);             
            dengi[3].Banknote = 5000;
            
 
            Console.WriteLine("\nНоминал банкнот: {0}\n" +
            "Колличество банкнот: {1}\n" +
            "Сумма всех банкнот данного номинала: {2}",
           dengi[3].Banknote, dengi[3].Number, dengi[3].AllMoneyBanknote);
 
            dengi[0]++;
            
            //вывод
            Money M = new Money(1, 1);
            string s = (string)M;
            Console.WriteLine(s);
            string s1 = "2 2";
            Money M1 = (Money)s1;
            
 
 
 
            Console.ReadKey();
        }
    }
 
 
}
Задание:
Создать класс Money, разработав следующие элементы класса:
Поля:
- Номинал купюры - int first
- Количество купюр - int second
Конструктор:
- Позволяющий создать экземпляр класса с заданными значениям полей
Методы:
- Вывести номинал и количество купюр
- Определить, хватит ли денежных средств на покупку товара на сумму N рублей
- Определить, сколько штук товара стоимости n рублей можно купить на имеющиеся денежные средства
Свойства:
- Позволяющее получить-установить значение полей (доступное для чтения и записи)
- Позволяющее расчитатать сумму денег (доступное только для чтения)

Добавить перегрузку:
• операции ++ (--): одновременно увеличивает (уменьшает) значение полей first и second;
• операции !: возвращает значение true, если поле second не нулевое, иначе false;
• операции бинарный +: добавляет к значению поля second значение скаляра;
• преобразования типа Money в string (и наоборот).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.06.2012, 17:13
Ответы с готовыми решениями:

Создать класс Money
Создать класс Money (пара значений) c методами, реализующими арифметические операции, и методом вывода на экран. В классе Money денежная...

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

Создать класс Money
Методы, позволяющие: • вывести номинал и количество купюр; • определить, хватит ли денежных средств на покупку товара на сумму N...

9
29 / 31 / 2
Регистрация: 14.04.2012
Сообщений: 152
05.06.2012, 17:36
Может так?:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void operator ++(Money obj)
        {
         obj.second = obj.second + 1;
         obj.first = obj.first + 1;
        } 
public static void operator --(Money obj)
        {
         obj.second = obj.second - 1;
         obj.first = obj.first - 1;
        } 
   public static bool operator !(Money obj)
        {
            if (obj.second != 0)
                return true;
            else return false;
        }
Погоди,у тебя же все уже сделано
0
0 / 0 / 0
Регистрация: 21.04.2012
Сообщений: 8
05.06.2012, 22:35  [ТС]
Был задан вопрос от преподавателя: как задан скаляр в перегрузке(предпоследней). Я так понял у меня он ни как не задан и его надо вывести...
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
06.06.2012, 08:58
Преподаватель имел ввиду этот оператор:
C#
1
2
3
4
5
        public static Money operator +(Money t, int skalyar)
        {//перегрузка +
            t.second += skalyar;
            return t;
        }
Скаляр задан в виде целого значения (int).
Других идей у меня нет.
1
0 / 0 / 0
Регистрация: 21.04.2012
Сообщений: 8
13.06.2012, 19:46  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Скаляр задан в виде целого значения (int).
Других идей у меня нет.
Да, это понятно. Мне нужно вывести перегрузку на экран(в консоли), как то так

Помогите плиз(
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
13.06.2012, 21:22
C#
1
Console.WriteLine(  (string) (new Money(1,0) + 10)   );
1
0 / 0 / 0
Регистрация: 21.04.2012
Сообщений: 8
15.06.2012, 15:17  [ТС]
C#
1
2
3
4
5
6
7
8
9
 public void ShowInfoMoney(Money[] purse)
        {
            // Цикл выводящий номинал и колличество купюр
            foreach (Money i in purse)
            {
                Console.WriteLine("Купюра номиналом: {0} руб. - {1} шт.",
                i.first, i.second);
            }
        }
Подскажите как перегрузить это? Нужно в конце программы вывести M1.ShowInfoMoney(M1); , как-то так))
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
15.06.2012, 15:20
C#
1
2
3
4
public void ShowInfoMoney(Money i)
        {
              Console.WriteLine("Купюра номиналом: {0} руб. - {1} шт.", i.first, i.second);
        }
0
0 / 0 / 0
Регистрация: 21.04.2012
Сообщений: 8
15.06.2012, 19:58  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
C#
1
2
3
4
public void ShowInfoMoney(Money i)
        {
              Console.WriteLine("Купюра номиналом: {0} руб. - {1} шт.", i.first, i.second);
        }
В конце программы хочу вывести M1(вот так: M1.ShowInfoMoney(M1)

И на этом моменте выводит 2 ошибки((( dengi[0].ShowInfoMoney(dengi);

Ошибки:
1) Ошибка 1 Наиболее подходящий перегруженный метод для "classss.Money.ShowInfoMoney(classss.Mon ey)" имеет несколько недопустимых аргументов

2) Ошибка 2 Аргумент "1": преобразование типа из "classss.Money[]" в "classss.Money" невозможно
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
15.06.2012, 20:34
Выражайтесь яснее.
Мое чувство аналогии говорит о том, что аналогом этой вашей записи:
C#
1
M1.ShowInfoMoney(M1));
будет не то что вы почему-то решили
C#
1
dengi[0].ShowInfoMoney(dengi);
а вот такая запись, которая должна работать:
C#
1
dengi[0].ShowInfoMoney(dengi[0]);
PS. прочтите хотя бы основы языка. Меньше будете мучать и себя и окружающих.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.06.2012, 20:34
Помогаю со студенческими работами здесь

Описать структуру «money» которая содержит три поля: количество купюр по 10, 50 и 100 рублей
Описать структуру «money» которая содержит три поля: количество купюр по 10, 50 и 100 рублей. Реализовать методы вычисляющий целое число...

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

Создать класс money для работы с денежными суммами
Создать класс money для работы с денежными суммами. Денежная сумма должна быть представлена двумя полями целого типа: одно-для...

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

В класс Money добавить индексатор, позволяющий по индексу 0 обращаться к полю first
В класс Money добавить: a. Индексатор, позволяющий по индексу 0 обращаться к полю first, по индексу 1 – к полю second, при других...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru