Положительные и отрицательные числа массива

Александр Кичатов

Задачи:

  1. Подсчитать количество и сумму всех положительных чисел массива, а также элементов кратных 3.
  2. Подсчитать количество и сумму всех отрицательных чисел массива, а также элементов кратных 3.
  3. Предусмотреть ввод чисел с клавиатуры (через форму).
  4. Предусмотреть конец последовательности - число 0. Т.е. числа в массиве, идущие после 0, должны игнорироваться.

Поиск положительных элементов с FOREACH

Поиск положительных элементов:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];

foreach($arr as $v)
{
    if($v > 0)
        $values[] = $v;
}

var_dump($values);

Вычисление суммы положительных элементов:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$sum = 0;

foreach($arr as $v)
{
    if($v > 0)
        $sum += $v;
}

var_dump($sum);

Поиск положительных элементов, кратных 3:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];

foreach($arr as $v)
{
    if($v > 0 and $v % 3 == 0)
        $values[] = $v;
}

var_dump($values);

Вычисление суммы положительных элементов, кратных 3:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$sum = 0;

foreach($arr as $v)
{
    if($v > 0 and $v % 3 == 0)
        $sum += $v;
}

var_dump($sum);

Поиск отрицательных элементов с FOREACH

Поиск отрицательных элементов:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];

foreach($arr as $v)
{
    if($v < 0)
        $values[] = $v;
}

var_dump($values);

Вычисление суммы отрицательных элементов:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$sum = 0;

foreach($arr as $v)
{
    if($v < 0)
        $sum += $v;
}

var_dump($sum);

Поиск отрицательных элементов, кратных 3:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];

foreach($arr as $v)
{
    if($v < 0 and $v % 3 == 0)
        $values[] = $v;
}

var_dump($values);

Вычисление суммы отрицательных элементов, кратных 3:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$sum = 0;

foreach($arr as $v)
{
    if($v < 0 and $v % 3 == 0)
        $sum += $v;
}

var_dump($sum);

Поиск положительных элементов с FOR

Поиск положительных элементов:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];

for($i = 0; $i < count($arr); $i++)
{
    if($arr[$i] > 0)
        $values[] = $arr[$i];
}

var_dump($values);

Вычисление суммы положительных элементов:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$sum = 0;

for($i = 0; $i < count($arr); $i++)
{
    if($arr[$i] > 0)
        $sum += $arr[$i];
}

var_dump($sum);

Поиск положительных элементов, кратных 3:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];

for($i = 0; $i < count($arr); $i++)
{
    if($arr[$i] > 0 and $arr[$i] % 3 == 0)
        $values[] = $arr[$i];
}

var_dump($values);

Вычисление суммы положительных элементов, кратных 3:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$sum = 0;

for($i = 0; $i < count($arr); $i++)
{
    if($arr[$i] > 0 and $arr[$i] % 3 == 0)
        $sum += $arr[$i];
}

var_dump($sum);

Поиск отрицательных элементов с FOR

Поиск отрицательных элементов:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];

for($i = 0; $i < count($arr); $i++)
{
    if($arr[$i] < 0)
        $values[] = $arr[$i];
}

var_dump($values);

Вычисление суммы отрицательных элементов:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$sum = 0;

for($i = 0; $i < count($arr); $i++)
{
    if($arr[$i] < 0)
        $sum += $arr[$i];
}

var_dump($sum);

Поиск отрицательных элементов, кратных 3:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];

for($i = 0; $i < count($arr); $i++)
{
    if($arr[$i] < 0 and $arr[$i] % 3 == 0)
        $values[] = $arr[$i];
}

var_dump($values);

Вычисление суммы отрицательных элементов, кратных 3:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$sum = 0;

for($i = 0; $i < count($arr); $i++)
{
    if($arr[$i] < 0 and $arr[$i] % 3 == 0)
        $sum += $arr[$i];
}

var_dump($sum);

Поиск элементов с WHILE

Поиск чисел с while аналогичен поиску с for, только эта строчка:

for($i = 0; $i < count($arr); $i++)

Заменяется на эти:

$i = -1;

while(++$i < count($arr))

Пример для поиска положительных чисел:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];
$i = -1;

while(++$i < count($arr))
{
    if($arr[$i] > 0)
        $values[] = $arr[$i];
}

var_dump($values);

Ввод чисел через форму

Простая форма, отправляемая методом GET, с PHP обработчиком:

<?php
if(isset($_GET['nums']))
{
    $arr = explode(' ', $_GET['nums']);
}
?>
<form>
    <input type="text" name="nums">
    <input type="submit" name="Поиск">
</form>

Введя в эту форму 1 2 35 -34, в переменной $arr мы получим массив [1, 2, 35, -34]. Правда вместо чисел в нём будут строки, но это неважно, поскольку перед сравнением значений PHP всё равно будет приводить их к числам.

Теперь вы можете добавить сюда код любого из описанных выше циклов, например вычисление суммы положительных чисел с циклом for:

<?php
if(isset($_GET['nums']))
{
    $arr = explode(' ', $_GET['nums']);
    $sum = 0;

    for($i = 0; $i < count($arr); $i++)
    {
        if($arr[$i] > 0)
            $sum += $arr[$i];
    }

    var_dump($sum);
}
?>
<form>
    <input type="text" name="nums">
    <input type="submit" name="Поиск">
</form>

Конец последовательности

Для реализации конца последовательности нужно в начало цикла foreach добавить следующий код:

if($v == 0)
    break;

Для цикла for код будет выглядеть так:

if($arr[$i] == 0)
    break;

Пример для поиска положительных элементов foreach:

<?php
$arr = [2, 0, 4, -4, 12, -3, 1];
$values = [];

foreach($arr as $v)
{
    if($v == 0)
        break;

    if($v > 0)
        $values[] = $v;
}

var_dump($values); // [2]

Пример для поиска положительных элементов for:

<?php
$arr = [2, 0, 4, -4, 12, -3, 1];
$values = [];

for($i = 0; $i < count($arr); $i++)
{
    if($arr[$i] == 0)
        break;

    if($arr[$i] > 0)
        $values[] = $arr[$i];
}

var_dump($values); // [2]

Комментарии