Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/30: Рейтинг темы: голосов - 30, средняя оценка - 4.53
 Аватар для chaosfall
4 / 1 / 2
Регистрация: 04.12.2010
Сообщений: 65

Сортировка списка List<T>

26.03.2011, 15:14. Показов 5822. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
• Во всех задачах подразумевается, что исходная информация хранится в текстовом файле input.txt, каждая строка которого содержит полную информацию о некотором объекте, результирующая информация должна быть записана в файл output.txt.
• Для хранения данных внутри программы организовать массив структур.
• В типе структура реализуется метод CompareTo интерфейса IComparable, перегружается метод ToString базового класса object и необходимые операции отношения, поля данных и дополнительные методы продумайте самостоятельно.
На основе данных входного файла составить багажную ведомость камеры хранения, включив следующие данные: ФИО пассажира, количество вещей, общий вес вещей. Вывести в новый файл информацию о тех пассажирах, средний вес багажа которых превышает заданный, отсортировав их по количеству вещей, сданных в камеру хранения.
В общем, при реализации решила не организовывать массив структур, а вместо этого воспользоваться типом List<T>. И теперь никак не получается отсортировать этот список..

компилятор не воспринимает строку
C#
1
Array.Sort<LuggInfo>(newM);
пишет:
Ошибка 1 Наиболее подходящий перегруженный метод для "System.Array.Sort<Luggage.LuggInfo>(Lug gage.LuggInfo[])" имеет несколько недопустимых аргументов
Ошибка 2 Аргумент "1": преобразование типа из "System.Collections.Generic.List<Luggage .LuggInfo>" в "Luggage.LuggInfo[]" невозможно
подскажите, пожалуйста, как передать в метод Sort не массив, а список List<T> и нужно ли вносить какие-то изменения в метод CompareTo интерфейса IComparable, либо вообще использовать другой интерфейс?
Или лучше вообще отказаться от списка, и использовать массив структур, как и было задумано?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace Luggage
{
    struct LuggInfo:IComparable
        //IComparer<LuggInfo>
    {
        string name;
        int amount;
        int weight;
 
        public LuggInfo(string n, int a, int w)
        {
            this.name = n;
            this.amount = a;
            this.weight = w;
        }
        public int countAvWeight()
        {
            int avWeight;
            avWeight = this.amount*this.weight;
            return avWeight;
        }
        public int CompareTo(object b)
        {
            LuggInfo a = (LuggInfo)b;
            if (this.countAvWeight() == a.countAvWeight()) return 0;
            else if (this.countAvWeight() > a.countAvWeight()) return 1;
            else return -1;
        }
        public override string ToString()
        {
            string i = "кг", k = "шт.";
            return "" + name+"\t" + amount.ToString() +" "+k+"\t" + weight.ToString() +""+i+"";
        }  
    }
    class Program
    {
 
        public static List<LuggInfo> getStructures(List<LuggInfo> tempM)
        {
            StreamReader input = new StreamReader(@"D:\\input.txt");
            string line;
            int count = 1;
            while ((line = input.ReadLine()) != null)
            {
                string[] lines = new string[2];
                lines = line.Split(',');
                string tempName = lines[0];
                int tempAmount = int.Parse(lines[1]);
                int tempWeight = int.Parse(lines[2]);
                LuggInfo item = new LuggInfo(tempName, tempAmount, tempWeight);
                tempM.Add(item);
                Console.WriteLine(count+". " +item);
                count++;
            }
            input.Close();
            return tempM;
        }
        public static List<LuggInfo> find(List<LuggInfo> tempM, int limit)
        {
            List<LuggInfo> nmass = new List<LuggInfo>();
            foreach (LuggInfo item in tempM)
            {
                if (item.countAvWeight() > limit)
                nmass.Add(item);
            }
 
            return nmass;
        }
 
        static void Main(string[] args)
        {
            List<LuggInfo> tempM = new List<LuggInfo>();
            List<LuggInfo> newM = new List<LuggInfo>();
            Console.WriteLine("Неотсортированный список.");
            tempM = getStructures(tempM);
            Console.Write("Введите заданный вес: ");
            int limit = int.Parse(Console.ReadLine());
            newM = find(tempM, limit);
 
            Array.Sort<LuggInfo>(newM);
            
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.03.2011, 15:14
Ответы с готовыми решениями:

Сортировка списка list
Здравствуйте, знатоки ! Нашел код приведенный ниже на msdn, свою задачу он выполняет - сортирует список по именам XE1, XE2,....XO1, XO2,...

Сортировка списка List<T>
Помогите отсортировать список Есть объект класса Class с public полями FirstName, LastName, Company public Employee(int length,...

Сортировка списка List
Помогите, пожалуйста, решить проблему с сортировкой. Есть набор сущностей Человек, Ученик, Преподаватель, Студент, Аспирант, Рабочий. В...

2
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
26.03.2011, 15:19
chaosfall, у коллекций есть собственный расширяющий метод Sort. http://msdn.microsoft.com/ru-r... bh7b6.aspx
1
 Аватар для chaosfall
4 / 1 / 2
Регистрация: 04.12.2010
Сообщений: 65
26.03.2011, 15:24  [ТС]
nio, спасибо! изменила строку на " newM.Sort();", вроде все заработало
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.03.2011, 15:24
Помогаю со студенческими работами здесь

Сортировка списка List<string>
Задача - Получить отсортированный список полных имен файлов. Проблема в том, что когда файлы с однотипными названиями и номером на...

Неправильная сортировка списка list.Sort();
Неправильная сортировка списка list.Sort(); Входные данные a1|+74951234567 A1|+78885005500 джигурда|+74956666667 ...

Сортировка списка с учетом регистра list.Sort()
Не могу разобраться как сделать сортировку такого типа: Сначала все с заглавных букв по алфавиту, затем со строчных по алфавиту ...

Сортировка List с двумя параметрами списка вызывает ошибку
Добрый день уважаемые форумчане, помогите отсортировать список. Список объявляю так: List&lt;KeyValuePair&lt;string,int&gt;&gt; Node; ...

Инициализация элементов списка списков (List<List>) происходит одинаково для каждого элемента
Доброго времени суток. Не знаю как лучше озаглавить эту тему, но у меня проблема со следующим участком кода: using System; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru