Зачем делать счётные задачи на PHP?
Что-то в последнее время много таких, с позволения сказать, задач попадается. Вопрос только один - на кой это надо? На практике загружать таким server-side никто не станет, а если нужны небольшие счётные сервисы для массивов или чисел, их куда разумнее учиться делать на стороне клиента с помощью Javascript.
Оставьте PHP ту сферу применения, для которой он создавался - динамические web-сайты, работающие с базами данных. А алгоритмизацию без строгой типизации данных, требования инициализации переменных и предварительной компиляции вместо "вываливающихся" в рантайме ошибок - толком не изучишь. Да и вообще, язык, позволяющий разработчику "слишком многое", как PHP, слишком долго будет отбивать желание заниматься программированием у тех, кому оным заниматься не стоит :)
Приведу всё же несколько сегодняшних примеров базовых "счётных" задач на PHP и их решений. Выполнять эти скрипты следует, разумеется, на локальном хосте.
1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-50, 50]. Найти сумму чётных (по значению) элементов. Подсчитать количество элементов массива, значения которых состоят из двух цифр.
<?php $n = 10; for ($i=0; $i<$n; $i++) $arr[] = rand(-50,50); $sum = 0; $cnt = 0; array_walk ($arr, function($val) use (&$sum, &$cnt) { $sum += ($val%2 ? 0 : $val); $cnt += (abs($val)>9 ? 1 : 0); }); print_r ($arr); print "<br>$sum,$cnt"; ?>
2. Дано натуральное число n . Переставить его цифры так, чтобы образовалось максимальное число, записанное теми же цифрами. Использовать метод передачи данных GET.
Если это разместить, например, по адресу http://localhost/digits.php
и вызвать с передачей числа n методом GET по типу http://localhost/digits.php?n=11907
то как-то так:
<?php if (!isset($_GET['n'])) exit ('Call me with n parameter, eg http://localhost/digits.php?n=11907'); $n = strval(abs(intval($_GET['n']))); //хотим положительное число $len = strlen($n); $arr = array (); for ($i=0; $i<$len; $i++) $arr[] = $n[$i]; rsort ($arr); $result = implode ('',$arr); echo $result; ?>
Лидирующие нули в числе не будут учтены, 0013 === 13
3. Вывести все квадраты натуральных чисел, не превосходящие данного числа N.
<?php $n = 1000; $i = 1; do { $i2 = pow($i,2); if ($i2>$n) break; echo $i2.' '; $i++; } while (1); ?>
4. Дан массив, состоящий из целых чисел. Напишите программу, которая определяет, есть ли в массиве пара соседних элементов с одинаковыми знаками.
<?php function sign($n) { return ($n > 0) - ($n < 0); } $arr = Array (1, -20, 33, -3, -2); $result = 'No'; $len = count($arr); for ($i = 0; $i < $len - 1; ++$i) { if (sign(current($arr)) === sign(next($arr))) { $result = 'Yes'; break; } } echo $result; ?>
Вот функция определения знака числа на PHP в этом примере - красивая :)
21.02.2018, 14:42 [2607 просмотров]