Skip to content

crosse331/csharp_labs

Repository files navigation

csharp_labs

  1. "Сортировка массива". (Знакомство с синтаксисом языка C#, создание проекта в IDE, компиляция, запуск, отладка) Сгенерировать последовательность случайных целых чисел, отсортировать её используя любой алгоритм сортировки, вывести в консоль исходную и отсортированую последовательности.

  2. "Геометричесские фигуры". (ООП, абстрактные классы) Реализовать иерархию классов "геометрические фигуры". Базовый класс Shape является абстрактным и поддерживает вычисление площади, периметра, центра масс фигуры. От класса Shape унаследованы классы: Cirlce, Ellispe, Polygon. Фигуры хранить в коллекции List. Реализовать текстовое меню посредством stdin/stdout: C - создать новый геометрический объект, вызывает подменю: E — Ellipse (координаты фокусов + большая ось) C — Circle (координаты цетра + радиус) P — Polygon (кол-во точек + сами точки) Q — отмена L — печать всего списка фигур с атрибутами (площадь, периметр, центр масс) H — вывод подсказки (Help) Q — выход Уточнения:

  • работать в числах с плавающей точкой (double или float)
  • все необходимые аттрибуты фигуры нужно инкапсурировать внутри объекта класса!
  • считать центр масс многоугольника можно несколькими способами:

произвести пердварительно триангуляцию исследовать способ, излагаемый на лекции (свести к нахождению центров масс трапеций) допустить упрощение: масса фигуры сосредоточена вдоль рёбер и расчитать по формуле Xc = (L1x1 + L2x2 + ... + Lnxn)/P, Yc = (L1y1 + L2y2 + ... + Lnyn)/P, где P — периметр НравитсяПоказать список оценившихОтветить Язык программирования C# Язык программирования C# 12 сен 2017 в 11:23

  1. "Рациональная дробь". (Перегрузка операторов в С#) Реализовать структуру Ratio — рациональная дробь. Должны поддерживаться операции: сложение, вычитание, унарный плюс и минус, умножение и деление, а также метод: toDouble(). При совершении операций, а так же при создании дроби должна проверяться возможность сокращения, в случае если числитель и знаменатель имеют общий делитель, отличный от 1 (Алгоритм Евклида). Генерировать исключение ArgumentOutOfRangeException если знаменатель = 0. НравитсяПоказать список оценившихОтветить Язык программирования C# Язык программирования C# 12 сен 2017 в 11:23

  2. "Шаблонный вектор". Реализиовать шаблонный класс Vector, поддерживающий основные алгебраические операции:

  • скалярное произведение (dot),
  • вектороное произведение (оператор *)
  • сложение/вычитание (-,+)
  • умножение на константу (оператор *)
  • индексирование элементов ([ ]) Все операции должны проверять размерность, в случае разных размерностей необходимо генерировать исключение. НравитсяПоказать список оценившихОтветить Язык программирования C# Язык программирования C# 24 сен 2017 в 12:50
  1. Коллекции, битовые операции, работа с бинарными файлами. Написать программу, сжимающую бинарные файлы, основанную на методе Хаффмана. Приложение должно принимать аргументы из командной строки: имя входного файла и выходного файла. Должны поддерживаться ключи командной строки: -с — compress, сжатие (кодирование) файла -d — decompress, декодирование -h — help, вызов подсказки Для парсинга аргументов командной строки использовать библиотеку, например NDesk.Options, Mono.Options, Command Line Parser Library и т.д.

Учитывайте, что длина получаемого битового кода для редко встечаемых символов может достигать мощности алфавита (т.е. до 256, если кодируются байты). Поэтому, битовый код символа разумно хранить в System.Collections.BitArray или самостоятельно реализованном контейнере битов. НравитсяПоказать список оценившихОтветить Язык программирования C# Язык программирования C# 26 сен 2017 в 15:16

  1. Визуализировать геометрические фигуры из лаб 2 с помощью графического интерфейса. Можно использовать любой из GUI-фреймворков: WPF, Windows Forms, Gtk#. Реализовать
  • загрузку списка фигур из текстового файла (формат придумать самостоятельно)
  • автомасштабирование пространства с фигурами
  • возможность сохранить полученное изображение Данные действия должны вызываться через Menu Bar (главное меню приложения) НравитсяПоказать список оценившихОтветить Язык программирования C# Язык программирования C# 7 ноя 2017 в 11:56
  1. "Многопоточное программирование". Загрузить цветное изображение из файла и применить к нему матричный свёрточный фильтр. Для простоты можно ограничиться размером матрицы свёртки 3x3. Работа по применению фильтра должна выполняться в нескольких потоках (Thread). На вход поступает имя файла — изображение, которое нужно загрузить и количество потоков для работы с изображением. Изображение, полученное в результате применения фильтра сохраняется в _filtered.png, где sourceName — имя исходного изображения. НравитсяПоказать список оценившихОтветить Язык программирования C# Язык программирования C# 7 ноя 2017 в 11:58

  2. "Многопоточность и работа с сетью". TCP-Сервер математических вычислений. Реализовать многопоточный tcp-сервер, умеющий вычислять значение выражения в длинных числах. Клиент отправляет по TCP/IP на определённый порт (номер выбрать самостоятельно) сообщение, содержащее строку с выражением, которое необходимо вычислить. Сервер производит валидацию и парсинг(разбор) полученной строки. Если математическое выражение не валидно, сервер отвечает клиенту строкой "INVALID", иначе — вычисленным значением выражения. Для простоты можно положить, что длинные числа без знака, поддерживаются только операции +,*, а скобки в выражениях отсутствуют. Протестировать работу tcp-сервера. В особенности, когда поступает множество одновременных запросов (с помощью утилиты netcat или написанием простенького tcp-клиента). Примеры: Запрос: "12345678910 + 9876543210 * 321123" Ответ: "3171597530903740" Запрос: "12345678910 + 9876543210 * 123junk" Ответ: "INVALID" НравитсяПоказать список оценившихОтветить Язык программирования C# Язык программирования C# 5 дек 2017 в 13:35

  3. Дан файл формата GPX, содержащий трек, записанный с помощью системы GPS. (описание формата: http://www.gdal.org/drv_gpx.html, https://ru.wikipedia.org/wiki/GPX) Каждая точка трека является элементом и содержит широту, долготу, высоту, время и горизонтальный геометрическсий фактор HDOP (https://ru.wikipedia.org/wiki/DOP) Пример файла с треком см. в "Документах" группы. Вычислить в каждой точке:

  • длину отрезка пути (от текущей до предыдущей точки)
  • значение скорости для точек пути с HDOP, не выше заданного Добавить эти величины в каждой точки (см. пример в документации) Вывести для всего трека в целом:
  • суммарное расстрояние
  • среднюю, наименьшую и наибольшую скорость
  • время в пути О вычислении расстояния по двум координатам https://www.movable-type.co.uk/scripts/latlong.html

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages