Примеры программ

Примеры программ #

На 1-й итерации вы должны написать по 2 полноценных примера программ на каждый эпик:

  • всего 2 примера, если вы целитесь на оценку 3
  • всего 4 примера, если вы целитесь на оценку 4
  • всего 6 примеров, если вы целитесь на оценку 5

Каждая группа из 2 примеров должна показывать возможности языка, которые появятся в очередном эпике.

Варианты #

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

Числа и массивы чисел #

  1. CircleSquare — читает радиус круга и печатает его площадь
  2. GCD — читает два целых числа, печатает наибольший общий делитель (НОД, GCD) этих чисел
    • использует алгоритм Евклида для поиска НОД
  3. FizzBuzz — в цикле читает целые числа и печатает ответ, пока не встретит конец ввода
    • если число делится на 3, то печатает Fizz
    • если делится на 5, то печатает Buzz
    • может напечатать “FizzBuzz”, если число делится как на 3, так и на 5
    • если не делится ни на 3, ни на 5, то печатает само число
  4. SquareRoot — читает действительное число и печатает его квадратный корень
    • печатает ERROR, если корень не является действительным числом
  5. Factorial — читает целое число и печатает его факториал
    • можно использовать либо не использовать рекурсию
  6. Eratosthenes — читает целое число и печатает все простые числа, не превышающие заданное число
    • использует алгоритм решета Эратосфена
    • производительность реализации не важна
  7. Reverse — читает строку и печатает её в перевёрнутом виде
  8. SortNumbers — читает последовательность целых чисел и печатает её в отсортированном виде
    • можно использовать любой алгоритм сортировки со сложностью не выше O(N2)
    • примеры алгоритмов: сортировка пузырьком, быстрая сортировка, сортировка вставкой, сортировка слиянием
  9. SumNumbers — читает последовательность действительных чисел и печатает сумму чисел
  10. HeronFormula — читает координаты вершин треугольника в виде 3 пар чисел и печатает площадь треугольника
    • в программе должна быть определена структура Point2D, представляющая точку в двумерном пространстве
    • в программе должна быть определена функция либо метод Distance(...) для вычисления расстояния между двумя точками

Ветвления, циклы и функции #

  1. Factorial — читает число N и считает его факториал N!, используя цикл либо рекурсию
  2. Fibonacci — читает число N и считает N-е число Фибоначчи, используя цикл либо рекурсию
  3. IsPrime — читает число N и проверяет, является ли оно простым
    • Подсказка: для проверки простоты N достаточно проверить, что оно не делится нацело ни на одно из чисел от 1 до квадратного корня из N
  4. GCD — читает два числа и вычисляет их НОД (наибольший общий делитель) алгоритмом Евклида
  5. SumDigits — вычисляет сумму цифр числа в десятичном представлении
    • Подсказка: для реализации достаточно выделять следующую цифру путём деления с остатком и прибавлять её к сумме, пока число не обратится в ноль
  6. MultiplicationTable — читает число N выводит таблицу умножения от 1×1 до N×N. Каждая i-я строка вывода — это результаты умножения числа i на числа от 1 до N.
  7. Pow — читает два числа A и B и возводит число A в целочисленную степень B с помощью умножений в цикле
    • Реализация должна использовать именно цикл, а не встроенный оператор или функцию возведения в степень
  8. Sqrt — вычисление квадратного корня методом Ньютона
    • Реализация должна использовать именно цикл с методом Ньютона, а не встроенный оператор или функцию
  9. QuadraticEquation — решение квадратного уравнения с определением нуля, одного или двух корней
    • Программа должна читать три числа: коэффициенты квадратного уравнения
    • Программа должна правильно определять количество корней уравнения и выводить сначала количество корней (0, 1 или 2), а затем вычисленные корни

Работа со строками #

  1. ReverseString — читает строку, переворачивает её символы и печатает результат
    • Пример: “Hello world!” → “!dlrow olleH”
    • Подсказка: используйте технику двух указателей (two pointers) для переворота строки
  2. CheckPalindrome — читает строку и печатает “yes”, если это палиндром, а иначе печатает “no”
    • Палиндром — это строка, которая читается одинаково как слева направо, так и справа налево
    • Подсказка: используйте технику двух указателей (two pointers) для проверки на палиндром
    • Вы должны сделать проверку нечувствительной к регистру
    • Пример: “Hello” → “no”
    • Пример: “Anna” → “yes”
  3. ToLower — читает строку, переводит все её символы в нижний регистр и печатает результат
    • Пример: “Hello world!” → “hello world!”
  4. CountVowels — читает строку и выводит число гласных букв английского алфавита в этой строке
    • Пример: “Hello world!” → “3”
  5. ValidateIpv4 — читает строку и проверяет, что это допустимый IPv4 адрес
    • Для допустимых адресов печатает “yes”
    • Для недопустимых печатает “no”
  6. FizzBuzz — читает число за числом в цикле и далее печатает:
    • “Fizz”, если число делится на 3
    • “Buzz”, если делится на 5
    • “FizzBuzz”, если число делится и на 3, и на 5
    • Само число в остальных случаях
  7. ValidateDate — читает дату в формате “YYYY-MM-DD” и проверяет корректность указанной даты
    • Для допустимых дат печатает “yes”
    • Для недопустимых печатает “no”
    • Следует поддерживать как минимум даты в диапазоне от 1000-01-01 до 2999-12-31
    • Пример: “2025 february 10” → “no”
    • Пример: “2025-02-10” → “yes”
    • Пример: “2025-02-29” → “no”
  8. IsLeapYear — читает номер года, проверяет, является ли он високосным, печатает “yes” или “no”
    • Проверять надо согласно григорианскому календарю
    • Пример: “2025” → “no”
    • Пример: “2024” → “yes”
    • Пример: “1600” → “no”
    • Пример: “2000” → “yes”