Использование стандартных интерфейсов - C#
Формулировка задачи:
Создать собственный класс, обладающий строковыми и числовыми свойствами (например, имя и возраст для человека).
Обеспечить возможность использования метода Sort() для сортировки элементов массива объектов данного класса следующими двумя способами:
1) сортировка объектов данного класса по их строковому представлению посредством реализации метода CompareTo() интерфейса IComparable;
2) сортировка в обратном порядке объектов данного класса по одному или нескольким числовым свойствам (можно использовать их комбинацию, в том числе и со строковыми свойствами) посредством объявления дополнительного класса SortTest, реализующего метод Compare() интерфейса IComparer.
Продемонстрировать в программе работу метода Sort() обоими способами.
Не понимаю что с классом SortTest делать и как с его помощью отсортировать мне?..
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); } } }
Решение задачи: «Использование стандартных интерфейсов»
textual
Листинг программы
public static human[] Sort(human[] people) { Array.Sort(people, new SortTest()); return people; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д