ммм. База заданий. Линейные и разветвляющиеся
Скачать 0.98 Mb.
|
Биоритмы человека Составить программу для определения физической, эмоциональной и интеллектуальной активности человека. Известные данные о биоритмах (в сутках): • 23.6884 - период физической активности, • 28.4261 - период эмоциональной активности, • 33.1638 - период интеллектуальной активности. На экран должны быть выведены следующие результаты работы программы: дата рождения, • текущая дата, • общее количество дней, часов, минут и секунд, разделяющих обе даты, • прогноз на месяц вперед дат, соответствующих максимумам, минимумам и нулям биоритмов каждого из трех основных видов человеческой активности, • возможные «неблагоприятные» даты совпадения нулей двух или трех биоритмов, • возможные «опасные» даты совпадения минимумов двух или трех биоритмов, 107 108 • графики физической, эмоциональной, интеллектуальной и суммарной активности человека, если сумеете. Календарь. Введите дату рождения и подсчитайте, сколько лет, месяцев и дней прошло с неё до сегодняшнего дня. Монахи. Для предотвращения утечки информации в монастыре Святого Павла в Калифорнии соблюдаются следующие правила: 1) каждый монах известен миру только по своему личному номеру; 2) у каждого монаха в течение жизни не может быть более трех учеников; 3) у каждого монаха есть только один учитель. Составить программу, которая сможет решить следующие задачи: 1) по номеру монаха узнать, был ли такой монах и если был, то кто были его учитель, учитель его учителя и т.д. до самого Святого Павла; 2) по двум монашеским номерам найти их общего ближайшего учителя. Исходные данные о монахах представляют собой строки, в каждой из которых указан номер монаха и после него три номера его учеников. Если у монаха было менее трех учеников, то на соответствующих местах будут стоять нули. Числовые данные для решения конкретной задачи – это строки, в каждой из которых стоит код строки и один или два монашеских номера. Если код строки равен единице, то за единицей будет стоять только один номер. Если код строки равен двум, то за двойкой будет стоять два номера. Указания: 1) монашеский номер Святого Павла равен единице; 2) номера всех остальных монахов – целые числа от 2 до 600; 3) номера монахов не обязательно последовательны, но номер ученика всегда больше, чем номер его учителя. Подсказки: 1) поиск учителей по номеру монаха рекомендуется делать с помощью рекурсии; 2) для ввода исходных данных о монахах следует использовать двумерный массив 600х3, так чтобы, например, A[45,2] означало: 2-о1 ученик 45-ого монаха; 3) для решения заданного варианта следует воспользоваться одномерным массивом из 600 элементов, так чтобы, например, A[45] означало: учитель 45-ого монаха. Пример Исходные данные о монахах: 32 41 42 43 25 31 32 0 24 33 34 0 13 24 25 0 11 21 22 23 1 11 12 13 Вариант задания: 1 31 1 51 2 34 41 2 31 51 Результаты работы программы: 31 – монах, его учителя 25, 13 51 – не монах 34 и 41 – оба монахи, и их общий учитель 13 51 – не монах 109 110 Ханойская башня Утверждается, что эту задачу сформулировали и решают до сих пор монахи каких-то монастырей Тибета. Задача состоит в том, чтобы пирамидку из колец (на манер детской игрушки), нанизанную на один из 3-х стержней, перенести на другой такой же стержень, придерживаясь строгих правил: § пирамидка состоит из n колец разного размера, уложенных по убыванию диаметра колец одно на другое; § перекладывать за одну операцию можно только одно кольцо с любого штыря на любой, но только при условии, что класть можно только меньшее кольцо сверху на большее, но никак не наоборот; § нужно, в итоге, всю исходную пирамидку, лежащую на штыре № 1, переместить на штырь № 3, используя штырь № 2 как промежуточный. Например, для 2-х колец результат получается такой вот последовательностью перекладываний: 1 => 2, 1 => 3, 2 => 3. По преданию эту задачу по перекладыванию n=64 колечек решают тибетские монахи, и когда они её, наконец, решат, тогда и наступит конец света - Армагеддон в нашей западной нотации. Решение здесь (если его таковым можно назвать) состоит в том, чтобы при необходимости переноса пирамиды из n колец с штыря с номером from на штырь с номером to последовательно сделать следующее: § перенести (каким-то образом) меньшую пирамиду из n-1 колец временно на штырь с номером temp, чтобы не мешала; § перенести оставшееся единственное нижнее (наибольшее) кольцо на результирующий штырь с номером to, после чего, точно так же как в первом пункте, водрузить пирамиду (n-1 колец) с номера temp поверх этого наибольшего кольца на штырь с номером to. Здесь важно то, что мы не знаем, каким образом выполнить алгоритм, и не умеем выполнить 1-й и 3-й пункты нашей программы, но надеемся, что алгоритм будет рекурсивно раскручиваться по аналогии, то есть по тому же алгоритму, но для меньшего числа n-1 (основополагающий принцип рекурсии), пока n не станет равным 1, а там уже совсем просто. И вот как разворачивается решение для различных n: n=2 1 => 2 | 1 => 3 | 2 => 3 | общее число перемещений 3 n=3 1 => 3 | 1 => 2 | 3 => 2 | 1 => 3 | 2 => 1 | 2 => 3 | 1 => 3 | общее число перемещений 7 n=4 1 => 2 | 1 => 3 | 2 => 3 | 1 => 2 | 3 => 1 | 3 => 2 | 1 => 2 | 1 => 3 | 2 => 3 | 2 => 1 | 3 => 1 | 2 => 3 | 1 => 2 | 1 => 3 | 2 => 3 | общее число перемещений 15 n=5 1 => 3 | 1 => 2 | 3 => 2 | 1 => 3 | 2 => 1 | 2 => 3 | 1 => 3 | 1 => 2 | 3 => 2 | 3 => 1 | 2 => 1 | 3 => 2 | 1 => 3 | 1 => 2 | 3 => 2 | 111 1 => 3 | 2 => 1 | 2 => 3 | 1 => 3 | 2 => 1 | 3 => 2 | 3 => 1 | 2 => 1 | 2 => 3 | 1 => 3 | 1 => 2 | 3 => 2 | 1 => 3 | 2 => 1 | 2 => 3 | 1 => 3 | общее число перемещений 31 Только не спровоцируйте конец света! Число перестановок: для n=10 потребуется 1023 перестановки; для любого n число перестановок равно 2 n–1 , что представляет собой очень высокую степень роста вычислительной сложности задачи — экспоненциальную. Примечание: решить эту задачу не рекурсивными методами - очень непростое занятие! РАЗНЫЕ ЗАДАЧИ Синтезатор Написать программу, которая генерирует звук определенной частоты в зависимости от нажатой клавиши и изображает высоту звука условными ступеньками. Таким образом, программа должна имитировать игру на синтезаторе. Гипотеза Коллатца С помощью рекурсивных формул задан закон образования числовой последовательности: Задано целое число Max и значение x принадлежит [1;Max]. Найти n, для которого a n =1. Например, для Х=10 существует n=6: a 0 =x=10, a 1 =f(10)=10/2=5, a 2 =f(5)=3*5+1=16, a 3 =f(16)=16/2=8, a 4 =f(8)=8/2=4, a 5 =f(4)=4/2=2, a 6 =f(2)=2/2=1. Указания: 1) для вычисления F(x) использовать функцию; 2) для нахождения n использовать функцию от x и Max; 3) таблицы результатов печатать в два параллельных столбика: x | n x | n Квадрат и куб Представить целое число в виде отношения квадрата и куба каких-то целых чисел. Текстовый файл Исходный файл содержит некоторое количество строк. Первый знак в строке определяет тип действия, которое нужно произвести со стоящими в строке целыми числами: ЗНАК КОЛИЧЕСТВО ЧИСЕЛ В СТРОКЕ ДЕЙСТВИЯ НАД ЧИСЛАМИ + Любое количество чисел, среди которых есть ноль Просуммировать числа, стоящие в строке слева от нуля * Два числа Найти произведение этих чисел 112 113 114 115 / Одно число Найти число, обратное заданному ! Одно число Найти факториал этого числа М Не менее пяти чисел Найти наибольшие среди первых пяти чисел в строке Х Любое кол-во чисел Найти порядковый номер наименьшего числа в строке Указание: ввод и вывод осуществлять с помощью файлов. Текстовый файл. Создать текстовый файл, введя туда осмысленный текст на русском или английском (немецком, французском и т.п. языках). Организовать вывод данных из файла по следующим правилам: 1) в начале каждой строки напечатать номер строки; 2) выводить символы из файла, печатая перед каждым из них его ASCII-код; 3) после каждых десяти символов строки и при окончании строки исходного файла переходить на новую строку; 4) в конце каждой строки исходного файла печатать «конец строки» и количество знаков в этой строке; 5) при окончании исходного файла напечатать «конец файла»; 6) после того, как выведен на экран весь файл, надо указать: а) сколько символов было в исходном файле; б) сколько строк было в исходном файле; в) какой символ имел максимальный и какой – минимальный код (эти коды указать). Примечание. Наименьший из возможных кодов – 0, наибольший – 255. Всегда печатайте код в поле величиной 3 позиции. Символ с кодом 32 – это пробел, которого не видно на экране. Напечатать содержимое текстового файла, выписывая литеры каждой его строки в обратном порядке. Содержимое текстового файла, разделённое на строки, переписать в другой текстовый файл, перенося при этом в конец каждой строки все входящие в неё цифры (с сохранением исходного взаимного порядка как среди цифр, так и среди остальных литер строки). Заданы массивы A[1..n] и B[1..n]. Необходимо найти такие индексы i0 и j0, что a i0 + b j0 = max (a i + b j ), где 1<=i<=n, 1<=j<=m , i Содержимое текстового файла, разделённое на строки, переписать в другой текстовый файл, перенося при этом в конец каждой строки все входящие в неё цифры (с сохранением исходного взаимного порядка как среди цифр, так и среди остальных литер строки). Вычислить сумму ряда ∑ =1 + # *! > ) * Вычислить сумму ряда 𝑆 = ∑ ∑ #,:*)(*.) #,3;:(<.) - < ) * Даны x, y, z. Вычислить a, b, если: 116 117 118 119 120 121 122 123 124 𝑎 = !"#$%&' ! " ( ) !*$+, # ⁄ , 𝑏 = 1 + / # 0*/ # 1 ⁄ Из заданной строки удалить все цифры и переписать их в другую строку. Дано натуральное число n. Получить все его натуральные делители. Даны x, y, z. Вычислить a, b, если: 𝑎 = 𝑦 + & # *2 $# %&$' ' ⁄ 2 , 𝑏 = '1 + 𝑡𝑔 ! / ! * Определить самое длинное слово в строке. Найти минимальный и максимальный элементы двумерного массива действительных чисел. Даны x, y, z. Вычислить a, b, если: 𝑎 = (1 + 𝑦) &*. 3& # *45 ⁄ 6 )$)# *) (& # *4) ⁄ , 𝑏 = )*"#$(.'!) & * !*$+, # / ⁄ Сократить число пробелов, разделяющих слова в строке до одного. Найти 20 первых простых чисел. Дана матрица целых чисел размера m x n. Подсчитать количество отрицательных элементов в нечетных строках. Дана квадратная матрица размера n x n. В строках с отрицательным элементом на главной диагонали вычислить сумму всех элементов и найти максимальный элемент. Дано натуральное число n. Найти все совершенные числа меньшие n. (Совершенным называется число равное сумме его делителей, например, 6 = 1 + 2 + 3.) Найти натуральное число в диапазоне от 1 до 10000 с максимальной суммой делителей. Дана матрица целых чисел размера m x n. Вычислить суммы элементов по строкам и по столбцам. Имеется текстовая строка, которая содержит произвольное скобочное выражение (скобки (), [], или {}). Необходимо создать функцию check(), которая будет проверять это скобочное выражение на правильность: check(“y(x)”) -> true 125 126 127 128 129 130 131 132 133 134 135 136 137 138 check(“[(]”) -> false check(“[{}]”) -> true check(“)(“) -> false check(“”) -> true check(“b([{}-()]{a})”) -> true Написать функцию, которая будет возвращать значение true, если текст содержит символы только русского языка, и false при наличии недопустимых для русского текста символов, например, латинское «с» вместо русского «с». Пользователь вводит строку символов и искомый символ. Посчитать, сколько раз он встречается в строке. Окружности В прямоугольной системе координат задаются координаты двух окружностей и 10 точек. Задача программы: нахождение положения точек относительно окружностей. Принцип работы. После ввода координат окружностей и точек программа выводит на экран координаты центра окружности, ее радиус и в виде таблицы 20 пронумерованных точек. Затем программа создает файл, в который записывает результаты исследования, и файл распечатывается на экране. Решето Сундарама Решето Сундарама – алгоритм поиска всех простых чисел в некотором заданном диапазоне. Он был разработан в 1934 году ныне безызвестным студентом из Индии С. П. Сундарамом. Принцип работы алгоритма Сундарама сводится, как и в его знаменитом предшественнике, к последовательному отсеиванию всех ненужных чисел. Но у него есть одна небольшая особенность: результатом работы алгоритма будет последовательность простых чисел из диапазона от 2 до удвоенного значения граничного числа. Допустим необходимо получить все простые числа до некоторого N, тогда выходными данными будут все простые числа от 2 до 2N+1. Решето Сундарама из ряда натуральных чисел, не превышающих N, исключает числа вида 2ij+i+j. Результат данного выражения ни при каких значениях входящих в него переменных не превышает N (2ij+i+j≤N). Соблюдая это условие, а также то, что i всегда меньше или равно j, переменные i и j пробегают все натуральные значения из множеств: После исключения всех ненужных чисел необходимо увеличить каждое оставшиеся число в два раза и прибавить единицу (2i+1). Итоговое множество будет содержать числа: 2, 3, …, 2N+1. Задано целое положительное число n. Разработать программу вычисления значения у по формуле: у=(1+(2+(3+...(n-1+n 1/2 ) 1/2 ...) 1/2 ) 1/2 ) 1/2 139 140 141 142 143 Разработать программу вычисления n-чисел последовательности (ряда) Фибоначчи. Последовательность Фибоначчи задается множеством чисел, каждое из которых определяется как сумма двух предыдущих, за исключением первых двух элементов последовательности - они равны единице: F 0 =F 1 =l; F n =F n-1 +F n-2 Транспонировать матрицу случайных чисел размерности 3x3, Разработать программу, которая определяет цифровой корень числа. Цифровой корень числа находится через сумму составляющих его цифр до тех пор, пока эта сумма сама не станет цифрой. Например, для числа 155 цифровой корень находится так: 1+5+5=11, 1+1=2. Цифровой корень 155 равен 2. Вычислить 1) значение функции Y=F(X) при заданном X, вывести полученный результат и проверить принадлежность точки с координатами (X,Y) заштрихованной области 2) проверить принадлежность точки с координатами (X1,Y1) заштрихованной области. Варианты заданий: 1. 1) при Х=4.741 2) координаты исследуемой точки: (0.5;0.5) 2. 1) при Х=2.312; 2) координаты исследуемой точки: (1.5;0.5) 3. 1) при Х=12.7409 2) координаты исследуемой точки: (0.2;0.9) 4. 1) при Х=32.872 2) координаты исследуемой точки: (0.75;-0.3) 5. 1) при Х=-2.6312 2) координаты исследуемой точки: (0.2;0.45) 6. 1) при Х=-0.387 2) координаты исследуемой точки: (0.5;-2.5) 7. 1) при Х=4.352 2) координаты исследуемой точки: (0.0;0.0) 8. 1) при Х=0.112 2) координаты исследуемой точки: (1.0;1.5) X X X Y - + = 4 2 3 ) (X SIN Y X - = e ) ( 1 X SIN X Y + - = ) ( ) ( 3 X SIN X COS X Y + * = X X tg Y + = ) ( 2 1 1 1 X X Y + + = 1 + = X ch Y 2 ) ( X X ARCSIN Y + = 144 145 146 147 9. 1) при Х=-0.7129 2) координаты исследуемой точки: (-0.5;-0.9) 10. 1) при Х=- 4.4172 2) координаты исследуемой точки: (1.5;0.0) Суммирование рядов Варианты заданий 1. Найти сумму целых положительных чисел, кратных 4 и меньших 100. 2. Найти сумму целых положительных четных чисел, меньших 100. 3. Найти сумму целых положительных нечетных чисел, меньших 200. 4. Найти сумму целых положительных чисел, больших 20, меньших 100 и кратных 3. 5. Найти сумму ряда с точностью , общий член которого 6. Найти сумму ряда с точностью , общий член которого 7. Найти сумму ряда с точностью , общий член которого 8. Найти сумму ряда с точностью , общий член которого 9. Найти сумму ряда с точностью , общий член которого 10. Найти сумму ряда с точностью , общий член которого 11. Найти сумму ряда с точностью , общий член которого 12. Найти сумму ряда с точностью , общий член которого 13. Найти сумму ряда с точностью , общий член которого 14. Найти сумму ряда с точностью , общий член которого 15. Найти сумму ряда с точностью , общий член которого 16. Найти сумму 10 членов ряда, в котором 17. Найти сумму 15 членов ряда, в котором 18. Найти сумму 12 членов ряда, в котором 19. Найти сумму 7 членов ряда, в котором 20. Найти сумму 9 членов ряда, в котором ДЛИННАЯ АРИФМЕТИКА Напишите программу, которая введет числа N и K такие, что N (перебором, без комбинаторики), с учетом одного из следующих ограничений. 1) Гарантируется, что результат не превышает 2 31 2) Результат может быть любым, но вычислять и печатать надо только ответы, не превышающие 2 31 . В противном случае надо вывести сообщение "Слишком большой результат". 3) Результат может быть любым, но вычислять и печатать надо только ответы, не превышающие 2 100 . В противном случае надо вывести сообщение "Слишком большой результат". )) ( ( x arctg SIN Y = ) ( 5 x arctg Y * = 3 10 - = e n n n n a / ) 1 ( 1 - - = 3 10 - = e n n n a 3 / 1 2 / 1 + = 3 10 - = e n n n a 2 / ) 1 2 ( - = 3 10 - = e ( )( ) ( ) 1 3 2 3 / 1 + - = n n a n 3 10 - = e ! / 10 n a n n = 3 10 - = e ( ) ( ) ! 2 / ! n n a n = 3 10 - = e n n n n a / ! = 3 10 - = e ( ) ! / ! 2 n n n n n a × = 3 10 - = e )! 3 /( ! 3 n n a n n × = 3 10 - = e ) 3 /( ! n n n n a = 3 10 - = e ( ) )! 2 /( ! 2 2 n n n a = 2 / ) ! ln( n n a n = n n n n n a ) /(ln ln = n n n n a / ! = 3 n n e a = n n e n a 3 = 148 149 |