Перейти к основному содержанию
EDU-MMCS
Вы используете гостевой доступ (Вход)

Язык программирования C#

  1. В начало
  2. Курсы
  3. Весенний семестр
  4. Магистратура
  5. Язык программирования C#
  6. Объектно-ориентированное программирование
  7. Домашнее задание №9. Интерфейсы, сортировка с комп...

Домашнее задание №9. Интерфейсы, сортировка с компаратором.

Требуемые условия завершения
Открыто с: понедельник, 22 апреля 2019, 00:00
Срок сдачи: понедельник, 29 апреля 2019, 00:00
Интерфейсы

Интерфейс IComparable<T>

Дан текстовый файл, содержащий температурные данные в различных единицах измерения и их описания, например:

0C Замерзание воды
97,9F Норма человеческого тела
100С Кипение воды
3780К Кипение углерода
0K Абсолютный ноль
1356,55K Плавление меди
0F Замерзание дурацкой смеси
  1. Определите класс Temperature с тремя закрытыми полями:

    • tempk — температура в градусах Кельвина (вещественное число);
    • orig — исходное представление температуры (строка);
    • desc — описание температуры (строка).
  2. Реализуйте конструктор, принимающий на вход два строковых значения: температуру и её описание. Конструктор должен генерировать исключение, если температурное значение является некорректным (например, находится ниже абсолютного нуля). Добавьте числовые свойства C, F и K для чтения температуры в соответствующей системе. Определите строковое свойство Description для чтения описания. Переопределите метод ToString(он должен возвращать исходное представление температуры вместе с её описанием). В основной программе загрузите все температурные данные из исходного файла в список List<Temperature>.
  3. Попытайтесь вызвать метод Sort для загруженного ранее списка температур. Возникающее при этом исключение свидетельствует о невозможности выполнять сравнение объектов произвольного класса. Чтобы это стало возможным, необходимо, например, реализовать в классе интерфейс IComparable<T>. Для этого:
    • измените заголовок класса на следующий
      class Temperature : IComparable<Temperature>
      — тем самым мы заявляем, что класс Temperature будет реализовывать интерфейс IComparable<Temperature>, то есть что значения температур можно будет сравнивать между собой;
    • возникшее теперь сообщение компилятора говорит о необходимости реализовать метод сравнения
      public int CompareTo(Temperature other)
      
      — добавьте в класс заготовку для этого метода;
    • метод сравнения должен возвращать отрицательное число, если объект, для которого вызывается метод, меньше объекта, переданного в качестве параметра, 0 — если оба объекта равны, и положительное число — если исходный объект больше — реализуйте этот метод, сравнивая значения поля tempk;
    • поскольку для сравнения температур достаточно сравнить только одно поле, то всю проверку можно поручить соответствующему методу поля tempk. Удобно пользоваться CompareTo для типа double
  4. Убедитесь, что метод Sort для списка температур теперь работает и сортирует список в порядке возрастания температуры.
  5. Реализуйте сортировку с использованием компаратора так, чтобы он сортировал List<Temperature> по убыванию температуры в градусах Кельвина. (Компаратор должен быть параметром метода и быть задан в виде лямбда - выражения)

Интерфейс IComparer<T>

  1. Создать класс Point - точка на плоскости с вещественными координатами x, y. Создать конструктор, ToString() и свойства для доступа к координатам точки.
  2. Создайте метод, который генерирует набор (LIst<Point>) случайно расположенных точек в квадрате [0,1]x[0,1].
  3. Используя интерфейс IComparer, выведите все точки, упорядочивая их следующими способами:

    • по удалению от начала координат (сначала выводится ближайшая к началу координат, порядок равноудалённых точек не важен);
    • по удалению от оси абсцисс (сначала выводится ближайшая к оси абсцисс, порядок равноудалённых точек не важен);
    • по удалению от оси ординат (сначала выводится ближайшая к оси ординат, порядок равноудалённых точек не важен);
    • по удалению от диагонали первой и третьей четвертей (прямая y=x, порядок равноудалённых точек не важен).
◄ Лабораторная работа №10
Лабораторная работа №11. Наследование, виртуальные методы ►
Пропустить Навигация
Навигация
  • В начало

    • Страницы сайта

      • Мои курсы

      • Теги

    • Мои курсы

    • Курсы

      • Весенний семестр

        • Прикладная математика и информатика

        • Фундаментальная информатика и ИТ

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

          • Научные вычисления - 2025

          • ИАБолДанн

          • История инф

          • Data Scince и АД

          • МО (маг ИИ)

          • NLP

          • M1. Artificial Intelligence

          • CSm2Research

          • Мат. модели в МСС

          • НИС

          • Свертки

          • Язык программирования C#

            • Общее

            • Основы языка C#

            • Объектно-ориентированное программирование

              • ЗаданиеЛабораторная работа №9. Классы и объекты

              • ЗаданиеДомашнее задание №8

              • ЗаданиеЛабораторная работа №10

              • ЗаданиеДомашнее задание №9. Интерфейсы, сортировка с комп...

              • ЗаданиеЛабораторная работа №11. Наследование, виртуальные...

              • ЗаданиеДомашнее задание № 10. Крестики-нолики

              • ЗаданиеЛабораторная работа №12. Решение уравнения

              • ЗаданиеДомашнее задание №12

              • ЗаданиеЛабораторная работа №13. Исключения

            • Индивидуальное задание

        • Аспирантура

        • Вечернее отделение

        • Другое

        • ОИИ

      • Осенний семестр

        • Прикладная математика и информатика

        • Фундаментальная информатика и ИТ

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

        • Аспирантура

        • Вечернее отделение

        • Другое

      • Воскресная компьютерная школа

        • Пользователь компьютера плюс

        • Пользователь прикладных программ

        • Программирование I ступень

        • Программирование II ступень

        • Программирование III ступень

        • Архив

      • Воскресная математическая школа

        • Открытое тестирование РНОМЦ и мехмата ЮФУ - 2025

        • Олимпиадная математическая школа

        • Повышение квалификации

        • Доступная математика

        • Лаборатория математического онлайн-образования мех...

        • Осенняя универсиада

        • Научно-практическая конференция

        • ВМШ

          • ВМШ - 24

        • Летняя олимпиадная математическая школа РНОМЦ и ме...

      • Государственная итоговая аттестация

      • Дополнительное образование

      • Олимпиады

      • Видеолекции

      • Разное

      • Архив курсов

      • Заочная школа мехмата ЮФУ

Служба поддержки сайта
Вы используете гостевой доступ (Вход)
Язык программирования C#
Сводка хранения данных
Скачать мобильное приложение Яндекс.Метрика