Skip to content

Stanislaw-Rudnicki/C-Sharp

Repository files navigation

C-Sharp

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

Ввести с клавиатуры номер трамвайного билета (6-значное число) и проверить является ли данный билет счастливым (если на билете напечатано шестизначное число, и сумма первых трёх цифр равна сумме последних трёх, то этот билет считается счастливым).

Числовые значения символов нижнего регистра в коде ASCII отличаются от значений символов верхнего регистра на величину 32.
Используя эту информацию, написать программу, которая считывает с клавиатуры и конвертирует все символы нижнего регистра в символы верхнего регистра и наоборот.

Даны целые положительные числа A и B (A < B).
Вывести все целые числа от A до B включительно; каждое число должно выводиться на новой строке;
при этом каждое число должно выводиться количество раз, равное его значению.
Например: если А = 3, а В = 7, то программа должна сформировать в консоли следующий вывод:
3 3 3
4 4 4 4
5 5 5 5 5
6 6 6 6 6 6
7 7 7 7 7 7 7

Дано целое число N (> 0), найти число, полученное при прочтении числа N справа налево.
Например, если было введено число 345, то программа должна вывести число 543.


З клавіатури вводиться число n – кількість елементів масиву.
Потрібно створити масив типу double та заповнити його псевдовипадковими числами (діапазон вказано у варіанті).
Виконати вказані у варіанті дії та після кожної з них вивести результат.
При виведенні результатів використовуйте інтерпольовані рядки мови C#.

  1. Знайти суму елементів з індексами, які діляться на 3,
  2. Впорядкувати першу половину масиву за зростанням значень елементів.
    [-10.51; 10.53]

З клавіатури вводяться числа n – кількість рядків матриці, m – кількість стовпців матриці.
Потрібно створити матрицю типу double та заповнити її псевдовипадковими числами (діапазон вказано у варіанті).
Виконати вказані у варіанті дії та після кожної з них вивести результат.
При виведенні результатів використовуйте інтерпольовані рядки мови C#.

  1. Знайти найбільші елементи у кожному стовпцю. Серед них визначити найменший.
  2. Поміняти порядок слідування елементів у рядках на протилежний.
    [-10.34; 53.44], 2 дробових знаки

Написати програму, для виконання операцій з множинами цілих чисел.
Множину представляє масив випадкових чисел.
Операції представлено на зображенні (об'єднання, перетин, різниця)


Користувач вводить рядок, який складається з символів.
Символи складаються вслова, які розділяються розділовими знаками.
Слова відокремлюються одним або декількома пробілами.
Виконати обробку рядка відповідно до завдання.

  1. Надрукувати найдовше і найкоротше слово в цьому рядку.
  2. Надрукувати всі слова, які не містять голосних букв.
  3. Надрукувати всі слова, які складаються лише з цифр.
  4. Надрукувати всі слова, які збігаються з першим словом.
  5. Перетворити рядок так, щоб всі букви в кожному слові були відсортовані за алфавітом.
  6. Перетворити рядок так, щоб всі слова були відсортовані за алфавітом у зворотному порядку.
  7. Прибрати з рядка всі зазначені символи, які введе користувач.
  8. Підрахувати частоту входження символів у введеному тексті. Відсортуйте статистику за спаданням.

З клавіатури вводиться число n – кількість елементів масиву.
Потрібно створити масив типу double та заповнити його псевдовипадковими числами (діапазон вказано у варіанті).
Виконати вказані у варіанті дії та після кожної з них вивести результат.
При виведенні результатів використовуйте інтерпольовані рядки мови C#.

  1. Знайти суму модулів елементів, які мають дробову частину більшу або рівну 0.5.
  2. Впорядкувати другу половину масиву за спаданням значень елементів.
    [-15.6; 53.3]
    1 дробовий знак

З клавіатури вводяться числа n – кількість рядків матриці, m – кількість стовпців матриці.
Потрібно створити матрицю типу double та заповнити її псевдовипадковими числами (діапазон вказано у варіанті).
Виконати вказані у варіанті дії та після кожної з них вивести результат.
При виведенні результатів використовуйте інтерпольовані рядки мови C#.

  1. Визначити кількість рядків, які не містять жодного від’ємного елемента.
  2. Переставити рядки матриці, розміщуючи їх за спаданням сум елементів у рядках.
    [-2.9; 60.3]
    1 дробовий знак

1.1 Разработать один из классов, в соответствии с полученным вариантом.
1.2 Реализовать не менее пяти закрытых полей (различных типов), представляющих основные характеристики рассматриваемого класса.
1.3 Создать не менее трех методов управления классом и методы доступа к его закрытым полям.
1.4 Создать метод, в который передаются аргументы по ссылке.
1.5 Создать не менее двух статических полей (различных типов), представляющих общие характеристики объектов данного класса.
1.6 Обязательным требованием является реализация нескольких перегруженных конструкторов, аргументы которых определяются студентом, исходя из специфики реализуемого класса, а так же реализация конструктора по умолчанию.
1.7 Создать статический конструктор.
1.8 Создать массив (не менее 5 элементов) объектов созданного класса.
1.9 Создать дополнительный метод для данного класса в другом файле, используя ключевое слово partial.


  1. Разработать один из классов, в соответствии с полученным вариантом.
  2. Реализовать не менее пяти закрытых полей (различных типов), представляющих основные характеристики рассматриваемого класса.
  3. Создать не менее трех методов управления классом и методы доступа к его закрытым полям.
  4. Создать метод, в который передаются аргументы по ссылке.
  5. Создать не менее двух статических полей (различных типов), представляющих общие характеристики объектов данного класса.
  6. Обязательным требованием является реализация нескольких перегруженных конструкторов, аргументы которых определяются студентом, исходя из специфики реализуемого класса, а так же реализация конструктора по умолчанию.
  7. Создать статический конструктор.
  8. Создать массив (не менее 5 элементов) объектов созданного класса.
  9. Создать дополнительный метод для данного класса в другом файле, используя ключевое слово partial.

Написать приложение, имитирующее работу банкомата Реализовать классы Bank, Client, Account. Изначально клиенту нужно открыть счёт в банке, получить номер счёта, получить свой пароль, положить сумму на счёт.

  1. Приложение предлагает ввести пароль предполагаемой кредитной карточки, даётся 3 попытки на правильный ввод пароля. Если попытки исчерпаны, приложение выдаёт соответствующее сообщение и завершается.
  2. При успешном вводе пароля выводится меню. Пользователь может выбрать одно из нескольких действий:
  • вывод баланса на экран
  • пополнение счёта
  • снять деньги со счёта
  • выход
  1. Если пользователь выбирает вывод баланса на экран, приложение отображает состояние предполагаемого счёта, после чего предлагает либо вернуться в меню, либо совершить выход.
  2. Если пользователь выбирает пополнение счёта, программа запрашивает сумму для пополнения и выполняет операцию, сопровождая её выводом соответствующего комментария. Затем следует предложение вернуться в меню или выполнить выход.
  3. Если пользователь выбирает снять деньг со счёта, программа запрашивает сумму. Если сумма превышает сумму счёта пользователя, программа выдаёт сообщение и переводит пользователя в меню. Иначе отображает сообщение о том, что сумма снята со счёта и уменьшает сумму счёта на указанную величину.

В С# индексация начинается с нуля, но в некоторых языках программирования это не так. Например, в Turbo Pascal индексация массиве начинается с 1.

Напишите класс RangeOfArray, который позволяет работать с массивом такого типа, в котором индексный диапазон устанавливается пользователем. Например, в диапазоне от 6 до 10, или от -9 до 15.

Подсказка: В классе можно объявить две переменных, которые будут содержать верхний и нижний индекс допустимого диапазона.


Розробити клас Rational - дріб. Містить Numerator - чисельник, Denominator - знаменник. Клас має проходити всі тести в проекті.


Цель: Разработать программу, моделирующую танковый бой.

В танковом бою участвуют 5 танков «Т-34» и 5 танков «Pantera».
Каждый танк («Т-34» и «Pantera») описываются параметрами: «Боекомплект», «Уровень брони», «Уровень маневренности».
Значение данных параметров задаются случайными числами от 0 до 100.
Каждый танк участвует в парной битве, т.е.первый танк «Т-34» сражается с первым танком «Pantera» и т.д.
Победа присуждается тому танку, который превышает противника по двум и более параметрам из трех (пример: см. программу).
Основное требование: сражение (проверку на победу в бою) реализовать путем перегрузки оператора «*» (произведение).

  1. В решение добавить новый проект с именем «Day7(Tanks)», в котором будут промоделированы танковые сражения. В данный проект добавить ссылку на библиотеку классов «MyClassLib».
  2. В библиотеке классов «MyClassLib» создать папку «WordOfTanks», а в ней разработать класс с именем «Tank».

В классе должно быть реализовано
• Поля
закрытые поля, предназначенные для представления

  1. Названия танка.
  2. Уровня боекомплекта танка.
  3. Уровня брони.
  4. Уровня маневренности.

• Конструктор
Конструктор с параметрами, обеспечивающий инициализацию всех полей класса Tank.
При этом Боекомплект, Уровень брони, Уровень маневренности инициализируются случайными числами от 0 до 100 %.
Название танка передаются в конструктор из функции Main().

• Перегрузка оператора «^» (произведение)
При перегрузке оператора «^» (произведение) должна быть реализована проверка на победу в бою одного танка по отношению к другому.
Критерий победы — победивший танк должен превышать проигравший танк не менее чем по двум из трех параметров (Боекомплект, Уровень брони, Уровень маневренности).

• Методы:
Получение текущих значений параметров танка: Боекомплект, Уровень брони, Уровень маневренности в виде строки.

Важно! При разработке программы использовать обработку исключительных ситуаций.
Варианты возможных исключительных ситуаций рассмотреть самостоятельно!


Створити ієрархію класів з об’єктів: Прямокутник, Відрізок, Квадрат, Точка.
Створити масив з N елементів, який заповнюється випадково об’єктами з даної ієрархії.
Вивести на екран доступну інформацію по фігурі (довжину, площу периметр,..) та примітивно намалювати фігуру.


Створити абстрактний базовий клас «Транспортний засіб»
Розробіть похідні класи зображенні на малюнку.
Засоби масового перевезення людей, Сільськогосподарська техніка,
Легкові автомобілі, Вантажні автомобілі, Мотоцикли, Скутери.
Пасажиру потрібно проїхати з пункту А до пункту В з використанням різних транспортних засобів.
Кількість транспортних засобів генерується випадково.
Обчислити час і вартість проїзду пасажира.


Уявімо, ви робите систему фільтрації коментарів на якомусь веб-порталі, будь то новини, відео-хостинг, …
Ви хочете фільтрувати коментарі за різними критеріями, вміти легко додавати нові фільтри і модифікувати старі.
Припустимо, ми будемо фільтрувати спам, коментарі з негативним змістом і занадто довгі коментарі.
Спам будемо фільтрувати за наявністю зазначених ключових слів в тексті.

Негативний зміст визначатимемо за наявністю одного з трьох смайликів:
:(, =(, :|

Занадто довгі коментарі будемо визначати виходячи з даного числа - максимальної довжини коментаря.
Ви вирішили абстрагувати фільтр у вигляді наступного інтерфейсу:

interface TextAnalyzer
{
    Label processText(String text);
}

Label - тип-перерахування, які містить мітки, якими будемо позначати текст:
enum Label { SPAM, NEGATIVE_TEXT, TOO_LONG, OK }

Далі, вам необхідно реалізувати три класи, які реалізують даний інтерфейс: SpamAnalyzer, NegativeTextAnalyzer і TooLongTextAnalyzer.
SpamAnalyzer повинен конструюватися від масиву рядків з ключовими словами.
Об'єкт цього класу повинен зберігати в своєму стані цей масив рядків в приватному поле keywords.
NegativeTextAnalyzer повинен конструюватися конструктором за замовчуванням.
TooLongTextAnalyzer повинен конструюватися від int'а з максимальною допустимою довжиною коментаря.
Об'єкт цього класу повинен зберігати в своєму стані це число в приватному поле maxLength.

Напевно ви вже помітили, що SpamAnalyzer і NegativeTextAnalyzer багато в чому схожі - вони обидва перевіряють текст на наявність будь-яких ключових слів (в разі спаму ми отримуємо їх з конструктора, в разі негативного тексту ми заздалегідь знаємо набір сумних смайликів) і в разі знаходження одного з ключових слів повертають Label(SPAM і NEGATIVE_TEXT відповідно), а якщо нічого не знайшлося - повертають OK.
Давайте цю логіку абстрагуємося в абстрактний клас KeywordAnalyzer наступним чином:

Виділимо два абстрактних методу getKeywords і getLabel, один з яких буде повертати набір ключових слів, а другий мітку, якої необхідно позначити позитивні спрацьовування. Нам нема чого показувати ці методи споживачам класів, тому залишимо доступ до них тільки для спадкоємців.

Реалізуємо processText таким чином, щоб він залежав тільки від getKeywords і getLabel. Зробимо SpamAnalyzer і NegativeTextAnalyzer спадкоємцями KeywordAnalyzer і реалізуємо абстрактні методи.

Останній штрих - написати метод checkLabels, який буде повертати мітку для коментаря по набору аналізаторів тексту.
checkLabels повинен повертати першим не-OK мітку в порядку даного набору аналізаторів, і OK, якщо все аналізатори повернули OK.
Використовуйте, будь ласка, модифікатор доступу за замовчуванням для всіх класів.
У підсумку, реалізуйте класи KeywordAnalyzer, SpamAnalyzer, NegativeTextAnalyzer і TooLongTextAnalyzer і метод checkLabels.
TextAnalyzer і Label вже підключені, зайві обсяги імпорту вам не будуть потрібні.


Розробити клас SortedArrayList на основі ArrayList, який має методи:

  • Add – додає студента до групи студентів у положення відповідно до рейтингу.
  • ModifyIndex – дозволяє редагувати за індексом студента.
  • Перевизначити методи Insert класу ArrayList. Оскільки додавати в довільне положення неможливо, адже ми сортуємо по рейтингу.

Розробити клас TryPassword для перевірки пароля до заданих правил:

  • Довжина пароля повинна бути рівна або більша за зазначену.
  • Пароль повинен містити малі літери a…z;
  • Пароль повинен містити великі літери A…Z;
  • Пароль повинен містити арабські цифри;
  • Пароль повинен містити спеціальні символи %, *, ), ?, @, #, $, ~, …

Кількість правил для перевірки встановлюється через конструктор.
Для перевірки клас повинен мати функцію з параметром рядкового типу.
Функція повертає false у випадку не відповідності пароля одному із встановлених правил генерується відповідна виняткова ситуація, інакше – true.


В проекте Generics.BinaryTrees создайте класс бинарного дерева поиска так, чтобы он проходил приложенные тесты. Оптимизируйте код метода GetEnumerable так, чтобы он работал за O(n) по времени, где n - количество элементов в дереве, и O(1) по памяти.


Создать модель карточной игры.
Требования:

  1. Класс Game формирует и обеспечивает:
    1.1.1. Список игроков (минимум 2);
    1.1.2. Колоду карт (36 карт);
    1.1.3. Перетасовку карт (случайным образом);
    1.1.4. Раздачу карт игрокам (равными частями каждому игроку);
    1.1.5. Игровой процесс. Принцип: Игроки кладут по одной карте.
    У кого карта больше, то тот игрок забирает все карты и кладет их в конец своей колоды.
    Упрощение: при совпадении карт забирает первый игрок, шестерка не забирает туза.
    Выигрывает игрок, который забрал все карты.
  2. Класс Player (набор имеющихся карт, вывод имеющихся карт).
  3. Класс Karta (масть и тип карты (6–10, валет, дама, король, туз)).

Петро розробив генератор звітів в проекті Delegates.Reports, який рахує просту статистику про погоду за кількома параметрами за кілька днів. Його генератор може створювати два звіти: звіт в HTML, який рахує середнє і стандартне відхилення, і звіт в Markdown, який рахує медіани.

Однак, що робити, якщо потрібно порахувати медіани і вивести результат в HTML?

А якщо потрібен буде третій звіт в HTML?

Поточне рішення вкрай незручно для таких ситуацій.

Допоможіть Петру перевести його код з успадкування на делегування. Розділіть відповідальності за оформлення звіту і по обчисленню показників. В результаті сам клас ReportMaker вам, можливо, вже й не знадобиться.


  1. Дана целочисленная последовательность.
    Извлечь из нее все положительные числа, сохранив их исходный порядок следования.

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

  3. Дана целочисленная последовательность.
    Извлечь из нее все четные отрицательные числа, поменяв порядок извлеченных чисел на обратный.

  4. Даны цифра D (целое однозначное число) и целочисленная последовательность A.
    Извлечь из A все различные положительные числа, оканчивающиеся цифрой D (в исходном порядке).

  5. Даны целое число K (> 0) и строковая последовательность A.
    Из элементов A, извлечь те строки, которые имеют длину > K и начинаются с заглавной латинской буквы.

  6. Исходная последовательность содержит сведения о клиентах фитнес-центра.
    Каждый элемент последовательности включает следующие целочисленные поля:
    <Код клиента> <Год> <Номер месяца> <Продолжительность занятий (в часах)>
    Найти элемент последовательности с минимальной продолжительностью занятий.
    Вывести эту продолжительность, а также соответствующие ей год и номер месяца (в указанном порядке на той же строке).
    Если имеется несколько элементов с минимальной продолжительностью, то вывести данные того из них, который является последним в исходной последовательности.

    Указание. Для нахождения требуемого элемента следует использовать методы OrderByDescending и Last.


Игра «Автомобильные гонки»
Разработать игру "Автомобильные гонки" с использованием делегатов.

  1. В игре использовать несколько типов автомобилей: спортивные, легковые, грузовые и автобусы.
  2. Реализовать игру «Гонки».
    Принцип игры: Автомобили двигаются от старта к финишу со скоростями, которые изменяются в установленных пределах случайным образом.
    Победителем считается автомобиль, пришедший к финишу первым.

Рекомендации по выполнению работы

  1. Разработать абстрактный класс «автомобиль» (класс Car). Собрать в нем все общие поля, свойства (например, скорость) методы (например, ехать).
  2. Разработать классы автомобилей с конкретной реализацией конструкторов и методов, свойств. В классы автомобилей добавить необходимые события (например, финиш).
  3. Класс игры должен производить запуск соревнований автомобилей, выводить сообщения о текущем положении автомобилей, выводить сообщение об автомобиле, победившем в гонках. Создать делегаты, обеспечивающие вызов методов из классов автомобилей (например, выйти на старт, начать гонку).
  4. Игра заканчивается, когда какой-то из автомобилей проехал определенное расстояние (старт в положении 0, финиш в положении 100). Уведомление об окончании гонки (прибытии какого-либо автомобиля на финиш) реализовать с помощью событий.

Написать приложение, позволяющее:
• создать новый файл с именем «Day17.txt». В случае наличия файла с таким именем — вывести сообщение;
• открыть и прочесть файл с именем «Day17.txt». В случае отсутствия — вывести сообщение об отсутствии;
• записать форматированную информацию в файл.

Структура записываемой информации:
Исходные данные: двумерный массив дробных чисел,
двумерный массив целых чисел.

  • фамилия, имя, отчество, дата рождения,
  • с новой строки количество строк и столбцов массива дробных чисел,
  • с новой строки значения элементов двумерного массива дробных чисел (каждая строка массива в новой строке файла).
  • с новой строки количество строк и столбцов массива целых чисел.
  • с новой строки двумерный массив целых чисел, записанных в одну строку.
  • с новой строки текущая дата.

• прочесть информацию из файла и преобразовать ее в соответствии с исходной структурой.
Реализовать простейшее меню.


Прочитать текст C#-программы (выбрать самостоятельно) и все слова public в объявлении полей классов заменить на слово private. В исходном коде в каждом слове длиннее двух символов все строчные символы заменить прописными.
Также в коде программы удалить все «лишние» пробелы и табуляции, оставив только необходимые для разделения операторов.
Записать символы каждой строки программы в другой файл в обратном порядке.


Со страницы http://finance.i.ua/ (сохранить файл как html страницу).
Выполнить экспорт курса доллара по всем банкам.
Из input файла забрать только необходимую информацию о названии банка,
курсе покупки и продажи и записать ее в output.xml файл


  1. Создать библиотеку классов с именем «ClassLib».
  2. В библиотеке «ClassLib» создать класс с именем «РС», описывающий компьютер.
    Данный класс должен включать:
  • 3–4 поля (марка, серийный номер и т.д.),
  • свойства (к каждому полю),
  • конструкторы (по умолчанию, с параметрами),
  • методы, моделирующие функционирование ПЭВМ (включение/выключение, перегрузку).
  1. Создать новый проект (тип — консольное приложение) с именем «SerializConsolApp». Добавить ссылку на библиотеку «ClassLib».
  2. В функции Main() данного проекта создать коллекцию (на базе обобщенного класса List) и добавить в коллекцию 4–5 объектов класса «РС».
  3. Произвести сериализацию коллекции в бинарный файл с именем «listSerial.txt» в каталоге на диске D. В случае наличия аналогичного файла в каталоге старый файл перезаписать новым файлом и вывести об этом уведомление.
  4. Создать новый проект (тип — консольное приложение) с именем «DeserializConsolApp». Добавить ссылку на библиотеку «ClassLib».
  5. В функции Main() произвести десериализацию коллекции, созданной в проекте с именем «SerializConsolApp» и вывести на экран.

Дополнительно:
8. В проекте «SerializConsolApp» реализовать функцию сохранения каждого объекта коллекции в отдельном каталоге с именами («объект1.txt», «объект2.txt», «объект3.txt»…).
В проекте «DeserializConsolApp» функцию чтения объектов из файлов и вывода на экран значений полей объектов.

Releases

No releases published

Packages

No packages published

Languages