|
||||||||||||||||||||
Задание для выполнения. Описание алгоритма программы. Описание переменных и структур данных, которые применяются в программе. Текст программы с комментариями1. Задание для выполнения Натуральные числа от 1 до N записаны по порядку и расставлены по кругу. Начиная с 1, вычеркивается каждое m-ое число (m, 2m, 3m, …). Процесс удаления чисел продолжается циклически по кругу до тех пор, пока не останется (m-1) число. Распечатайте их.
2. Описание алгоритма программы Пусть n, m – вводимые числа Заполним массив array возрастающей последовательностью и вызовем функцию func с аргументам array и m – 1. В функции func будет проходить массив array по кругу с помощью операции i += m. Чтобы не выходить за массив, будем проверять i> count(array) и изменять операцией i %= count(array). С помощью стандартной функции array_splice будем удалять элементы из массива. Если длина массива стала равна m – 1, то вернуть и вывести array, в противной случае – вызвать функцию ещё раз. 3.Описание переменных и структур данных, которые применяются в программе
4. Текст программы с комментариями <form method="get"> Введите число: <table> <tr> <td>n</td> <td><input type="number" name="n"/></td> </tr> <tr> <td>m</td> <td><input type="number" name="m"/></td> </tr> </table> <input type="submit" value="Отправить"/> </form> <?php function func(&$array, $m, $i = 0){ $i += $m; if ($i >= count($array)){ $i %= count($array); } array_splice($array, $i, 1); if (count($array) == $m){ return $array; } else{ return func($array, $m, $i); } } if (!isset($_GET['n'], $_GET['m'])) { return; } $array = []; for ($i = 0; $i < $_GET['n']; ++$i){ $array[$i] = $i + 1; } $array = func($array, $_GET['m'] - 1); foreach ($array as $item) { echo $item, ' '; }
|
||||||||||||||||||||
|