Управляющие структуры

Практические задания

Краткое содержание лекции | Теоретические задания

Задание состоит из 3 типовых и простых задач. При решении разрешается использовать только пройденный материал. Не разрешается использовать стандартные функции php по работе с массивами (array_*). Для подсчета элементов в массиве воспользуйтесь: <?php $numberOfElements = count($array);?>

Рекомендуется выполнять задание в простейшем текстовом редакторе с минимальной поддержкой языка.

К каждой задаче прилагается макет решения.

Вычитания

Условие

Заданы два числа. До тех пор, пока оба они больше нуля, с ними производят одну и ту же операцию: из большего числа вычитают меньшее. Если числа равны, то из одного вычитают другое. Например, из пары (4,17) за одну операцию получается пара (4,13), а из пары (5,5) пара (0,5).

Вам задано некоторое количество пар (ai, bi). Сколько операций будет выполнено для каждой из них?

Макет

Запустить файл можно командой php subtraction.php.

(subtraction.php) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
//массив исходных данных
$basicData = array(
    array(4, 17),//8 операций
    array(5, 2),//4 операций
    array(1, 0)//0 оперций
    //ваши данные
);

foreach ($basicData as $inputData) {
    list($a, $b) = $inputData;
    $result = calculateOperations($a, $b);
    echo $result . \PHP_EOL;
}

function calculateOperations($a, $b)
{
    $numberOfOperations = 0;
    //ваш код

    return $numberOfOperations;
}

Следующий раунд

Условие

"Участник выходит в следующий раунд соревнований, если он набрал не меньше баллов, чем участник, занявший k-е место, при условии, что набранное им число баллов строго положительно..." — выдержка из правил соревнований.

Всего в соревновании было n участников (n ≥ k и 1 ≤ k ≤ n ≤ 50), и вам уже известны их баллы. Определите, сколько участников выйдет в следующий раунд.

Макет

Запустить файл можно командой php next_round.php.

(next_round.php) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
//массив исходных данных
$basicData = array(
    //число k и массив очков в убывающем порядке
    array(5, array(10, 9, 8, 7, 7, 7, 5, 5)),//6 участников
    array(2, array(0, 0, 0, 0))//0 участников
    //ваши данные
);
foreach ($basicData as $inputData) {
    list($k, $points) = $inputData;
    $result = calculateMembersOfNextRound($k, $points);
    echo $result . \PHP_EOL;
}

function calculateMembersOfNextRound($k, $points)
{
    $membersOfNextRound = 0;
    //ваш код

    return $membersOfNextRound;
}

Double cola

Условие

Шелдон, Леонард, Пенни, Раджеш и Говард стоят в очереди к автомату по продаже баночек с напитком «Double Cola», других людей в очереди нет. Первый в очереди (Шелдон) покупает баночку, выпивает ее содержимое и раздваивается! Получившиеся два Шелдона встают в конец очереди. Затем следующий в очереди (Леонард) покупает баночку, выпивает и встает в конец очереди в двойном экземпляре, и так далее. Этот процесс продолжается до бесконечности.

Например, третью баночку колы выпьет Пенни, и очередь будет выглядеть так: Раджеш, Говард, Шелдон, Шелдон, Леонард, Леонард, Пенни, Пенни.

Напишите программу, которая выведет имя человека, выпившего n-ую баночку.

Обратите внимание, что в самом начале очередь выглядит так: Шелдон, Леонард, Пенни, Раджеш, Говард. Первым человеком является Шелдон.

Макет

Запустить файл можно командой php double_cola.php.

(double_cola.php) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
//массив исходных данных
$basicData = array(
    1, //Шелдон
    6, //Шелдон
    1802 //Пенни
);
foreach ($basicData as $n) {
    $result = getNameByNumber($n);
    echo $result . \PHP_EOL;
}

function getNameByNumber($n)
{
    $queue = array('Шелдон', 'Леонард', 'Пенни', 'Раджеш', 'Говард');
    $name = '';
    //ваш код

    return $name;
}