Учебные задачи PHP. Задача 2
Primary tabs
Список учебных задач PHP здесь
Условие: Вывести на экран сумму N случайных чисел.
Сначала я решил таким образом:
<?php
for ($value = 0; $value < 1; $value++)
{
$value1 = rand(-21, 35);
$sum = $value1 + rand(-21, 35);
echo "Сумма рандомных значений: ", $sum, "<br>";
}
?>Это работает, но здесь складываются только 2 рандомных значения. Можно конечно прописать таким образом с десяток переменных, дать им рандомные значения и сложить, но сделать это например с сотней рандомных чисел уже сложней. Новое решение позволяет считать сумму любого количества рандомных чисел:
<?php
$array_for = array();
$N = 9;
for ($value = 0; $value < $N; $value++)
{
$num = rand(-21, 35);
echo $num, "<br>";
$array_for[]= $num;
}
$sum = array_sum ($array_for);
echo "Сумма $value рандомных значений: ", $sum;
?>- Log in to post comments
- 9268 reads
melisa
Mon, 01/21/2019 - 17:36
Permalink
замечания
for ($value = 0; $value < 1; $value++) { $value1 = rand(-21, 35); $sum = $value1 + rand(-21, 35); echo "Сумма рандомных значений: ", $sum, "<br>"; }Первый вариант не решает поставленную задачу: найти сумму N чисел, как Вы сами отметили ниже.
А также, если говорить об этом отрезке кода, абстрагируясь от задачи, то здесь неверно применён цикл for. У Вас изначально условие цикла предполагает только одну итерацию, а значит, и цикл не нужен вовсе:
$value1 = rand(-21, 35); $sum = $value1 + rand(-21, 35); echo "Сумма рандомных значений: ", $sum, "<br>";Если что-то можно опустить, лучше это опустить.
Да и вообще тогда уж:
Очень и очень разумно. Правильно, здесь нужно использовать цикл.
В PHP7 используется сокращённый вариант объявления - такой:
$array_for = array(); for ($value = 0; $value < $N = 9; $value++) { $num = rand(-21, 35); echo $num, "<br>"; $array_for[]= $num; } $sum = array_sum ($array_for); echo "Сумма $value рандомных значений: ", $sum;;
Здесь нарушены отступы. Всё должно быть чётко. Это также важно для читаемости.
$array_for = array(); for ($value = 0; $value < $N = 9; $value++) { $num = rand(-21, 35); echo $num, "<br>"; $array_for[]= $num; } $sum = array_sum ($array_for); echo "Сумма $value рандомных значений: ", $sum;Решение рабочее. Представьте, пожалуйста, также решение без использования функции array_sum()
rvsokolov
Mon, 01/21/2019 - 18:04
Permalink
Замечания исправлены
Спасибо — переписал в соответствии с camelCase, объявил массив через [ ], отступы поправил
<?php $arrayFor = []; $n = 9; for ($value = 0; $value < $n; $value++) { $num = rand(-21, 35); echo $num, "<br>"; $arrayFor[]= $num; } $sum = array_sum ($arrayFor); echo "Сумма $value рандомных значений: ", $sum; ?>melisa
Mon, 01/21/2019 - 18:07
Permalink
отступы не изменились
Отступы не изменились. Здесь ошибки в 7, 10 и 11 строках.
rvsokolov
Mon, 01/21/2019 - 19:17
Permalink
Альтернативное решение
Сложение N числа рандомных значений
<?php $arrayFor = []; $n = 9; for ($value = 0; $value <$n; $value++) { $num = rand (-21, 35); echo $num, "<br>"; $arrayFor[] = $num; } $sum = 0; foreach ($arrayFor as $randomNumber) { $sum = $sum + $randomNumber; } echo "Сумма $value рандомных значений равна: ", $sum; ?>melisa
Mon, 01/21/2019 - 19:20
Permalink
замечания и предложения
Запишите это короче с помощью комбинированого оператора
rvsokolov
Mon, 01/21/2019 - 19:24
Permalink
Альтернативное решение
Использую комбинированный оператор:
<?php $arrayFor = []; $n = 9; for ($value = 0; $value <$n; $value++) { $num = rand (-21, 35); echo $num, "<br>"; $arrayFor[] = $num; } $sum = 0; foreach ($arrayFor as $randomNumber) { $sum += $randomNumber; } echo "Сумма $value рандомных значений равна: ", $sum; ?>melisa
Mon, 01/21/2019 - 19:26
Permalink
принято
принято