Интересные задачи для программирования. Ч. 1
2. Генератор случайных чисел заполняет массивы А и В пятьюстами цифрами (0-9). Теперь рассматривая А и В как большие 500-значные числа, написать функцию/процедуру или просто программу, создающую третий массив С, эквивалентный А+В, то есть заполнить цифрами в соответствии сложения этих двух 500-значных чисел.
3. Используя опыт задачи номер 2, написать функцию, в которую передаются 2 массива, а функция возвращает третий массив С, эквивалентный А*B.
Примечание: принять во внимание, что при умножении, размер массива С может быть гораздо больше А или В.
4. По счётчику массив А заполняется натуральными числами по порядку до 1000. Требуется написать программу/алгоритм, хорошо перемешивающий эти числа. Реализуйте алгоритм без использования других массивов кроме А.
Примечание: теория вероятности говорит, что невозможно точно проверить насколько хорошо перемешан массив чисел, ведь прямая последовательность чисел возможна равновероятно как и любая другая конкретная последовательность. Примите для решения такую характеристику "хорошего перемешивания". "Хорошо перемешанный" массив чисел не должен иметь 3 подряд идущих числа (как по возрастанию так и по убыванию). Написав программу, запустите проверку для 1тыс вызовов функции перемешивания с проверкой. Если ни в одном из тестов не будет найдена последовательность из трёх подряд идущих чисел, то будем считать, что функция перемешивает хорошо.
5. Написать алгоритм, заполняющий одномерный массив размером 1000 числами от 1 до 1000 в случайном порядке без повторений - весь массив должен быть заполнен, и каждое число встречается только 1 раз.
Если приходят разные идеи реализации, написать несколько программ и используя временной анализ, выделить самый быстродействующий алгоритм.
6. В единичный куб поместить шар радиуса 0,35 в случайную координату. Затем поместить аналогично куб со стороной 0,6. Вычислить объем перекрывания двух тел.
6* -усложнение. Та же ситуация, но вычислить внешнюю площадь поверхности образованного сложного тела (части "погружённых" граней не учитываются).
6**-усложнение 2. Та же ситуация, но вычислить длину периметра зоны пересечения.
7. "Кольцевой" одномерный массив. Создать массив от 1 до 1000, позволяющий после элемента 1000 при попытке переместить в (+1) перемещался в 1, а из 1 при попытке перейти в (-1), переходил в 1000 ("закольцовывался").
Для проверки, переместитесь в кольцевом массиве на 2001 шагов по (+1), и так же в минус, не вызвав ошибок выполнения программы.
Свидетельство о публикации №214102700314