БлогNot. Зачем делать счётные задачи на PHP?

Зачем делать счётные задачи на 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 [2513 просмотров]


теги: программирование учебное маразм php

К этой статье пока нет комментариев, Ваш будет первым