List sort & find - C#
Формулировка задачи:
Доброе утро! Не знаю в ту ли ветку пишу, так что не пинайти
До вечера надо мне узнать!
1) Как реализовать Сорт листа, по признаку (С исп интерфейса IComparer)
Все уже написано, просто в осн програме было для array.sort( namemas, new MyClass.SortByName() )
SorttByname я сам и прописал в myclass
Как это выглядит для листа, оч прошу помочь!
2)Как реализовать Поиск по признаку? (В листе есть стринг имени и инт аммо)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Collections; namespace ConsoleApplication1 { class Monster { private string name; private int ammo, health; public Monster(int health, int ammo, string name) { this.health = health; this.ammo = ammo; this.name = name; } public int Ammo { get { return ammo; } set { if (value > 0) ammo = value; else ammo = 0; } } public string Name { get { return name; } } public void Passport() { Console.WriteLine("Monster {0} \t health = {1} ammo = {2} ", name, health, ammo); } public class SortByName : IComparer { int IComparer.Compare(object ob1, object ob2) { Monster m1 = (Monster)ob1; Monster m2 = (Monster)ob2; return String.Compare(m1.Name, m2.Name); } } public class SortByAmmo : IComparer { int IComparer.Compare(Object ob1, Object ob2) { Monster m1 = (Monster)ob1; Monster m2 = (Monster)ob2; if (m1.Ammo > m2.Ammo) return 1; else if (m1.Ammo < m2.Ammo) return -1; else return 0; } } } class Program { static void Main(string[] args) { int i = 0, ammo, health; string name; List<Monster> stado = new List<Monster>(); for (i = 0; i < 2; ++i) { Console.WriteLine("Введи хэлз "); health = int.Parse(Console.ReadLine()); Console.WriteLine("Введи Аммо "); ammo = int.Parse(Console.ReadLine()); Console.WriteLine("Введи имя "); name = Console.ReadLine(); stado.Add(new Monster(health, ammo, name)); } foreach (Monster elem in stado) elem.Passport(); /*Console.WriteLine("ПО имение"); Array.Sort(stado, new Monster.SortByName()); foreach (Monster elem in stado) elem.Passport(); Console.WriteLine("По амону"); Array.Sort(stado, new Monster.SortByAmmo()); foreach (Monster elem in stado) elem.Passport();*/ } } }
Решение задачи: «List sort & find»
textual
Листинг программы
stado.Sort(new Monster.SortByName()); //Здесь написано Monster.SortByName, а не просто SortByName //потому что класс SortByName вложен в класс Monster
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д