Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
olli_
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 7
#1

Разработать класс содержащий перегрузку операторов

06.02.2017, 18:13. Просмотров 839. Ответов 8
Метки нет (Все метки)

Создать класс Money, содержащий следующие члены класса:

+1. Поля:
•int first;//номинал купюры
•int second; //количество купюр

+2. Конструктор, позволяющий создать экземпляр класса с заданными значениям полей.

+3. Методы, позволяющие:
•вывести номинал и количество купюр;
•определить, хватит ли денежных средств на покупку товара на сумму N рублей.
•определить, сколько штук товара стоимости n рублей можно купить на имеющиеся денежные средства.

+4. Свойство:
•позволяющее получить - установить значение полей (доступное для чтения и записи);
•позволяющее расчитатать сумму денег (доступное только для чтения).

+5. Индексатор, позволяющий по индексу 0 обращаться к полю first, по индексу 1 – к полю second, при других значениях индекса выдается сообщение об ошибке.

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

Добавлено через 50 секунд
У меня получилось так:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
 
namespace prakt_10
{
    class Program
    {
        class Money
        {
            private int first;
            private int second;
 
            public Money(int first, int second)
            {
                this.first = first;
                this.second = second;
            }
 
            // methods
            public void Show()
            {
                Console.WriteLine("first: {0}, second: {1}", this.first, this.second);
            }
 
            public void Enough_Deficiency(int price)        // enough or not enough
            {
                if (this.first * this.second >= price)
                {
                    Console.WriteLine("Enough funds.");
 
                    double numObj = this.first * this.second / price;
                    numObj = Convert.ToInt16(Math.Floor(numObj));       // rounded <-
 
                    Console.WriteLine("Funds enough to buy {0} objects", numObj);
                }
 
                else
                {
                    Console.WriteLine("Insufficiently!");
                }
            }
 
            // properties
            public int values_first
            {
                get { return this.first; }
                set { this.first = value; }
            }
 
            public int values_second
            {
                get { return this.second; }
                set { this.second = value; }
            }
 
            public int Cash
            {
                get { return this.first * this.second; }
            }
 
            public int this[int i]
            {
                get
                {
                    if (i == 0)
                    { return this.first; }
 
                    else
                    {
                        if (i == 1)
                        { return this.second; }
 
                        else
                        { 
                            Console.WriteLine("Error! Invalid index.");
                            return -1;
                        }
                    }
                }
 
            }
        }
 
        // owerload
        /*
        public static Money operator ++(Money M)
        {
            Money M1 = new Money(M.values_first *= 10, M.values_second *= 10);
            return M1;
        }
 
        public static Money operator --(Money M)
        {
            Money M1 = new Money(M.values_first /= 10, M.values_second /= 10);
            return M1;
        }
        
        public static Money operator !(Money M)
        {
            bool cash = false;
            if (M.values_second > 0)
            {
                cash = true;
            }
            
            return cash;
        }
 
        public static Money operator +(Money M, int skal)
        {
            Money M1 = new Money(M.values_first, M.values_second * skal);
            return M1;
        }
        */
 
 
 
        static void Main(string[] args)
        {
            int first = int.Parse(Console.ReadLine());
            int second = int.Parse(Console.ReadLine());
            int price = int.Parse(Console.ReadLine());
 
            Money M1 = new Money(first, second);
 
            // tests
            M1.Show();
            M1.Enough_Deficiency(price);
            Console.WriteLine(M1.Cash);
 
            M1.values_first = 100;
            M1.values_second = 100;
            M1.Show();
 
            Console.ReadKey();
        }
    }
}
Добавлено через 1 минуту
Не могу понять в чем ошибка перегрузки операторов. Помогите плиз, как исправить?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2017, 18:13
Ответы с готовыми решениями:

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

Описать класс треугольник, методы — площадь, периметр, вывод; реализовать перегрузку операторов
Всем привет. Помогите разобраться. В задании описать класс треугольник, методы...

Разработать класс Template, содержащий конструктор и метод Render
Подскажите, пожалуйста, в какой последовательности выполнять это...

Требуется разработать класс Template, содержащий конструктор и метод Render
Требуется разработать (.NET, C#) класс Template, содержащий конструктор и метод...

Cделать перегрузку операторов массивов
Ребят проблема мучает уже 3-ий день. Не могу решить. Задано 2 массива char ...

8
Tyoma
51 / 51 / 15
Регистрация: 12.05.2010
Сообщений: 167
Завершенные тесты: 3
06.02.2017, 18:37 #2
А Вы объявляете метод ++ и др. вне класса Money?
0
olli_
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 7
06.02.2017, 18:39  [ТС] #3
В самом классе
0
Tyoma
51 / 51 / 15
Регистрация: 12.05.2010
Сообщений: 167
Завершенные тесты: 3
06.02.2017, 18:41 #4
Цитата Сообщение от olli_ Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
        public static Money operator !(Money M)
        {
            bool cash = false;
            if (M.values_second > 0)
            {
                cash = true;
            }
            
            return cash;
        }
Вы пытаетесь вернуть bool, а у метода объявлено Money
Должно быть:
C#
1
2
3
4
5
6
7
public static bool operator !(Money M) {
            bool cash = false;
            if (M.values_second > 0) {
                cash = true;
            }
            return cash;
        }
0
olli_
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 7
06.02.2017, 18:45  [ТС] #5
Попробовал так сделать, подчеркивает (Money) внутри скобок
0
TuM0xA
200 / 200 / 137
Регистрация: 21.12.2015
Сообщений: 545
06.02.2017, 18:46 #6
Лучший ответ Сообщение было отмечено olli_ как решение

Решение

olli_, у вас ошибки из-за того что class Money вложенный
исправленная версия
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
 
namespace prakt_10
{
    class Money
    {
        private int first;
        private int second;
 
        public Money(int first, int second)
        {
            this.first = first;
            this.second = second;
        }
 
        // methods
        public void Show()
        {
            Console.WriteLine("first: {0}, second: {1}", this.first, this.second);
        }
 
        public void Enough_Deficiency(int price)        // enough or not enough
        {
            if (this.first * this.second >= price)
            {
                Console.WriteLine("Enough funds.");
 
                double numObj = this.first * this.second / price;
                numObj = Convert.ToInt16(Math.Floor(numObj));       // rounded <-
 
                Console.WriteLine("Funds enough to buy {0} objects", numObj);
            }
 
            else
            {
                Console.WriteLine("Insufficiently!");
            }
        }
 
        // properties
        public int values_first
        {
            get { return this.first; }
            set { this.first = value; }
        }
 
        public int values_second
        {
            get { return this.second; }
            set { this.second = value; }
        }
 
        public int Cash
        {
            get { return this.first * this.second; }
        }
 
        public int this[int i]
        {
            get
            {
                if (i == 0)
                { return this.first; }
 
                else
                {
                    if (i == 1)
                    { return this.second; }
 
                    else
                    {
                        Console.WriteLine("Error! Invalid index.");
                        return -1;
                    }
                }
            }
 
        }
 
        public static Money operator ++(Money M)
        {
            Money M1 = new Money(M.values_first *= 10, M.values_second *= 10);
            return M1;
        }
 
        public static Money operator --(Money M)
        {
            Money M1 = new Money(M.values_first /= 10, M.values_second /= 10);
            return M1;
        }
 
        public static bool operator !(Money M)
        {
            bool cash = false;
            if (M.values_second > 0)
            {
                cash = true;
            }
 
            return cash;
        }
 
        public static Money operator +(Money M, int skal)
        {
            Money M1 = new Money(M.values_first, M.values_second * skal);
            return M1;
        }
 
 
 
        class test
        {
            static void Main(string[] args)
            {
                int first = int.Parse(Console.ReadLine());
                int second = int.Parse(Console.ReadLine());
                int price = int.Parse(Console.ReadLine());
 
                Money M1 = new Money(first, second);
 
                // tests
                M1.Show();
                M1.Enough_Deficiency(price);
                Console.WriteLine(M1.Cash);
 
                M1.values_first = 100;
                M1.values_second = 100;
                M1.Show();
 
                Console.ReadKey();
            }
        }
    }
}
1
Tyoma
51 / 51 / 15
Регистрация: 12.05.2010
Сообщений: 167
Завершенные тесты: 3
06.02.2017, 18:49 #7
olli_,
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
class Program {
        class Money {
            private int first;
            private int second;
 
            public Money(int first, int second) {
                this.first = first;
                this.second = second;
            }
 
            // methods
            public void Show() {
                Console.WriteLine("first: {0}, second: {1}", this.first, this.second);
            }
 
            public void Enough_Deficiency(int price) // enough or not enough
            {
                if (this.first * this.second >= price) {
                    Console.WriteLine("Enough funds.");
 
                    double numObj = this.first * this.second / price;
                    numObj = Convert.ToInt16(Math.Floor(numObj)); // rounded <-
 
                    Console.WriteLine("Funds enough to buy {0} objects", numObj);
                } else {
                    Console.WriteLine("Insufficiently!");
                }
            }
 
            // properties
            public int values_first { get { return this.first; } set { this.first = value; } }
 
            public int values_second { get { return this.second; } set { this.second = value; } }
 
            public int Cash { get { return this.first * this.second; } }
 
            public int this[int i] {
                get {
                    if (i == 0) {
                        return this.first;
                    } else {
                        if (i == 1) {
                            return this.second;
                        } else {
                            Console.WriteLine("Error! Invalid index.");
                            return -1;
                        }
                    }
                }
 
            }
 
            public static Money operator ++(Money M) {
                Money M1 = new Money(M.values_first *= 10, M.values_second *= 10);
                return M1;
            }
 
            public static Money operator --(Money M) {
                Money M1 = new Money(M.values_first /= 10, M.values_second /= 10);
                return M1;
            }
 
            public static bool operator !(Money M) {
                bool cash = false;
                if (M.values_second > 0) {
                    cash = true;
                }
                return cash;
            }
 
            public static Money operator +(Money M, int skal) {
                Money M1 = new Money(M.values_first, M.values_second * skal);
                return M1;
            }
        }
 
        static void Main(string[] args) {
            int first = int.Parse(Console.ReadLine());
            int second = int.Parse(Console.ReadLine());
            int price = int.Parse(Console.ReadLine());
 
            Money M1 = new Money(first, second);
 
            // tests
            M1.Show();
            M1.Enough_Deficiency(price);
            Console.WriteLine(M1.Cash);
 
            M1.values_first = 100;
            M1.values_second = 100;
            M1.Show();
 
            Console.ReadKey();
 
        }
    }
1
olli_
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 7
06.02.2017, 18:51  [ТС] #8
Спасибо, все верно, работает! =)
0
TuM0xA
200 / 200 / 137
Регистрация: 21.12.2015
Сообщений: 545
06.02.2017, 18:53 #9
olli_, перегрузка операторов должна находиться внутри класса для которого она реализуется
1
06.02.2017, 18:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2017, 18:53

Разработать класс коллекций Employee, содержащий в себе информацию о работниках фирмы
Вам поручили разработать класс коллекций Employee, содержащий в себе информацию...

Разработать класс CAuto (Автомобиль), содержащий поля: BodyID (номер кузова), EngineID
задание в общем такое: 1. Разработать главную форму программного обеспечения с...

Реализовать перегрузку операторов в приведенном коде
Доброго времени суток! Передо мной стала задача реализовать перегрузку...


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

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

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