4 / 2 / 1
Регистрация: 29.11.2012
Сообщений: 495
1

Как отсортировать список по именам и как отсортировать дату рождения в обратном порядке

11.10.2019, 03:56. Показов 4105. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.
Получилось только вывести на экран список, вывести на экран отсортированный список по дате рождения.
У меня не получается отсортировать по именам и в обратном порядке. Выводит ошибку.
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
using System;
using System.Collections.Generic;
using static System.Console;
/*
 * Создать класс "Учащийся". В классе должны быть свойства "Имя" и "Дата рождения".
 * Для даты рождения использовать тип DateTime.
Создать список учащихся (используя обобщенный класс List<T>),
заполнить несколькими учащимися.
Вывести список на экран.
Отсортировать список по именам, используя Sort с лямбда-функцией.
Вывести список на экран.
Отсортировать список по датам рождения, используя IComparer.
Вывести список на экран.
Отсортировать список по датам рождения в обратном порядке.
Вывести список на экран.
 */
namespace del2
{
    class Student
    {
        public string name { get; set; } = "NN";
        public int DateTime { get; set; } = 04051991;
 
        public override string ToString()
        {
            return name + " " + DateTime;
        }
    }
 
    static class Ex
    {
        static public void Print(this List<Student> list)
        {
            foreach (var el in list)
            {
                Write(el + " ");
            }
            WriteLine();
        } 
    }
 
    class MainClass
    {
        public static void Main(string[] args)
        {
            List<Student> list = new List<Student>();
            list.Add(new Student() { name = "Student3", DateTime = 028041981 });
            list.Add(new Student() { name = "Student2", DateTime = 04051991 });
            list.Add(new Student() { name = "Student1", DateTime = 06041970 });
            list.Add(new Student() { name = "Student4", DateTime = 25051931 });
            list.Add(new Student() { name = "Student5", DateTime = 10071958 });
            list.Print();
            //list.Sort((Student x, Student y) => x.name.CompareTo(y.name));
            //list.Print();
            list.Sort((Student x, Student y) => x.DateTime.CompareTo(y.DateTime));
            list.Print();
            IComparer<Student> To_data = new To_Data();
            list.Sort(To_data);
            list.Print();
        }
    }
    class To_Data : IComparer<Student>
    {
        int IComparer<Student>.Compare(Student x, Student y)
        {
            return x.DateTime - y.DateTime;
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2019, 03:56
Ответы с готовыми решениями:

Как отсортировать словарь в обратном лексикографическом порядке
Я формирую словарь из потока текста в котором считаю как часто используется слово в тексте. В...

Как отсортировать слова в обратном алфавитному порядке
Как отсортировать слова в обратном алфавитному порядке?

Отсортировать список в алфавитном порядке по фамилии, а затем по возрастанию года рождения
В текстовом файле содержатся записи о студентах. Для каждого студента известны его фамилия, имя,...

Отсортировать список студентов по фамилии в обратном алфавитному порядке
Составить список, содержащий сведения об N студентах. Для каждого учащегося указать фамилию, дату...

5
4 / 2 / 1
Регистрация: 29.11.2012
Сообщений: 495
11.10.2019, 03:58  [ТС] 2
Вот, даже не сортируется в обратном порядке.
Миниатюры
Как отсортировать список по именам и как отсортировать дату рождения в обратном порядке  
0
4 / 2 / 1
Регистрация: 29.11.2012
Сообщений: 495
11.10.2019, 03:59  [ТС] 3
Сортирует странно.
Миниатюры
Как отсортировать список по именам и как отсортировать дату рождения в обратном порядке  
0
4 / 2 / 1
Регистрация: 29.11.2012
Сообщений: 495
11.10.2019, 04:01  [ТС] 4
Если смотреть с лева на право, то уже нет сортировки, а если с верху вниз, то она вроде как есть. Я просто не понимаю, что там происходит. И как проверить все ли верно.
0
4 / 2 / 1
Регистрация: 29.11.2012
Сообщений: 495
11.10.2019, 04:08  [ТС] 5
Сделал вот так:
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
using System;
using System.Collections.Generic;
using static System.Console;
/*
 * Создать класс "Учащийся". В классе должны быть свойства "Имя" и "Дата рождения".
 * Для даты рождения использовать тип DateTime.
Создать список учащихся (используя обобщенный класс List<T>),
заполнить несколькими учащимися.
Вывести список на экран.
Отсортировать список по именам, используя Sort с лямбда-функцией.
Вывести список на экран.
Отсортировать список по датам рождения, используя IComparer.
Вывести список на экран.
Отсортировать список по датам рождения в обратном порядке.
Вывести список на экран.
 */
namespace del2
{
    class Student
    {
        public string name { get; set; } = "NN";
        public int DateTime { get; set; } = 04051991;
 
        public override string ToString()
        {
            return name + " " + DateTime;
        }
    }
 
    static class Ex
    {
        static public void Print(this List<Student> list)
        {
            foreach (var el in list)
            {
                Write(el + " ");
            }
            WriteLine();
        } 
    }
 
    class MainClass
    {
        public static void Main(string[] args)
        {
            List<Student> list = new List<Student>();
            list.Add(new Student() { name = "Student3", DateTime = 28 });
            list.Add(new Student() { name = "Student2", DateTime = 4 });
            list.Add(new Student() { name = "Student1", DateTime = 10 });
            list.Add(new Student() { name = "Student4", DateTime = 25 });
            list.Add(new Student() { name = "Student5", DateTime = 6 });
            list.Print();
            list.Sort((Student x, Student y) => x.name.CompareTo(y.name));
            list.Print();
            list.Sort((Student x, Student y) => x.DateTime.CompareTo(y.DateTime));
            list.Print();
            list.Sort((Student x, Student y) => y.name.CompareTo(x.name));
            list.Print();
            IComparer<Student> To_data = new To_Data();
            list.Sort(To_data);
            list.Print();
        }
    }
    class To_Data : IComparer<Student>
    {
        int IComparer<Student>.Compare(Student x, Student y)
        {
            return x.DateTime - y.DateTime;
        }
    }
}
Вроде заработало, но все равно что-то не то.
Миниатюры
Как отсортировать список по именам и как отсортировать дату рождения в обратном порядке  
0
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
11.10.2019, 08:25 6
Лучший ответ Сообщение было отмечено Anonymous4722 как решение

Решение

C#
1
2
3
4
list = list.OrderBy(x => x.name).ToList();
list.Print();
list = list.OrderByDescending(x => x.DateTime).ToList();
list.Print();
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2019, 08:25
Помогаю со студенческими работами здесь

Как отсортировать в обратном порядке? Что надо добавить?
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;conio.h&gt; using namespace std; int...

Как отсортировать строки динамического массива в обратном порядке сприменением поля Memo???
Плиззз! Оч надо: Как отсортировать строки динамического массива в обратном порядке сприменением...

Отсортировать массив, который содержит ФИО и дату рождения, используя многопоточность
Здравствуйте форумчане, нужно отсортировать массив который содержит ФИО и дату рождения(Иванов...

Отсортировать сообщения в обратном порядке
Всем приветы. Делается чат. Есть сообщения и есть ответы на сообщения. Задача следующая:...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru