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

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

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

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

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

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

Помогите с заданием. Необходимо составить 2 класса(Date, Triad)

Необходимо:
1) В Классе Date: сравнивать даты между собой.
2) В Классе Triad: сравнить триады между собой(их суммы).


Есть код сравнения чисел (Date, Triad), а надо сравнения экземпляров.

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace MyEquations
{

    public abstract class Numbers
    {
        int n1; public int N1 { get { return n1; } set { n1 = value; } }
        int n2; public int N2 { get { return n2; } set { n2 = value; } }
        int n3; public int N3 { get { return n3; } set { n3 = value; } }
        public Numbers(int N1, int N2, int N3) { this.N1 = N1; this.N2 = N2; this.N3 = N3; }
        public abstract void Compare();
    }
    class TRIAD : Numbers
    {
        public TRIAD(int P1, int P2, int P3) : base(P1, P2, P3) { }
        public override void Compare()
        {
            Console.Write("Date: {0}.{1}.{2}", N1, N2, N3);
            if (N1 > N2 && N1 > N3) Console.WriteLine(" Max: {0}",N1);
            else if (N2 > N1 && N2 > N3) Console.WriteLine(" Max: {0}", N2);
            else if (N3 > N1 && N3 > N2) Console.WriteLine(" Max: {0}", N3);
            else if (N1 == N2 && N1 == N3 && N2 == N3) Console.WriteLine(" Same: {0}", N1,N2,N3);
        }
    }
    class DATE : TRIAD
    {
        public DATE(int P1, int P2, int P3) : base(P1, P2, P3) { }
        public override void Compare()
        {
            Console.Write("Triad: {0}.{1}.{2}", N1, N2, N3);
            if (N1 > N2 && N1 > N3) Console.WriteLine(" Max: {0}", N1);
            else if (N2 > N1 && N2 > N3) Console.WriteLine(" Max: {0}", N2);
            else if (N3 > N1 && N3 > N2) Console.WriteLine(" Max: {0}", N3);
            else if (N1 == N2 && N1 == N3 && N2 == N3) Console.WriteLine(" Same: {0}", N1, N2, N3);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            int Size = 10; int i;
            Random rand = new Random();
            int n1, n2, n3;
            TRIAD[] Collection = new TRIAD[Size];
            for (i = 0; i < 10; i++)
            {
                n1 = (int)rand.Next(0, 10);
                n2 = (int)rand.Next(0, 10);
                n3 = (int)rand.Next(0, 10000);
                Console.WriteLine("{1}  {2}  {3}", i + 1, n1, n2, n3);
                Collection[i] = (i < 5  
                    ? new TRIAD(n1, n2, n3) 
                    : new DATE(n1, n2, n3));
            }
            Console.WriteLine(); i = 0;
            foreach (TRIAD Equation in Collection)
            {
                Console.Write(++i+" "); Equation.Compare(); 
            }
            Console.ReadLine();
        }
    }
}
Как сделать сравнения дат между собой?
Как сделать сравнения сумм триад между собой?
BaTpyXaaa вне форума Ответить с цитированием
Старый 09.12.2014, 19:26   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Наверно тут хотели, чтоб вы какой-нибудь IComparable реализовали, а не свой с выводом в консоль изобретали.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 09.12.2014, 20:00   #3
BaTpyXaaa
Пользователь
 
Регистрация: 06.11.2013
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Наверно тут хотели, чтоб вы какой-нибудь IComparable реализовали, а не свой с выводом в консоль изобретали.
Нужен свой

Пример:
Date_1 <11.12.1900> < Date_2 <23.11.2222>
Date_3 <22.02.2300> > Date_4 <12.22.2000>
Date_4 <44.44.4444> = Date_5 <44.44.4444>

Triad_sum_1 <23232> < Triad_sum_2 <312313212>
Triad_sum_3 <99999> > Triad_sum_4 <100000003>
Triad_sum_5 <00000> = Triad_sum_6 <00000>
BaTpyXaaa вне форума Ответить с цитированием
Старый 09.12.2014, 20:15   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

Последний раз редактировалось Alex11223; 09.12.2014 в 20:17.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Полиморфизм Anubys Помощь студентам 1 26.12.2011 20:42
Полиморфизм Zorgan Visual C++ 22 29.08.2011 12:23
Полиморфизм MasterSporta Общие вопросы C/C++ 3 10.04.2011 23:46
полиморфизм slayerblya Общие вопросы C/C++ 1 27.02.2011 01:43
Полиморфизм mister2010 Общие вопросы C/C++ 30 24.05.2010 01:07