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

Работа с классом Money

08.04.2013, 22:32. Показов 4623. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста
1.Реализовать определение нового класса (закрытые атрибуты, свойства, конструкторы, вывод атрибутов). Для демонстрации работы с объектами написать главную функцию, в которой создаются объекты класса и с помощью свойств выводится информация, которая содержится в атрибутах.
2.Написать функцию, реализующую указанное в варианте действие. Рассмотреть два варианта
1) глобальную (статическую) функцию;
2) метод класса.
В основной функции продемонстрировать работу функции.
3.Используя статическую компоненту класса подсчитать количество созданных в программе объектов.

Ниже я описала класс, т.е. пункт 1, но не до конца. Как написать главную функцию, в которой создаются объекты класса и с помощью свойств вывести информацию, которая содержится в атрибутах?
Ну и соответственно, как реализовать 2 и 3 пункты?
Спасибо заранее!

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Money
{
    class Money
    {
        int rubles;//рубли
        int kopeks;//копейки
        int value;//вспомогательные копейки
      
        // свойства
        // Количество рублей
        public int Rubles
        { get { return value / 100; } }
        
        // Количество копеек
        public int Kopeks
        { get { return (int)(value % 100); } }
 
        public Money(double value)
        {
            this.value = (int)Math.Round(100 * value, 2);
        }
 
        public Money(int rubles, int kopeks)
        {
            if (kopeks < 0 || kopeks > 99) 
                throw new ArgumentException();
            if (rubles >= 0) 
                value = 100 * rubles + kopeks;
            else 
                value = 100 * rubles - kopeks;
        }
 
        // Вспомогательный конструктор
        private Money(int kopeks)
        { 
            this.value = kopeks; 
        }
            
        public void Init() //инициализация
            {
                Console.WriteLine("Введите рубли");
                rubles = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("Введите копейки"); 
                kopeks = Convert.ToInt32(Console.ReadLine()); 
            }
          
        }
        class Program
        {
            static void Main(string[] args)
            {
              
            }
        }
    }
Добавлено через 21 минуту
C#
1
2
3
4
5
6
7
static void Main(string[] args)
            {
                Money rub = new Money(100);
                Money kop = new Money(10);
                Console.WriteLine("У вас" + rub + "руб." + kop + "коп." );
                Console.ReadLine();
            }
Подскажите пожалуйста, как правильно организовать вывод? как привести типы?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.04.2013, 22:32
Ответы с готовыми решениями:

В класс Money добавить перегрузку преобразования типа Money в string (и наоборот)
Здравствуйте, необходимо в класс Money добавить перегрузку преобразования типа Money в string (и...

Выбор между абстрактным классом, интерфейсом и простым классом
Здравствуйте. Помогите определиться, что следует выбрать в следующей ситуации, а главное почему...

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

9
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
09.04.2013, 11:02
а зачем вы целый руб пытаетесь запихнуть в вывод, почему не rub.Rubles ?
0
 Аватар для Дмитрий3241
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
Записей в блоге: 6
09.04.2013, 11:10
Вам нужно перегрузить метод ToString(). Сделать это можно так:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Money
{
    class Money
    {
        int rubles;//рубли
        int kopeks;//копейки
        int value;//вспомогательные копейки
 
        // свойства
        // Количество рублей
        public int Rubles
        { get { return value / 100; } }
 
        // Количество копеек
        public int Kopeks
        { get { return (int)( value % 100 ); } }
 
        public Money( double value )
        {
            this.value = (int)Math.Round( 100 * value, 2 );
        }
 
        public Money( int rubles, int kopeks )
        {
            if ( kopeks < 0 || kopeks > 99 )
                throw new ArgumentException();
            if ( rubles >= 0 )
                value = 100 * rubles + kopeks;
            else
                value = 100 * rubles - kopeks;
        }
 
        // Вспомогательный конструктор
        private Money( int kopeks )
        {
            this.value = kopeks;
        }
 
        public void Init() //инициализация
        {
            Console.WriteLine( "Введите рубли" );
            rubles = Convert.ToInt32( Console.ReadLine() );
            Console.WriteLine( "Введите копейки" );
            kopeks = Convert.ToInt32( Console.ReadLine() );
        }
 
        public override string ToString()
        {
            return string.Format( "Рублей: {0}, копеек: {1}, вспомогательных копеек: {2}", this.rubles, this.kopeks, this.value );
        } 
 
    }
    class Program
    {
        static void Main( string[] args )
        {
            Money m = new Money( 10, 50 );
            Console.Write( m.ToString() );
        }
    }
}
И кто такие вспомогательные копейки?
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
09.04.2013, 11:15
Да не надо ей ничего перегружать тут, просто достаточно
C#
1
Console.WriteLine("У вас" + rub + "руб." + kop + "коп." );
заменить на
C#
1
Console.WriteLine("У вас" + rub.Rubles + "руб." + kop.Kopeks + "коп." );
0
 Аватар для Дмитрий3241
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
Записей в блоге: 6
09.04.2013, 11:17
Цитата Сообщение от izZy Посмотреть сообщение
Подскажите пожалуйста, как правильно организовать вывод?
Правильно это перезагрузить метод ToString().
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
09.04.2013, 11:23
А теперь вместе читаем =))
1)
Цитата Сообщение от izZy Посмотреть сообщение
Для демонстрации работы с объектами написать главную функцию, в которой создаются объекты класса и с помощью свойств выводится информация, которая содержится в атрибутах.
2)
Цитата Сообщение от izZy Посмотреть сообщение
Как написать главную функцию, в которой создаются объекты класса и с помощью свойств вывести информацию, которая содержится в атрибутах?
0
 Аватар для Дмитрий3241
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
Записей в блоге: 6
09.04.2013, 11:25
С этим согласен, не читал, но вывод все равно правильнее делать через ToString().
И не надо по 100500 раз писать, мне одного достаточно.
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
09.04.2013, 11:29
Как бы то ни было, задача решена =Р
0
 Аватар для MrGladus
178 / 178 / 50
Регистрация: 06.01.2013
Сообщений: 392
09.04.2013, 12:17
Цитата Сообщение от Дмитрий3241 Посмотреть сообщение
public Money( double value )
C#
1
2
3
{
 this.value = (int)Math.Round( 100 * value, 2 );
}
На заметку: для работы с финансовыми вычислениями лучше всего использовать тип decimal, т.к. он для этих целей найбольше всего подходит.
0
0 / 0 / 2
Регистрация: 16.10.2012
Сообщений: 91
09.04.2013, 16:41  [ТС]
всем спасибо! а насчет decimal, по условию везде int должно быть)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.04.2013, 16:41
Помогаю со студенческими работами здесь

Создать класс Money, разработав поля, конструктор, методы, свойства
Добрый день! Помогите, пожалуйста, в решении лабы ) Язык - C#. Очень-очень нужно..и побыстрее) Вот...

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

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

Описать класс Money
Помогите пожалуйста вывести перегрузки)) Вот задание: Создать класс Money, разработав...

Как вычесть копейки из объекта типа Money?
Как вычесть копейки типа int из объекта типа Money? я пробовала перевести все в копейки. static...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru