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

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


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

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

15   голосов , оценка 4.333 из 5