Урок 6. Задачи на математические функции PHP
Практика
Примеры решения задач
Округление и ассоциативный массив
Задача. Найдите корень из числа 1000. Округлите его в большую и меньшую стороны. В массив $arr запишите 1-м элементом корень из числа, 2-м элементом - округление в меньшую сторону, 3-м элементом - в большую.
Решение: корень из числа найдем функцией sqrt. Далее, чтобы округлить число в меньшую строну, воспользуемся функцией floor, а чтобы в большую - функцией ceil:
<?
$sqrt=sqrt(1000);//Найдем корень и запишем его в $sqrt
echo floor($sqrt);//Округлим в меньшую сторону
echo ceil($sqrt)//Округлим в большую сторону
?>
Теперь результаты необходимо записать в массив. Сделать это можно 2 способами: объявить через [], либо просто воспользоваться присваиванием $arr[]='htm';$arr[]='php' и так далее.
1 способ:
<?
$sqrt=sqrt(1000)
$arr=[$sqrt,floor($sqrt),ceil($sqrt)]
?>
2 способ:
<?
$sqrt=sqrt(1000)
$arr[]=$sqrt;
$arr[]=floor($sqrt);
$arr[]=ceil($sqrt)
?>
Массив случайных чисел
Задача. Заполните массив 30-ю случайными числами от 1 до 10.
Решение: для решения воспользуемся циклом for - прокрутим его 30 раз, записывая при каждом проходе случайное число в новый элемент массива.
Случайные числа будем получать через функцию mt_rand.
Чтобы число записалось в новый элемент массива, следует сделать так: $arr[]=1;$arr[]=2; - 1-е число запишется в 0-й элемент массива, а 2-е - в 1-й (с ключом 1). В случае со случайными числами это будет выглядеть так:
<?//Каждое из чисел будет записываться в новый элемент массива:
$arr[]=mt_rand(1,10);
$arr[]=mt_rand(1,10);
$arr[]=mt_rand(1,10)
?>
Напоминаю о том, что ключи можно не оставлять пустыми, а делать своими:
<?//Используем свои ключи, а не автоматические:
$arr['1 ключ']=mt_rand(1,10);
$arr['2 ключ']=mt_rand(1,10);
$arr['3 ключ']=mt_rand(1,10)
?>
При большом желании мы можем вручную сделать 30 таких строчек - и задача решена. Но пусть лучше за нас это сделает цикл:
<?//Переменная $i нужна, чтобы цикл сделал 30 итераций (проходов)
for($i=1;$i<=30;$i++){$arr[]=mt_rand(1,10);}
var_dump($arr)
//Пообновляйте страницу, вы увидите как меняется массив, так как он заполняется случайными числами.
?>
array(30) { [0]=> int(3) [1]=> int(3) [2]=> int(8) [3]=> int(1) [4]=> int(8) [5]=> int(7) [6]=> int(2) [7]=> int(7) [8]=> int(2) [9]=> int(1) [10]=> int(3) [11]=> int(2) [12]=> int(2) [13]=> int(3) [14]=> int(1) [15]=> int(2) [16]=> int(9) [17]=> int(2) [18]=> int(7) [19]=> int(4) [20]=> int(7) [21]=> int(5) [22]=> int(4) [23]=> int(3) [24]=> int(5) [25]=> int(5) [26]=> int(8) [27]=> int(8) [28]=> int(9) [29]=> int(6) }
Задачи для решения
Работа с %
Даны переменные $a=10 и $b=3. Найдите остаток от деления $a на $b.
0.33333333333333
Даны переменные $a и $b. Проверьте, что $a делится без остатка на $b. Если это так - выведите 'Делится без остатка' и результат деления, иначе выведите 'Делится с остатком' и остаток от деления.
a=10, b=5
Делится без остатка. Результат = 2
a=10, b=9
Делится с остатком 0.11111111111111
Работа со степенью и корнем
Для решения задач данного блока вам понадобятся следующие функции: sqrt, pow.
Возведите 2 в 10 степень. Результат запишите в переменную $s.
1024
Найдите квадратный корень из предыдущей переменной $s.
32
Найдите квадратный корень из 245.
15.652475842499
Дан массив с элементами [4,2,5,19,13,0,10]. Найдите корень из суммы квадратов его элементов. Для решения воспользуйтесь циклом foreach.
№ элемента | Элемент | Элемент в квадрате | Элемент в квадрате нарастающим итогом |
---|---|---|---|
1 | 4 | 16 | 16 |
2 | 2 | 4 | 20 |
3 | 5 | 25 | 45 |
4 | 19 | 361 | 406 |
5 | 13 | 169 | 575 |
6 | 0 | 0 | 575 |
7 | 10 | 100 | 675 |
Сумма квадратов = 675
Корень из суммы квадратов = 25.980762113533
Работа с функциями округления
Для решения задач данного блока вам понадобятся следующие функции: round, ceil, floor.
Найдите квадратный корень из 379. Результат округлите до целых, до десятых, до сотых.
Найдите квадратный корень из 587. Округлите результат в большую и меньшую сторону, запишите результаты округления в ассоциативный массив с ключами 'floor' и 'ceil'.
Работа с min и max
Для решения задач данного блока вам понадобятся следующие функции: min, max.
Даны числа [4,-2,5,19,-130,0,10]. Найдите минимальное и максимальное число.
Работа с рандомом
Для решения задач данного блока вам понадобятся следующие функции: mt_rand.
Выведите на экран случайное число от 1 до 100.
Заполните массив 10-ю случайными числами. Подсказка: нужно воспользоваться циклами for или while. Показать решение.
Работа с модулем
Для решения задач данного блока вам понадобятся следующие функции: abs.
Даны переменные $a и $b. Найдите найдите модуль разности $a и $b. Проверьте работу скрипта самостоятельно для различных $a и $b.
Дан массив в числами, к примеру [1,2,-1,-2,3,-3]. Создайте из него новый массив так, чтобы отрицательные числа стали положительными, то есть у нас должен получиться такой массив: [1,2,1,2,3,3].
Задачи
Дано число, например 30. У этого числа есть делители (числа, на которое оно делится без остатка). Делители числа 30: 1, 2, 3, 5, 6, 10, 15, 30. Задача сделать массив делителей числа 30 (число может быть любым, не обязательно 30).
Дан массив [1,2,3,4,5,6,7,8,9,10]. Узнайте, сколько 1-х элементов массива нужно сложить, чтобы сумма получилась больше 10.