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

Реализовать в классе сложение сумм, вычитание, деление сумм, деление суммы на дробное число, умножение на дробное число

02.10.2021, 12:10. Показов 1306. Ответов 0

Студворк — интернет-сервис помощи студентам
Создать класс Money для работы с денежными суммами. Число должно быть представлено двумя поля-ми: типа long для рублей и типа unsigned char — для копеек. Дробная часть (копейки) при выводе на экран должна быть отделена от целой части запятой. Реализовать сложение сумм, вычитание, деление сумм, деление суммы на дробное число, умножение на дробное число и операции сравнения.

Не пойму как реализовать эти операции (деления, сравнения и т.д)
Код на данный момент такой:
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
using NPOI.SS.Formula.Functions;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Money
{
   
 
    private long Rub { get; set; }
    private byte Kop { get; set; }
    public Money(long Rub, byte Kop)
    {
        this.Rub = Rub;
        this.Kop = Kop;
    }
    public bool Init(long rub, byte kop)
    {
        if ((kop >= 100 || kop < 0) && rub < 0)
        {
            Console.WriteLine("\nПроверка формата не пройдена!\n");
            return false;
        }
        else // аргументы правильные - инициализировать поля
        {
            Rub = rub;
            Kop = kop;
            Console.WriteLine("\nПроверка формата пройдена\n");
            return true;
        }
    }
    public override string ToString()
    {
        return string.Format("{0},{1:00}", Rub, Kop);
    }
    public static Money operator +(Money a, Money b) //Сложение
    {
        int kopSum = a.Kop + b.Kop;
        long rub = a.Rub + b.Rub + kopSum / 100;
        byte kop = (byte)(kopSum % 100);
        return new Money(rub, kop);
    }
    public static Money operator -(Money a, Money b) // Вычитание
    {
        int kopDiff = a.Kop - b.Kop;
        long rub = a.Rub - b.Rub;
        if (kopDiff < 0)
        {
            rub--;
            kopDiff += 100;
        }
        byte kop = (byte)(kopDiff % 100);
        return new Money(rub, kop);
    }
 
 
}
namespace laba_2_yz_
{
 
    class Program
    {
        public static Money Read() // Ввод с клавиатуры значений
        {
            long Rub = 0;
            byte Kop = 0;
            Money dengi1  = new Money(Rub, Kop);
            do
            {
                Console.WriteLine("Задавать только корректные данные! \n");
                Console.Write("Ввести рубли: ");
                string input = Console.ReadLine();
                try
                {
                    Rub = Convert.ToChar(input);
                }
                catch { Rub = -1; continue; }
                Console.Write("Ввести копейки: ");
                input = Console.ReadLine();
                try
                {
                    Kop = Convert.ToByte(input);
                }
                catch { Rub = -1; continue; }
            }
            while (!dengi1.Init(Rub, Kop));
            dengi1.Rub = Rub;
            dengi1.Kop = Kop;
            return dengi1;
        }
        public static void Display(long rub, byte kop)
        {
            //Money dengi = new Money(rub, kop);
            Console.WriteLine($"У вас  {rub}  рублей  и {kop} копеек");
            //Console.WriteLine($"Операция {dengi.}");
        }
        static void Main(string[] args)
        {
            long rub;
            byte kop;
 
            Money money = new Money(rub,kop);
            int num;
            while (true)
            {
                Console.Write("Введите 1 для ввода с клавиатуры чисел(Если желаете выйти, то введите 0) : ");
                try
                {
                    num = Convert.ToInt32(Console.ReadLine());
                }
                catch (FormatException) { num = 2; }
                if (num == 0) break;
                if (num > 1)
                {
                    Console.WriteLine("\nНе верно задан параметр!\n");
                    continue;
                }
                //Console.WriteLine("Ваш выбор: " + num);
                switch (num)
                {
                    case 1:
                        money = Read();
                        
                        Display(rub, kop);
                        break;
                }
                /*-----------------------------------------------------------------------------*/
                // Проверка массива на корректность данных
                try
                {
     
                }
                catch { }
                //Проверка на корректность данных -  данные введены верно!
                try
                {
                    Console.WriteLine("\nПроверка на корректность данных: ");
                    
                }
                catch { }
                // Проверка на корректность данных - не верное введены данные!
                try
                {
                    Console.WriteLine("\nПроверка на корректность данных: ");
                    
                }
                catch { }
                /*-----------------------------------------------------------------------------*/
            }
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.10.2021, 12:10
Ответы с готовыми решениями:

Сложение и вычитание, умножение и деление, сравнение сумм
Уважаемые форумчане! помогите, пожалуйста, нужно написать программу для работы с устаревшей денежной системой Великобритании. В ней...

IDEA умножение на дробное число / деление
Пытаюсь реализовать умножение, умножение на дробное число и деление(в рублях и копейках), но выдает не верный результат, не пойму почему,...

Нужны советы как реализовать сложение, вычитание, умножение полиномов/многочленов и деление на число
Всем здравствуйте! надеюсь написать с вашей помощью программку для сложения, вычитания и умножения полиномов, а также деления на число....

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.10.2021, 12:10
Помогаю со студенческими работами здесь

Деление на дробное число
Добрый день. Помогите пожалуйста, только начинаю изучать паскаль. Подскажите, как поделить в Паскале на дробное число? И возможно ли...

Дробное число при деление в StringGride
При запуске получаю результат в 39 строке после запуска делит но округляя а мне надо что бы дробные были. Как это сделать ? ...

Реализовать метод multiply() - умножение на произвольное дробное число типа double
Поле first-дробное число,целая часть числа; поле second-положительное дробное число,дробная часть числа.реализовать метод...

Реализовать метод multiply() - умножение на произвольное дробное число типа double
Поле first-дробное число,целая часть числа; поле second-положительное дробное число,дробная часть числа.реализовать метод...

Умножение, деление, сложение и вычитание
Возможно ли с помощью команд DOS, реализовать хотя бы одну операцию, из Арифметических действий?


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Переходник 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
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru