Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2014, 19:58   #1
BaTpyXaaa
Пользователь
 
Регистрация: 06.11.2013
Сообщений: 40
Восклицание Сравнение экземпляров класса

Необходимо написать метод "Comp" для class Date (сравнение дат), class Triad ( сравнения сум триад).
Трудность в том, как сделать сравнение Triad 1 c Triad 2....... ...... ...... Triad 5 c Triad 6,
аналогично с датой Date 7 с Date 8 .... Date 9 c Date 10 .... Date 11 c Date 12 .
Помогите пожалуйста.

Код:
using System;
namespace eeeeeeeeeee
{
    public abstract class NUMBER
    {
        public int n1;
        public int N1 { get { return n1; } set { n1 = value; } }
        public int n2;
        public int N2 { get { return n2; } set { n2 = value; } }
        public int n3;
        public int N3 { get { return n3; } set { n3 = value; } }
        public abstract void Comp();
        public NUMBER(int N1, int N2, int N3) {this.N1 = N1;this.N2 = N2;this.N3 = N3; }
    }
    class TRIAD : NUMBER
    {      
        public TRIAD(int P1, int P2, int P3) : base(P1, P2, P3) { }
        public override void Comp()
        {
            Console.Write("TRIAD: {0}.{1}.{2}", n1, n2, n3);
        }
    }
    class DATE : TRIAD
    {
        public DATE(int P1, int P2, int P3) : base(P1, P2, P3) { }
        public override void Comp()
        {
            Console.Write("DATE:  {0}.{1}.{2}", n1, n2, n3);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            int ColSize = 10;
            int i, e1, e2, e3;
                  Random random = new Random();   
                  TRIAD[] Collection = new TRIAD[ColSize];
            for (i = 0; i < ColSize; i++)
            {
               e1 = (int)random.Next(0, 10);    e2 = (int)random.Next(0, 10);   e3 = (int)random.Next(0, 1994);
               Collection[i] = (i < 6 ? new TRIAD(e1, e2, e3) : new DATE(e1, e2, e3));
            }
            Console.WriteLine();
                    foreach (TRIAD ddd in Collection)
                    {
                         ddd.Comp();
                    }
            Console.ReadLine();
        }
    }
}
Как сделать сравнения дат между собой?
Как сделать сравнения сумм триад между собой?
BaTpyXaaa вне форума Ответить с цитированием
Старый 17.12.2014, 20:13   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Наверное нужно перегрузить оператор ==, если он перегружаем.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.12.2014, 20:24   #3
BaTpyXaaa
Пользователь
 
Регистрация: 06.11.2013
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Наверное нужно перегрузить оператор ==, если он перегружаем.
Оператор где? Перегрузить что?
Я имел ввиду, что писать в самом методе, какие параметры, что бы при вызыве сравнивались 2 экземпляра.
Проблема в написании кода.

Последний раз редактировалось BaTpyXaaa; 17.12.2014 в 20:41.
BaTpyXaaa вне форума Ответить с цитированием
Старый 17.12.2014, 22:03   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Странное задание. (или существующий код)

А что делать если сравнивают Triad с Date?

Вообще метод Comp должен принимать другой объект для сравнения.
И лучше не сразу в нем выводить в консоль, а возвращать что-то (например, 0 — равны, -1 — объект в параметре больше, 1 — объект в параметре меньше) и выводить уже в том месте, где его вызываете.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 18.12.2014 в 10:24.
Alex11223 вне форума Ответить с цитированием
Старый 17.12.2014, 22:32   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а что вы не можете написать метод который принимает параметром объект нужного типа и там сравнивает его?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.12.2014, 09:08   #6
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Цитата:
Трудность в том, как сделать сравнение Triad 1 c Triad 2
Можно сделать двойной цикл
Код:
for (int i = 0 ; i < ColSize; i++)
  for (int j = i+1 ; j < ColSize; j++)
  {
     Collection[i].Comp(Collection[j]);
  }
Само сравнение тоже оч просто:
Код:
public override void Comp(TRIAD triad)
{
    if (n1==triad.n1 &&n1==triad.n1&&n1==triad.n1)
        Console.WriteLine("{0} is equal to {1}", this, triad);
    else
        Console.WriteLine("{0} is NOT equal to {1}", this, triad);
    // плюс какие-нибудь другие проверки на равенство/неравество/больше/меньше
}
Чтобы консоль.райтлайн работал, надо ещё
Код:
public override string ToString()
{
    return string.Format("TRIAD:  {0}.{1}.{2}", n1, n2, n3);
}
Для дат ессно всё аналогично.

Сами критерии сравнения за Вас никто не придумает, т.к. во-первых, никому не надо, кроме Вас самих, во-вторых никто и не знает, кроме Вас, как определить что меньше, что больше и т.п.
phomm вне форума Ответить с цитированием
Старый 18.12.2014, 17:38   #7
BaTpyXaaa
Пользователь
 
Регистрация: 06.11.2013
Сообщений: 40
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
Можно сделать двойной цикл
Код:
for (int i = 0 ; i < ColSize; i++)
  for (int j = i+1 ; j < ColSize; j++)
  {
     Collection[i].Comp(Collection[j]);
  }
Само сравнение тоже оч просто:
Код:
public override void Comp(TRIAD triad)
{
    if (n1==triad.n1 &&n1==triad.n1&&n1==triad.n1)
        Console.WriteLine("{0} is equal to {1}", this, triad);
    else
        Console.WriteLine("{0} is NOT equal to {1}", this, triad);
    // плюс какие-нибудь другие проверки на равенство/неравество/больше/меньше
}
Чтобы консоль.райтлайн работал, надо ещё
Код:
public override string ToString()
{
    return string.Format("TRIAD:  {0}.{1}.{2}", n1, n2, n3);
}
Для дат ессно всё аналогично.

Сами критерии сравнения за Вас никто не придумает, т.к. во-первых, никому не надо, кроме Вас самих, во-вторых никто и не знает, кроме Вас, как определить что меньше, что больше и т.п.
Спасибо
BaTpyXaaa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объявление экземпляров класса Jaguar83 Общие вопросы C/C++ 1 29.04.2014 14:57
Сравнение экземпляров класса (C++) Кирилл Романов Помощь студентам 3 01.11.2013 23:53
массив экземпляров класса flibustier912 Visual C++ 1 05.05.2012 01:00
Создание экземпляров класса MuradS60 Общие вопросы C/C++ 1 01.04.2012 18:21
Копирование экземпляров класса 3D Hunter Общие вопросы Delphi 14 29.08.2011 12:46