Использование стандартных интерфейсов - C#

Узнай цену своей работы

Формулировка задачи:

Создать собственный класс, обладающий строковыми и числовыми свойствами (например, имя и возраст для человека). Обеспечить возможность использования метода Sort() для сортировки элементов массива объектов данного класса следующими двумя способами: 1) сортировка объектов данного класса по их строковому представлению посредством реализации метода CompareTo() интерфейса IComparable; 2) сортировка в обратном порядке объектов данного класса по одному или нескольким числовым свойствам (можно использовать их комбинацию, в том числе и со строковыми свойствами) посредством объявления дополнительного класса SortTest, реализующего метод Compare() интерфейса IComparer. Продемонстрировать в программе работу метода Sort() обоими способами.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    class Program
    {
        public class human : IComparable<human>
        {
            public string name;
            public int age;
            public int height;
 
            public int CompareTo(human obj)
            {
                if (this.name.CompareTo(obj.name) > 0)
                    return 1;
                if (this.name.CompareTo(obj.name) < 0)
                    return -1;
                else
                    return 0;
            }
 
            public human(string n, int a, int h)
            { name = n; age = a; height = h; }
            
        }
 
        public class SortTest : IComparer<human>
        {
            public int Compare(human x, human y)
            {
                if (x.age < y.age)
                    return 1;
                if (x.age > y.age)
                    return -1;
                else return 0;
            }
        }
 
        public static human[] Sort(human[] people)
        {
            human[] mass = people;
            int num_change = 0;
            do
            {
                num_change = 0;
                for (int i = 0; i < mass.Length - 1; i++)
                    if (mass[i].CompareTo(mass[i + 1]) > 0)
                    {
                        human h = mass[i];
                        mass[i] = mass[i + 1];
                        mass[i + 1] = h;
                        num_change++;
                    }
 
            } while (num_change != 0);
            return mass;
        }
 
        //public static human[] SortReverse(human[] people)
        //{
        //    human[] mass = people;
        //    int num_change = 0;
        //    do
        //    {
        //        num_change = 0;
        //        for (int i = 0; i < mass.Length - 1; i++)
        //            if (mass[i].Compare(mass[i + 1]) > 0)
        //            {
        //                human h = mass[i];
        //                mass[i] = mass[i + 1];
        //                mass[i + 1] = h;
        //                num_change++;
        //            }
 
        //    } while (num_change != 0);
        //    return mass;
        //}
 
        static void Main(string[] args)
        {
            human[] people = new human[5];
 
            people[0] = new human("C", 30, 170);
            people[1] = new human("D", 40, 180);
            people[2] = new human("B", 20, 160);
            people[3] = new human("E", 50, 190);
            people[4] = new human("A", 10, 150);
 
            foreach (human hum in people)
                Console.WriteLine(hum.name + " " + hum.age + " " + hum.height);
 
            people = Sort(people);
            Console.WriteLine("------------------");
            foreach (human hum in people)
                Console.WriteLine(hum.name + " " + hum.age + " " + hum.height);
 
        }

    }
}
Не понимаю что с классом SortTest делать и как с его помощью отсортировать мне?..

Решение задачи: «Использование стандартных интерфейсов»

textual
Листинг программы
public static human[] Sort(human[] people)
        {
             Array.Sort(people, new SortTest());
             return people;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.4 из 5
Похожие ответы