Skip to content

RyokoAzuno/C-Sharp-Labs

Repository files navigation

C# Labs


MyTasks1

  1. Введите на консоль строку, и, если она совпадает со строкой «Я буду усердно делать все задания по C# и заниматься дома», выведите строку «За это ты получишь печеньку».

  2. Создайте консольное приложение для игры в «Камень-ножницы-бумага». Пользователь должен ввести одно из этих трёх значений, в ответ программа должна выдать свой вариант, выбранный случайным образом. В конце программы огласите победителя.

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

  4. Разработайте программу, в случайных местах на консоли с частотой в 250 мс выводящую строку «C#».

  5. Напишите программу, в которой пользователя по циклу должны просить нажать какую-либо (случайную) клавишу на клавиатуре. После 20 подряд идущих правильных нажатий, нужно похвалить пользователя и завершить программу. В случае неверного ввода, счёт правильных нажатий нужно обнулять. Если пользователь ошибётся 3 раза, завершить программу.

  6. Создайте массив из 10 элементов. Затем сформируйте второй массив, каждый i-ый элемент которого должен быть равен сумме i-ого элемента отсортированного по убыванию массива и оригинального i-ого элемента.

  7. Разработайте метод, возвращающий целочисленный массив без элементов со значениями, переданными в качестве набора параметров. Метод первым параметром должен принимать массив, а дальше переменное количество чисел, которые будут удаляться из этого массива. Возвращаться должен новый массив, состоящий из элементов оригинального массива, за исключением удаляемых.

  8. Напишите метод, принимающий параметром массив чисел, и который будет возвращать минимальное значение, максимальное значение и среднее значение среди положительных элементов массива. Можете попробовать сделать это двумя способами: через out параметры и при помощи кортежа.


MyTasks2

  1. Напишите статический метод, принимающий параметр-строку. Метод должен возвращать число, полученное путём следующих вычислений: сумма кодов всех уникальных символов в строке в степени количества их повторений, и всё это по модулю 8. Например, для строки «Мурсапилами» нужно посчитать: Коды: М – 1052, у – 1091, р – 1088, с – 1089, а – 1072, п – 1087, и – 1080, л – 1083, м – 1084. (1052^1 + 1091^1 + 1088^1 + 1089^1 + 1072^2 + 1087^1 + 1080^2 + 1083^1 + 1084^1) % 8 = (1052 + 1091 + 1088 + 1089 + 1149184 + 1087 + 1166400 + 1083 + 1084) % 8 = 2323158 % 8 = 6.

  2. Разработайте класс, который должен содержать:

  • элементы разного уровня доступа (public и private);
  • не менее 4 свойств;
  • не менее 3 методов;
  • хотя бы одну перегрузку метода;
  • статический метод;
  • константное или поле только для чтения;
  • не менее 3 конструкторов;
  • финализатор. В Main-е создайте объекты вашего класса и продемонстрируйте работоспособность конструкторов и методов.

MyTasks3

Модифицируйте программу из предыдущего задания, построив на его основе иерархию (через наследование), как минимум из 5 классов. Корневой класс иерархии должен быть абстрактным, а хотя бы один класс из потомков – бесплодным. У каждого из классов должно быть хотя бы одно собственное свойство и метод. Также должны быть продемонстрированы виртуальные и переопределённые методы.


MyTasks4

Модифицируйте проект из предыдущего задания, выделив общие поведенческие модели среди классов в интерфейсы. Интерфейсов должно быть как минимум 2. Добавьте дополнительный класс, не входящий в вашу иерархию классов, который также реализует один из созданных интерфейсов.


MyTasks5(MySet)

  1. Создайте класс коллекции Set – множество чисел типа int. Множество – структура данных, наподобие списка, с несколькими особенностями: все элементы множества уникальны. Т.е. в множестве не может присутствовать 2 одинаковых элемента. Если попытаться добавить элемент, который уже присутствует во множестве, ничего не должно происходить.
  • Внутри класса элементы могут храниться в виде списка.
  • Нужно сделать конструктор, который будет инициализировать множество на основе массива (параметр – массив чисел).
  • Написать свойство для количества элементов.
  • Написать методы Add и Remove для добавления и удаления элементов из множества, соответственно. Добавление должно быть реализовано таким образом, чтобы повторки не добавлялись.
  • Реализуйте метод для вывода всех элементов множества на консоль.
  • Операции над множествами (объединение, пересечение, разность, симметрическая разность) должны быть реализованы через методы (можно обычные, можно статические).
  • Реализуйте метод проверки, является ли одно множество подмножеством другим, т.е. есть ли все элементы первого множества во втором.
  1. Переделайте класс, заменив методы действия над множествами на перегрузки операторов (которые работают также):
  • Объединение множеств – с помощью оператора бинарного +
  • Пересечение множеств – с помощью оператора *
  • Разность множеств – с помощью оператора бинарного -
  • Симметрическую разность множеств – с помощью оператора %
  • Проверку на подмножество – с помощью операторов > и <
  1. Сделайте класс Set обобщённым с типом-параметром T. Т.е. чтобы он мог хранить не только целые числа, но любые типы данных. Если элементы сравнивались у вас с помощью операторов == и !=, замените их на вызовы метода Equals.

  2. Продемонстрируйте работу вашего класса для 3 различных типов данных, один из которых должен быть вашим классом из предыдущих заданий.


MyTasks6

Модифицируйте проект из заданий перед классом множества. Добавьте в ваши классы/интерфейса как минимум 2 обратных вызова (callback) и 2 события (event).


MyTasks7(WPF Application, MVVM)

  1. Создайте приложение WPF с графическим интерфейсом для создания объекта какого-либо из ваших классов. Продемонстрируйте в нем работу не менее 3 различных элементов управления. С помощью формы должно вводиться не менее 5 свойств класса.

  2. Добавьте в программу механизмы валидации (проверки) вводимых значений. Если вводится неправильное значение, рядом с элементом ввода должно отобразиться сообщение с пояснением о совершённой ошибке.


MyTasks8(WPF Calculator, Recursive descent parser)

Создайте приложение Калькулятор. Интерфейс – заурядного калькулятора. Обязательно наличие кнопок для: ввода чисел, сложения, вычитания, умножения, деления, вывода результата.

Releases

No releases published

Packages

No packages published

Languages