Как сравнить объекты между собой, которые еще являются массивами?

66
25 октября 2021, 08:30

Мне нужно сравнить объекты между собой, которые еще являются массивами. Потом сортировать их методом пузырька. Мне нужно сортировать по capacitylamp. Помогите пожалуйста. Я знаю, что у меня тут сортировка вообще не правильная и надо использовать CompareTo. За плохой код не судите строго,пожалуйста. Код:

using System; 
namespace Laba_6 {
    class Lampa : IComparable<Lampa>
    {
        public string typelamp;
        public int capacitylamp;
        public int c_outlamp;
        public Lampa(string typelamp, int capacitylamp, int c_outlamp)
        {
            this.typelamp = typelamp; 
            this.capacitylamp = capacitylamp;
            this.c_outlamp = c_outlamp;
        }
        public int CompareTo(Lampa p)
        {
            return this.capacitylamp.CompareTo(p.capacitylamp);
        }
        class Lamps //класс для хранения множества элементов, класс контейнер
        {
            Lampa[] Lampas = new Lampa[4]; //массив содежащий 7 элементов
            public Lampa this[int pos]
            {
                get //проверка количества элементов массива
                {
                    if (pos >= 0 || pos < 4) return Lampas[pos];
                    else throw new IndexOutOfRangeException("Вне диапазона!");
                }
                set { Lampas[pos] = value; }
            }
        }
        class Program
        {
            public void Sortbubble()
            {
                for (int i = 0; i < 4; i++)
                {
                    for (int j = i + 1; j < 4; j++)
                    {
                        if (Lampaas[i] > Lampaas[j])
                        {
                            int t = Lampaas[i];
                            Lampaas[i] = massiv[j];
                            massiv[j] = t;
                        }
                    }
                }
            }
            static void Main(string[] args)
            {
                Lamps Lampaas = new Lamps();
                Lampaas[0] = new Lampa("Накаливание", 100, 100);
                Lampaas[1] = new Lampa("Светодиодная", 20, 100);
                Lampaas[2] = new Lampa("Люминесцентные", 50, 100);
                Lampaas[3] = new Lampa("Галогенная", 150, 150);
                Lampa[] massiv = new Lampa[] { Lampaas[0], Lampaas[1], Lampaas[2], Lampaas[3], Lampaas[4], Lampaas[5], Lampaas[6], Lampaas[7] };
                Console.ForegroundColor = ConsoleColor.Green;
                Program sort = new Program();
                Console.WriteLine();
                sort.Sortbubble();
                for (int b = 0; b < 4; b++)
                {
                    Console.WriteLine($"Тип лампы: {Lampaas[b].typelamp}. Потребляемая мощность: {Lampaas[b].capacitylamp} Вт. Выходная мощность {Lampaas[b].c_outlamp} Вт.");
                    Console.WriteLine();
                }
                Console.ReadKey();
            }
        }
    } 
}
Answer 1

Вы на верном направлении. Просто используйте метод CompareTo, который уже реализовали в классе Lampa.

В методе SortBubble должно быть:

if (Lampaas[i].CompareTo(Lampaas[j]) > 0)
{
    var t = Lampaas[i];
    Lampaas[i] = Lampaas[j];
    Lampaas[j] = t;
}
READ ALSO
Странное поведение Application.Quit();

Странное поведение Application.Quit();

На андроиде метод ApplicationQuit() не выходит полностью из приложения, оно просто сворачивается и выкидывает на рабочий стол, если развернуть его,...

264
Как отслеживать попадания label в panel

Как отслеживать попадания label в panel

Объясните, как можно отслеживать label, когда он попадает в panel с drag and dropФайлы как перемещать нашел, а как это делать с внутренними объектами...

158
Ошибка при отправке сообщения

Ошибка при отправке сообщения

Пытаюсь реализовать чат при помощи Signalr, для примера нашел исходник проекта, установил все необходимые npm модули, все запускается и работает

171
RestSharp. Отправка POST запроса с телом form-data, состоящим из нескольких файлов и текстовых полей

RestSharp. Отправка POST запроса с телом form-data, состоящим из нескольких файлов и текстовых полей

Подскажите, пожалуйста, как я могу отправить POST запрос с телом form-data, состоящим из нескольких файлов и текстовых полей используя RestSharp?

186