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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д