Задачи для самостотяельного решения к зачету

1. Платежный терминал должен выдать пользователю некоторую сумму с помощью монет номиналом 1, 2, 5 и 10 рублей. Количество доступных монет в платежном терминале задается в переменных c1, c2, c5 и c10, соответственно. Пользователь вводит с клавиатуры положительную целую сумму, а программа сообщает, каким набором монет (с учётом количества доступных) сумма может быть выдана так, чтобы количество отдаваемых монет было минимальным, либо сообщает, что для выдачи суммы в терминале недостаточно монет.

2. В программе создан двумерный массив вещественных чисел (double m[6][2]). Заполнить массив случайными вещественными числами из отрезка [-10;10]. Считая, что каждая «строка» массива хранит пару координат (абсциссу и ординату) некоторой точки на плоскости. Выяснить и сообщить на экран, какие две точки из шести наиболее удалены друг от друга.

3. Даны два массива случайных целых чисел из отрезка [0;9], каждый длиной по 12 элементов. Вывести оба массива на экран на разных строках и на третьей строке вывести наибольшую подпоследовательность, входящую в состав обоих массивов, либо сообщить, что такая подпоследовательность отсутствует.

4. Пользователь вводит с клавиатуры две строки, сообщить, входит ли первая строка во вторую как подстрока. Например, строка "мир" входит как подстрока в строку "Я за мир во всём мире" (притом дважды, хотя программа и не обязана это определять), но не входит в строку "Луна является спутником Земли".

5. Реализовать функцию, проверяющую, является ли указанное пользователем с клавиатуры натуральное число n простым. Замерить, сколько секунд потребуется машине на проверку простоты чисел 479001599, 1073676287, и 2147483647. Сравнить, насколько сильно будут отличаться время исполнения, если проверять все возможные делители из отрезка [2;n-1] и если ограничиться проверкой только возможных делителей из отрезка [2;√n].

6. Реализовать две функции для вычисления n-го числа Фибоначчи: одна функция должна вычислять число итерационным способом, другая — рекурсивным. Создать программу, позволяющую пользователю выбрать метод вычисления и получить результат. При запуске программа должна спрашивать каким методом искать нужное число (например: «Введите 1, если хотите вычислять итерационным методом, и 2, если хотите использовать рекурсию»), затем спрашивать n, а затем вычислять результат и выводить его на экран.

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