This repository made for xt_net_web tasks
DEADLINE: 18.11.19, 18:00
Написать функцию, формирующую и возвращающую строку вида 1, 2, 3, … N (положительное число). Значение N передаётся в функцию в качестве аргумента.
Число считается простым, если его можно разделить без остатка только на единицу и на само себя (например, 7). Необходимо написать функцию, определяющую, является ли заданное число N (положительное целое) простым. Значение N передаётся в функцию в качестве аргумента.
Написать функцию, выводящую на экран квадрат из звёздочек со стороной равной N (положительное нечётное целое число). Центральная звёздочка должна отсутствовать. Значение N передаётся в функцию в качестве аргумента.
Написать программу, которая заполняет и сортирует многомерный массив. Постановка задачи: Пользователь вводит с клавиатуры число N (размерность массива), затем последовательно вводит N чисел – число элементов по каждой размерности. Программа должна: 1. Создать массив заданной размерности и указанной по размерностям длины. 2. Заполнить данный массив случайными числами из диапазона 0..100 (массив считаем целочисленным). 3. Вывести его на экран. 4. Отсортировать полученный массив. 5. Вывести на экран отсортированный массив.
DEADLINE: 22.11.19, 21:00
Написать программу, которая определяет площадь прямоугольника со сторонами a и b. Если пользователь вводит некорректные значения (отрицательные или ноль), должно выдаваться сообщение об ошибке. Возможность ввода пользователем строки вида «абвгд» или нецелых чисел игнорировать.
Написать программу, которая запрашивает с клавиатуры число N и выводит на экран следующее «изображение», состоящее из N строк:
Написать программу, которая запрашивает с клавиатуры число N и выводит на экран следующее «изображение», состоящее из N строк:
Написать программу, которая запрашивает с клавиатуры число N и выводит на экран следующее «изображение», состоящее из N треугольников:
Если выписать все натуральные числа меньше 10, кратные 3 или 5, то получим 3, 5, 6 и 9. Сумма этих чисел будет равна 23. Напишите программу, которая выводит на экран сумму всех чисел меньше 1000, кратных 3 или 5.
Для форматирования текста надписи можно использовать различные начертания: полужирное, курсивное и подчёркнутое, а также их сочетания. Предложите способ хранения информации о форматировании текста надписи и напишите программу, которая позволяет устанавливать и изменять начертание:
Написать программу, которая генерирует случайным образом элементы массива (число элементов в массиве и их тип определяются разработчиком), определяет для него максимальное и минимальное значения, сортирует массив и выводит полученный результат на экран.
Написать программу, которая заменяет все положительные элементы в трёхмерном массиве на нули. Число элементов в массиве и их тип определяются разработчиком.
Написать программу, которая определяет сумму неотрицательных элементов в одномерном массиве. Число элементов в массиве и их тип определяются разработчиком.
Элемент двумерного массива считается стоящим на чётной позиции, если сумма номеров его позиций по обеим размерностям является чётным числом (например, [1,1] — чётная позиция, а [1,2] — нет). Определить сумму элементов массива, стоящих на чётных позициях.
Написать программу, которая определяет среднюю длину слова во введённой текстовой строке. Учесть, что символы пунктуации на длину слов влиять не должны. Регулярные выражения не использовать. И не пытайтесь прописать все символы-разделители ручками. Используйте стандартные методы классов String и Char.
Написать программу, которая удваивает в первой введённой строке все символы, принадлежащие второй введённой строке.
DEADLINE: 29.09, пятница, 18:00
Написать класс Round, задающий круг с указанными координатами центра, радиусом, а также свойствами, позволяющими узнать длину описанной окружности и площадь круга. Обеспечить нахождение объекта в заведомо корректном состоянии. Написать программу, демонстрирующую использование данного круга.
Написать класс Triangle, описывающий треугольник со сторонами a, b, cи позволяющий осуществить расчёт его площади и периметра. Написать программу, демонстрирующую использование данного треугольника.
Написать класс User, описывающий человека (Фамилия, Имя, Отчество, Дата рождения, Возраст). Написать программу, демонстрирующую использование этого класса.
Написать свой собственный класс MyString, описывающий строку как массив символов. Реализовать для этого класса типовые операции (сравнение, конкатенация, поиск символов, конвертация из/в массив символов, ...).
На основе класса User(см. задание 2.3) создать класс Employee, описывающий сотрудника фирмы. Дополнить класссвойствами«стаж работы» и «должность». Обеспечить нахождение класса в заведомо корректном состоянии.
Создать класс Ring, описывающий кольцо, заданноекоординатами центра, внешним и внутренним радиусами, а также свойствами, позволяющими узнать площадь кольца и суммарную длину внешней и внутренней окружностей.Обеспечить нахождение класса в заведомо корректном состоянии.
Напишите заготовку для векторного графического редактора. Полная версия редактора должна позволять создавать и выводить на экран такие фигуры каклиния, окружность, прямоугольник, круг, кольцо. Заготовка, для упрощения, должна представлять собой консольное приложение со следующимфункционалом: Создать фигуру выбранного типа по произвольным координатам; Вывести фигуры на экран (для каждой фигуры вывести на консоль её тип и значения параметров).
Создайте иерархию классов и пропишите ключевые методы для компьютерной игры (без реализации функционала). Суть игры: •Игрок может передвигаться попрямоугольному полю размером Widthна Height; •На поле располагаются бонусы (яблоко, вишня и т.д.), которые игрок может подобрать для поднятия каких-либо характеристик; •За игроком охотятся монстры (волки, медведи и т.д.), которые могут передвигаться покарте по какому-либо алгоритму; •На поле располагаются препятствия разных типов (камни, деревья и т.д.), которые игрок и монстры должны обходить. Цель игры —собрать все бонусы и не быть «съеденным» монстрами.
DEADLINE: 11.12, 18:00
В кругу стоят N человек, пронумерованных от 1 до N. При ведении счета по кругу вычёркивается каждый второй человек, пока не останется один. Составить программу, моделирующую процесс.
Задан английский текст. Выделить отдельные слова и для каждого посчитать частоту встречаемости. Слова, отличающиеся регистром, считать одинаковыми. В качестве разделителей считать пробел и точку.
На базе обычного массива (коллекции .NET не использовать) реализовать свой собственный класс DynamicArray, представляющий собой динамический массив (массив с запасом) для хранения объектов произвольных типов. Класс должен содержать:
-
Конструктор без параметров (создаётся массив ёмкостью 8 элементов).
-
Конструктор с одним целочисленным параметром (создаётся массив указанной ёмкости).
-
Конструктор, который в качестве параметра принимает коллекцию, реализующую интерфейс IEnumerable, создаёт массив нужного размера и копирует в него все элементы из коллекции.
-
Метод Add, добавляющий в конец массива один элемент. При нехватке места для добавления элемента, ёмкость массива должна удваиваться.
-
Метод AddRange, добавляющий в конец массива содержимое коллекции, реализующей интерфейс IEnumerable. Обратите внимание, метод должен корректно учитывать число элементов в коллекции с тем, чтобы при необходимости расширения массива делать это только один раз вне зависимости от числа элементов в добавляемой коллекции.
-
Метод Remove, удаляющий из коллекции указанный элемент. Метод должен возвращать true, если удаление прошло успешно и false в противном случае. При удалении элементов реальная ёмкость массива не должна уменьшаться.
-
Метод Insert, позволяющий добавить элемент в произвольную позицию массива (обратите внимание, может потребоваться расширить массив). Метод должен возвращать true, если добавление прошло успешно и false в противном случае. При выходе за границу массива должно генерироваться исключение ArgumentOutOfRangeException.
-
Свойство Length — получение количества элементов. Не путать с ёмкостью (Capacity).
-
Свойство Capacity — получение ёмкости: длины внутреннего массива.
-
Методы, реализующие интерфейсы IEnumerable и IEnumerable.
-
Индексатор, позволяющий работать с элементом с указанным номером. При выходе за границу массива должно генерироваться исключение ArgumentOutOfRangeException.
Дополнить динамический массив из задания 3.3 следующим функционалом:
-
Доступ к элементам с конца при использовании отрицательного индекса (−1: последний, −2: предпоследний и т.д.).
-
Возможность ручного изменения значения Capacity с сохранением уцелевших данных (данные за пределами новой Capacity сохранять не нужно).
-
Реализовать интерфейс ICloneable для создания копии массива.
-
Добавить метод ToArray, возвращающий новый массив (обычный), содержащий все содержащиеся в текущем динамическом массиве объекты.
-
Создать новый класс: циклический динамический массив (CycledDynamicArray) на основе DynamicArray, отличающийся тем, что при использовании foreach после последнего элемента должен снова идти первый и так по кругу.
DEADLINE: 13.12, 18:00
Написать метод, реализующий упорядочивание массива произвольного типа. Принцип сравнения двух элементов должен передаваться в метод через делегат. Стандартные инструменты типа Array.Sort и IComparable не использовать.
Продемонстрировать работу метода, упорядочив массив строк по возрастанию длины. Строки равной длины между собой упорядочивать в алфавитном порядке.
Написать модуль сортировки, включающий в себя:
-
Метод сортировки из задания 4.1;
-
Метод, позволяющий запустить в сортировку в отдельном потоке выполнения;
-
Событие, сигнализирующее о завершении сортировки.
Продемонстрировать работу модуля в многопоточном режиме.
Расширить массивы чисел методом, позволяющим найти их сумму.
Расширить строку методом, определяющим, является ли она положительным целым числом. Стандартные методы преобразования строки в число (Parse и т.п.) не использовать.
Написать методы поиска элементов в массиве (например, поиск всех положительных элементов) в виде:
-
метода, непосредственно реализующего поиск;
-
метода, которому условие поиска передаётся через экземпляр делегата;
-
метода, которому условие поиска передаётся через делегат в виде анонимного метода;
-
метода, которому условие поиска передаётся через делегат в виде лямбда-выражения;
-
LINQ-выражения
Сравнить скорость выполнения вычислений.
Примечания:
-
Не забывайте, что LINQ-выражения выполняются в отложенном режиме, так что если вы вдруг получили 0, не удивляйтесь: вы не то измеряете.
-
Для выполнения временных замеров стоит использовать класс Stopwatch.
-
Выберите размер поискового массива с запасом. Лучше поставить размер не менее нескольких сотен элементов.
-
Выполните каждое измерение в цикле не менее нескольких десятков раз. Определите медиану измерений (значение, расположенное посередине, если результаты измерений отсортировать по возрастанию или убыванию).
DEADLINE: 23.12, 18:00
Дана папка, которая является хранилищем файлов. Для всех текстовых файлов (*.txt), находящихся в этой папке или вложенных подпапках,реализовать сохранение истории изменений с возможностью отката состояния к любому моменту.Принцип работы программы:
1.При запуске программа спрашивает пользователя, какой из режимов он хочет включить: наблюденияили отката изменений. Как вариант, можно использовать ключи командной строки.
2.При выборе режима наблюдения все происходящие с текстовыми файлами изменения логируются до момента закрытия программы. Как вариант, можно создавать на диске в отдельной папке копии файлов по состоянию на момент изменения.
3.При выборе режима отката изменений пользователь вводит дату и время, на которые должен быть осуществлён откат, после чего все текстовые файлы в папке должны принять вид, соответствующий указанному времени.
Возможностью изменения файлов в момент, когда программа не находится в режиме отслеживания изменений,пренебречь.
DEADLINE: 10.01.2020, 18:00
Реализовать приложение с консольным интерфейсом, позволяющее работать со списком пользователей (User: Id, Name, DateOfBirth, Age): создавать и удалять их, а также просматривать их перечень. В качестве архитектурного шаблона применить трёхслойную архитектуру. Записи должны сохраняться на жёсткий диск. Для повышения производительности можно реализовать кэширование.
Примечания:
-
При реализации трёхслойной архитектуры использовать слабое связывание (через отдельную сборку с интерфейсами).
-
Если для какого-либо слоя имеется несколько равноправных реализаций (например, DAL.TextFiles и DAL.Memory), выбор конкретной реализации должен осуществляться на основании записи в файле конфигурации.
Дополнить приложение из задания 6.1 сущностью «Награда» (Award: Id, Title) и реализовать соответствующие механизмы для добавления и просмотра перечня наград. Между пользователями и наградами должна быть реализована связь многие-ко-многим (у каждого пользователя может быть несколько наград, а наградой, соответственно, может быть награждено сколько угодно пользователей). При отображении списка пользователей дополните каждого из них перечнем наград, которыми он был награждён. Подумайте, как лучше организовать хранение этих данных в файле.
DEADLINE: 10.01.2020, 18:00
Напишите программу, которая определяет, содержится ли во введенном с клавиатуры тексте дата в формате dd-mm-yyyy.
Напишите программу, которая заменяет все найденные в тексте теги HTML на знак подчёркивания.
Напишите программу, которая находит и выводит на экран все содержащиеся во введённой с клавиатуры текстовой строке адреса электронной почты. Учесть, что имя почтового ящика может содержать буквы, цифры, точку, дефис и знак подчёркивания, причём первым и последним символами могут быть только буквы или цифры. Для имён поддоменов действуют те же самые правила, но точка и знак подчёркивания допустимыми не являются. Имя домена верхнего уровня может состоять только из букв в количестве от 2 до 6.
Напишите программу, которая проверяет текстовую строку на соответствие её текста формату вещественного числа и выводит формат, в котором это число записано:
-
Число может быть записано в обычной нотации;
-
Число может быть записано в научной нотации (например, 127 = 1.27×102 = 1.27e2, -0.0055 = -5.5×10-3 = -5.5e-3);
-
Строка может не соответствовать формату вещественного числа.
Напишите программу, которая определяет, сколько раз в тексте встречается время. Постарайтесь учесть, что в сутках только 24 часа, а в часе — 60 минут.