Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 05.09.2019
Сообщений: 33
.NET 5

В абстрактном классе Издание реализовать метод CompareTo так, чтобы можно было отсортировать каталог изданий по фамилии

26.11.2021, 12:47. Показов 1184. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
using System;
 
namespace Izdanie
{
     abstract public class Publication : IComparable
    {
        string publication;
        string nameOfAuthor;
        string authors;
 
        public Publication(string nameofpublic, string lastname) 
        {
             this.publication = nameofpublic;
            this.nameOfAuthor = lastname;
        }
        public abstract void GetInformation();
 
        public int CompareTo(object obj)
        {
            Publication publication = obj as Publication;
            if(this.publication == authors)
            {
                return 0;
            }
            else
            {
                if (this.publication > authors)
                {
                    return 1;
                }
                else
                {
 
                }
            }
        }
     }
    
}
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
using System;
using System.Collections.Generic;
 
namespace Izdanie
{
    class Program
    {
        static void Main(string[] args)
        {
            Publication[] authors = new Publication[6];
            authors[0] = new Book("Евгений Онегин", "Пушкин", 2020, "Издательский Дом Мещерякова");
            authors[1] =  new Book("Гарри Поттер и Узник Азкабана", "Роулинг", 2019, "Махаон");
            authors[2] = new Article("МЕХАНИКА КОНТАКТНОГО ВЗАИМОДЕЙСТВИЯ", "Колмыкова", "СибАК", "Студенческий", 2021);
            authors[3] = new Article("Оптический «транзистор»", "Посунько", "ЗаНауку", "Физика", 2021);
            authors[4] = new ElectronicResource("Instagram", "Систром", "instagram.com", "это сервис, позволяющий легко и удобно снимать креативные фото и видео");
            authors[5] =  new ElectronicResource("ВКонтакте", "Дуров", "vk.com", "Российская социальная сеть");
            foreach (var p in c.list)
            {
                p.GetInformation();
            }
            Console.WriteLine("-------------------------------------------------------------------------------");
            c.FindEdition("Дуров");
            Console.ReadKey();
        }
    }
}

Не понимаю как записать
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.11.2021, 12:47
Ответы с готовыми решениями:

Реализовать метод CompareTo так, чтобы можно было отсортировать базу данных справочника по номеру телефона
Пожалуйста напишите программу к задачке. В абстрактном классе Телефонный_справочник реализовать метод CompareTo так, чтобы можно...

В абстрактном классе Товар реализовать метод CompareTo
Здравствуйте уважаемые программисты, если вам не сложно сделайте пожалуйста задачку. В абстрактном классе Товар реализовать метод...

Изменить метод CompareTo так, чтобы метод Sort сортировал массив точек по убыванию
Измените метод CompareTo так, чтобы метод Sort сортировал массив точек по убыванию расстояния между точкой и началом координат ...

12
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16147 / 11268 / 2890
Регистрация: 21.04.2018
Сообщений: 33,131
Записей в блоге: 2
26.11.2021, 13:21
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
    abstract public class Publication : IComparable, IComparable<Publication>
    {
        string publication;
        string nameOfAuthor;
        string authors; // Это фамилия?
 
        public Publication(string nameofpublic, string lastname)
        {
            this.publication = nameofpublic;
            this.nameOfAuthor = lastname;
        }
        public abstract void GetInformation();
 
        public int CompareTo(object obj)
        {
            return CompareTo(obj as Publication);
        }
 
        public int CompareTo(Publication other)
        {
            if (other == null)
                return 1;
            return string.Compare(authors, other.authors);
        }
    }
0
0 / 0 / 0
Регистрация: 05.09.2019
Сообщений: 33
26.11.2021, 13:25  [ТС]
lastname, nameOfAuthor фамилия
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16147 / 11268 / 2890
Регистрация: 21.04.2018
Сообщений: 33,131
Записей в блоге: 2
26.11.2021, 13:30
Цитата Сообщение от roise511 Посмотреть сообщение
lastname, nameOfAuthor фамилия
Так как нужно сравнивать по этим полям?
Сначала по lastname, а если равны то по nameOfAuthor ?
0
0 / 0 / 0
Регистрация: 05.09.2019
Сообщений: 33
26.11.2021, 13:34  [ТС]
Сравнивать нужно с заданной фамилией, к примеру "Дуров", вот как к этому прийти пока не хватает мышления у меня
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16147 / 11268 / 2890
Регистрация: 21.04.2018
Сообщений: 33,131
Записей в блоге: 2
26.11.2021, 13:42
Цитата Сообщение от roise511 Посмотреть сообщение
Сравнивать нужно с заданной фамилией, к примеру "Дуров", вот как к этому прийти пока не хватает мышления у меня
Это можно реализовать, но у вас в задании написано не найти эквивалентный, а чтобы можно было отсортировать каталог изданий по фамилии.
Поэтому сравнивать не Publication со строкой, а два экземпляра Publication.
Вот по каким полям и в каком порядке их надо сравнивать?

Добавлено через 2 минуты
И что это за переменная c.list?
Откуда она у вас в коде взялась?
0
0 / 0 / 0
Регистрация: 05.09.2019
Сообщений: 33
26.11.2021, 13:48  [ТС]
Конкретно не указано, но скорее всего по количеству знаков в фамилии

Добавлено через 2 минуты
Это остатки прошлой цивилизации
Сейчас код переписал, вышло что-то вроде этого

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
static void Main(string[] args)
        {
            Publication[] authors = new Publication[6];
            authors[0] = new Book("Евгений Онегин", "Пушкин", 2020, "Издательский Дом Мещерякова");
            authors[1] =  new Book("Гарри Поттер и Узник Азкабана", "Роулинг", 2019, "Махаон");
            authors[2] = new Article("МЕХАНИКА КОНТАКТНОГО ВЗАИМОДЕЙСТВИЯ", "Колмыкова", "СибАК", "Студенческий", 2021);
            authors[3] = new Article("Оптический «транзистор»", "Посунько", "ЗаНауку", "Физика", 2021);
            authors[4] = new ElectronicResource("Instagram", "Систром", "instagram.com", "это сервис, позволяющий легко и удобно снимать креативные фото и видео");
            authors[5] =  new ElectronicResource("ВКонтакте", "Дуров", "vk.com", "Российская социальная сеть");
            foreach (Publication p in authors)
            {
                p.GetInformation();
            }
            Console.WriteLine("-------------------------------------------------------------------------------");
            authors.FindEdition("Дуров");
            Console.ReadKey();
        }


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
abstract public class Publication : IComparable, IComparable<Publication>
    {
        string publication;
        string nameOfAuthor;
        string authors; 
 
        public Publication(string nameofpublic, string lastname)
        {
            this.publication = nameofpublic;
            this.nameOfAuthor = lastname;
        }
        public abstract void GetInformation();
 
        public int CompareTo(object obj)
        {
            return CompareTo(obj as Publication);
        }
 
        public int CompareTo(Publication other)
        {
            if (other == null)
                return 1;
            return string.Compare(nameOfAuthor, other.authors);
        }
    }
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16147 / 11268 / 2890
Регистрация: 21.04.2018
Сообщений: 33,131
Записей в блоге: 2
26.11.2021, 14:27
roise511, по интерфейсу Форума:
 Комментарий модератора 
При обращении к другому пользователю указывайте его ник в тегах [NICK][/NICK] или цитируйте часть сообщения на которое отвечаете.
В противном случае ему не придёт уведомление о вашем обращении и вы можете не дождаться ответа на своё сообщение.

Для вставки ника: введите ник, выделите его и нажмите кнопку "Динамик" на панели редактора сообщений.
Или кликните по нику автора сообщения в панели слева от текста его сообщения.

Для вставки цитаты: выделите нужную цитату, должна появиться всплывающая кнопка "Цитировать", нажмите её.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16147 / 11268 / 2890
Регистрация: 21.04.2018
Сообщений: 33,131
Записей в блоге: 2
26.11.2021, 14:30
Цитата Сообщение от roise511 Посмотреть сообщение
Конкретно не указано, но скорее всего по количеству знаков в фамилии
Как не указано?
У вас же в названии темы "чёрным по белому" написано:
Цитата Сообщение от roise511 Посмотреть сообщение
реализовать метод CompareTo так, чтобы можно было отсортировать каталог изданий по фамилии
А вы выложили свой код, в котором это задание не реализуется.
Зато есть какой-то, непонятно откуда взявшийся метод authors.FindEdition("Дуров");.

Выложите полностью, дословно вест текст задания.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
public abstract void GetInformation();
Есть ещё сомнения относительно этого метода.
Его сигнатура не соответствует его именованию.
Метод с таким название должен ВОЗВРАЩАТЬ значение, а не быть void.
0
0 / 0 / 0
Регистрация: 05.09.2019
Сообщений: 33
26.11.2021, 15:05  [ТС]
В абстрактном классе Издание реализовать метод CompareTo так, чтобы
можно было отсортировать каталог изданий по фамилии автора
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16147 / 11268 / 2890
Регистрация: 21.04.2018
Сообщений: 33,131
Записей в блоге: 2
26.11.2021, 15:17
Цитата Сообщение от roise511 Посмотреть сообщение
В абстрактном классе Издание реализовать метод CompareTo так, чтобы
можно было отсортировать каталог изданий по фамилии автора
Тогда откуда у вас взялся метод FindEdition и что он делает в этом задании?

Добавлено через 44 секунды
И в каком из полей класса хранится ФАМИЛИЯ автора?

Добавлено через 1 минуту
По смыслу имен полей, фамилия - это поле authors.
И как реализовать по нему сравнение для метода CompareTo я вам уже показал.

Добавлено через 2 минуты
Вот так вам надо проверять сортировку:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        static void Main(string[] args)
        {
            Publication[] publications = new Publication[6];
            authors[0] = new Book("Евгений Онегин", "Пушкин", 2020, "Издательский Дом Мещерякова");
            authors[1] =  new Book("Гарри Поттер и Узник Азкабана", "Роулинг", 2019, "Махаон");
            authors[2] = new Article("МЕХАНИКА КОНТАКТНОГО ВЗАИМОДЕЙСТВИЯ", "Колмыкова", "СибАК", "Студенческий", 2021);
            authors[3] = new Article("Оптический «транзистор»", "Посунько", "ЗаНауку", "Физика", 2021);
            authors[4] = new ElectronicResource("Instagram", "Систром", "instagram.com", "это сервис, позволяющий легко и удобно снимать креативные фото и видео");
            authors[5] =  new ElectronicResource("ВКонтакте", "Дуров", "vk.com", "Российская социальная сеть");
            foreach (Publication p in publications)
            {
                p.GetInformation();
            }
            Console.WriteLine("-------------------------------------------------------------------------------");
            Array.Sort(publications);
            foreach (Publication p in publications)
            {
                p.GetInformation();
            }
            Console.ReadKey();
        }
Добавлено через 2 минуты
И конструктор исправьте:
C#
1
2
3
4
5
6
7
8
9
10
    abstract public class Publication : IComparable, IComparable<Publication>
    {
        private readonly string publication;
        private readonly string author; 
 
        public Publication(string publication, string author)
        {
            this.publication = publication;
            this.author = author;
        }
0
0 / 0 / 0
Регистрация: 05.09.2019
Сообщений: 33
26.11.2021, 16:21  [ТС]
Элд Хасп



Переписал код, вот что получилось
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
namespace Izdanie
{
    class Prog
    {
        static void Main()
        {
            List<Publicat> dic = new List<Publicat>();
 
            // Создадим множество автомобилей
            dic.Add(new Publicat("Евгений Онегин", "Пушкин", 2020, "Издательский Дом Мещерякова"));
            dic.Add(new Publicat("Гарри Поттер и Узник Азкабана", "Роулинг", 2019, "Махаон"));
            dic.Add(new Publicat("МЕХАНИКА КОНТАКТНОГО ВЗАИМОДЕЙСТВИЯ", "Колмыкова", 2021, "Студенческий"));
            dic.Add(new Publicat("Оптический «транзистор»", "Посунько", 2021, "ЗаНауку"));
            dic.Add(new Publicat("Instagram", "Систром", 2010, "instagram.com"));
 
            Console.WriteLine("Исходный каталог : \n");
            foreach (Publicat a in dic)
                Console.WriteLine(a);
 
            Console.WriteLine("\nТеперь Каталог отсортирован: \n");
            dic.Sort();
            foreach (Publicat a in dic)
                Console.WriteLine(a);
 
            Console.ReadLine();
        }
    }
}

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
namespace Izdanie
{
    class Publicat : IComparable<Publicat>
    {
        public string namePub { set; get; }
        public string nameOfAuthor { set; get; }
        public int year { get; set; }
        public string publishing { set; get; }
 
        public Publicat() { }
        public Publicat(string namePub, string nameOfAuthor, int year, string publishing)
        {
            this.namePub = namePub;
            this.nameOfAuthor = nameOfAuthor;
            this.year = year;
            this.publishing = publishing;
        }
 
        // Реализуем интерфейс IComparable<T>
        public int CompareTo(Publicat obj)
        {
            if (this.year > obj.year)
                return 1;
            if (this.year < obj.year)
                return -1;
            else
                return 0;
        }
 
        public override string ToString()
        {
            return String.Format("{4}\tНазвание: {0}\tФамилия Автора: {1}\tгод: {2}\tИздательство: {3}", //Вот здесь ошибка, не пойму как исправить
                this.namePub, this.nameOfAuthor, this.year, this.publishing);
        }
    }
}
Добавлено через 40 минут
Решил проблему, вот рабочий код :

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
using System;
using System.Collections.Generic;
 
namespace Izdanie
{
    class Publicat : IComparable<Publicat>
    {
        public string namePub { set; get; }
        public string nameOfAuthor { set; get; }
        public int year { get; set; }
        public string publishing { set; get; }
 
        public Publicat() { }
        public Publicat(string namePub, string nameOfAuthor, int year, string publishing)
        {
            this.namePub = namePub;
            this.nameOfAuthor = nameOfAuthor;
            this.year = year;
            this.publishing = publishing;
        }
 
        // Реализуем интерфейс IComparable<T>
        public int CompareTo(Publicat obj)
        {
            if (this.year > obj.year)
                return 1;
            if (this.year < obj.year)
                return -1;
            else
                return 0;
        }
 
        public override string ToString()
        {
            return String.Format("\nНазвание: {0}\nФамилия Автора: {1}\nгод: {2}\nИздательство:{3}",
            this.namePub, this.nameOfAuthor, this.year, this.publishing);
        }
    }
}

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
using System;
using System.Collections.Generic;
 
namespace Izdanie
{
    class Prog
    {
        static void Main()
        {
            List<Publicat> dic = new List<Publicat>();
 
            // Создаем множество изданий
            dic.Add(new Publicat("Евгений Онегин", "Пушкин", 2020, "Издательский Дом Мещерякова"));
            dic.Add(new Publicat("Гарри Поттер и Узник Азкабана", "Роулинг", 2019, "Махаон"));
            dic.Add(new Publicat("МЕХАНИКА КОНТАКТНОГО ВЗАИМОДЕЙСТВИЯ", "Колмыкова", 2021, "Студенческий"));
            dic.Add(new Publicat("Оптический «транзистор»", "Посунько", 2021, "ЗаНауку"));
            dic.Add(new Publicat("Instagram", "Систром", 2010, "instagram.com"));
 
            Console.WriteLine("Исходный каталог : \n");
            foreach (Publicat a in dic)
                Console.WriteLine(a);
 
            Console.WriteLine("\nТеперь Каталог отсортирован: \n");
            dic.Sort();
            foreach (Publicat a in dic)
                Console.WriteLine(a);
 
            Console.ReadLine();
        }
    }
}
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16147 / 11268 / 2890
Регистрация: 21.04.2018
Сообщений: 33,131
Записей в блоге: 2
26.11.2021, 19:03
Цитата Сообщение от roise511 Посмотреть сообщение
Решил проблему, вот рабочий код :
Вы прикалываетесь?
С каких пор "фамилия" - это int year?


Ну, решили, так решили.
Главное, что вас устраивает.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.11.2021, 19:03
Помогаю со студенческими работами здесь

Реализовать метод setName, чтобы с его помощью можно было устанавливать значение private String name
Вот задача,многие знают откуда она: Реализовать метод setName, чтобы с его помощью можно было устанавливать значение переменной private...

Превратить программу так, чтобы используя метод Func можно было найти наибольшее значение из четырех цифр
Превратить программу так, чтобы используя метод Func можно было найти наибольшее значение из четырех цифр: a, b, c, d. Метод Func при этом...

Помогите реализовать метод закраски, чтобы он был в классе и вызывался в другом классе
Помогите реализовать метод закраски, чтобы он был в классе и вызывался в другом классе

Что это было? public Foo MyFoo { get; set; } // в не абстрактном классе, не абстрактное
Вобщем, жили мы долго и счастливо, сначала на С++ потом на С#, но на С# писали код имея в виду, что, может, он пригодится в старых проектах...

Как сделать так, чтобы можно было вписать другой метод(не знаю, как это описать )
есть код, нужно сделать так чтобы при вводе /op и /god работали независимо друг от друга: то есть, если я напишу в начале /god у меня...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru