Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> десятичный счетчик, исправить немного 
V
    Опции темы
aleeex
  Дата 17.12.2010, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.12.2010

Репутация: нет
Всего: нет



Задание: Описать класс, реализующий десятичный счетчик, который может увеличивать или уменьшать свое значение на единицу в заданном диапазоне. Предусмотреть инициализацию счетчика значениями по умолчанию и произвольными значениями. Счетчик имеет два метода: увеличения и уменьшения, — и свойство, позволяющее получить его текущее состояние. При выходе за границы диапазона выбрасываются исключения. 
Написать программу, демонстрирующую все разработанные элементы класса.

сама программа:
Код

using System;
 
namespace App
{
    class Counter
    {
        int count;
        int max;
        int min;
        public Counter()
        {
            this.count = 0;
            this.min = 0;
            this.max = 100;
        }
        public Counter(int min_, int max_)
        {
            this.min = min_;
            this.max = max_;
            Random rnd = new Random();
            this.count = rnd.Next(this.min, this.max);
        }
        public int Count
        {
            get
            {
                return this.count;
            }
        }
        public static Counter operator ++(Counter Ob)
        {
            if (++Ob.count > Ob.max)
                throw new Exception("Range error");
            return Ob;
        }
        public static Counter operator --(Counter Ob)
        {
            if (--Ob.count < Ob.min)
                throw new Exception("Range error");
            return Ob;
        }
    }
 
    class Applic
    {
        static void Main()
        {
            int min = 0, max = 0;
            Console.WriteLine("Enter minimum: ");
            min = int.Parse(Console.ReadLine());
            Console.WriteLine("Enter maximum: ");
            max = int.Parse(Console.ReadLine());
            Counter Obj = new Counter(min, max);
            try
            {
                Obj++;
                Console.WriteLine(Obj.Count);
                Obj--;
                Console.WriteLine(Obj.Count);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                Console.ReadKey();
            }
        }
    }
}


Помогите сделать так чтобы увеличение и уменьшение происходило с помощью методов, а не с помощью операторов.
Пробовала заменить на 
Код

public Counter increment()
        {
            return new Counter(++this.count);
        }
 
        public Counter decrement()
        {
            return new Counter(--this.count);
        }

но вылазеет 2 ошибки.
PM MAIL   Вверх
Fortnox
Дата 17.12.2010, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: 2
Всего: 22



А зачем возвращать новый счетчик? Нужно ведь, просто увеличить значение:
Код

    public class Counter
    {
        public int Min { get; private set; }
        public int Max { get; private set; }
        public int Current { get; private set; }

        public Counter(int min, int max, int current)
        {
            Min = min;
            Max = max;
            Current = current;
        }

        public Counter(int min, int max)
        {
            Min = min;
            Max = max;
            Current = new Random().Next(min, max);
        }

        public void Increase()
        {
            if (++Current > Max)
                throw new Exception();
        }

        public void Decrease()
        {
            if (--Current < Min)
                throw new Exception();
        }
    }


Это сообщение отредактировал(а) Fortnox - 17.12.2010, 22:25
PM MAIL   Вверх
aleeex
  Дата 17.12.2010, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.12.2010

Репутация: нет
Всего: нет



Это уже другой код программы...
а как сделать в моём? 
PM MAIL   Вверх
Fortnox
Дата 17.12.2010, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: 2
Всего: 22



Просто вставить методы Increase и Decrease, и чуть подправить названия свойств:
Код

using System;
 
namespace App
{
    class Counter
    {
        int count;
        int max;
        int min;
        public Counter()
        {
            this.count = 0;
            this.min = 0;
            this.max = 100;
        }
        public Counter(int min_, int max_)
        {
            this.min = min_;
            this.max = max_;
            Random rnd = new Random();
            this.count = rnd.Next(this.min, this.max);
        }
        public int Count
        {
            get
            {
                return this.count;
            }
        }
        public void Increase()
        {
            if (++count > max)
                throw new Exception();
        }

        public void Decrease()
        {
            if (--count < min)
                throw new Exception();
        }
    }
 
    class Applic
    {
        static void Main()
        {
            int min = 0, max = 0;
            Console.WriteLine("Enter minimum: ");
            min = int.Parse(Console.ReadLine());
            Console.WriteLine("Enter maximum: ");
            max = int.Parse(Console.ReadLine());
            Counter Obj = new Counter(min, max);
            try
            {
                Obj.Increase();
                Console.WriteLine(Obj.Count);
                Obj.Decrease();
                Console.WriteLine(Obj.Count);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                Console.ReadKey();
            }
        }
    }
}


Это сообщение отредактировал(а) Fortnox - 17.12.2010, 23:23
PM MAIL   Вверх
aleeex
Дата 17.12.2010, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.12.2010

Репутация: нет
Всего: нет



Большое спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0941 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.