Решение для задач по PHP
Primary tabs
Задача №1
Вывести на экран N случайных чисел (каждое с новой строки) из диапазона [-21, 35]
Решение:
function random_write($N){
for ($index = 0; $index < $N; $index++)
{
$value = rand(-21,35);
echo $value , "<BR>";
}
}
random_write(10);Задача № 2
Вывести на экран сумму N случайных чисел.
Решение:
function random_sum($N)
{
$value = 0;
for ($index = 0;$index < $N;$index++)
{
$value += rand(-21,35);
}
echo $value , "<BR>";
}
random_sum(10);Задача №3
Вывести на экран N случайных чисел (каждое с новой строки). Для каждого числа, начиная со второго, рядом выводить - больше ли оно предыдущего или меньше. например:
-1 20 больше -1 -5 меньше 20 -6 меньше -5 и т.д.
Решение:
function random_srav($N)
{
$first = rand(-21,35);
echo $first, "<BR>";
$second = $first;
for ($index = 0;$index<$N;$index++)
{
$first = rand (-21,35);
if ($first > $second)
{
echo $first , " Больше " , $second , "<BR>";
}
elseif ($first < $second)
{
echo $first , " Меньше " , $second , "<BR>";
}
else
{
echo $first , " Равно " , $second , "<BR>";
}
$second = $first;
}
}
random_srav(5);Задача №4
Вывести на экран n-ное число Фибоначчи. Пример последовательности:
0 1 1 2 3 5 8 13 21...и т.д.
Решение:
function fabonaci($N)
{
$firts = 0;
$second =1;
echo $firts ,"<BR>";
echo $second ,"<BR>";
for ($index = 0;$index < $N;$index++)
{
$next = $firts + $second;
echo $next , "<BR>";
$firts = $second;
$second = $next;
}
}
fabonaci(7);Задача №5
Дано некоторое число длиной от 1 до 5 цифр - вывести его цифры в обратном порядке.
3567= 7 6 5 3
Решение:
function reverse ($N)
{
$reverse = 0;
while ($N>0)
{
$value = $N % 10;
$reverse = ($reverse*10) + $value;
$N = intdiv($N,10);
}
echo $reverse;
}
reverse(3567);Задача №6
Дано некоторое число длиной от 1 до 5 символов, вывести все его "нечётные" цифры в обратном порядке (аналогично предыдущей задаче), если же таких цифр не найдёт, вывести сообщение "Нечетных цифр не обнаружено!"
Решение:
function reverse_necet ($N)
{
$reverse = 0;
while ($N>0)
{
$value = $N % 10;
if ($value % 2 != 0){
$reverse = ($reverse*10) + $value;
}
$N = intdiv($N,10);
}
if ($reverse == 0)
{
echo "Нечётных чисел нет";
}
else
{
echo $reverse;
}
}
reverse_necet (51243);Задача №7
Задать массив из 7-ми элементов, заполнить его случайными значениями в одном цикле, а в другом цикле вывести эти значения на экран.
Решение:
function array_write()
{
$n = 7;
$array = array ();
for ($index = 0;$index<$n;$index++)
{
$random = rand(0,15);
array_push($array,$random);
}
return $array;
}
function array_show($array)
{
foreach ($array as $value)
{
echo $value , "<BR>";
}
}
$array = array_write();
array_show($array);Задача № 8
Задать двумерный массив размерностью m на n (MxN) элементов (m и n вынести в область определения констант), заполнить его случайными значениями и вывести их на экран уже после того, как весь массив будет заполнен (т.е. заполнять и выводить в разных группах циклов).
Решение:
function array_write()
{
define ("m",2);
define ("n",2);
$array = array ();
for ($out = 0; $out<m;$out++)
{
for ($inner = 0; $inner <n; $inner++)
{
$random = rand(0,15);
$array[$out][$inner] = $random;
}
}
return $array;
}
function array_show($array)
{
for ($out = 0; $out<count($array);$out++)
{
for ($inner = 0; $inner <count($array[$out]); $inner++)
{
echo $array[$inner][$out], "<BR>";
}
}
}
$arr = array_write();
array_show($arr);Задача №9
Задайте случайным образом массив из N элементов. Выведите его на экран "ёлочкой". Вот начало такого вывода:
1 2 3 4 5 6 7 8 9 10 11 12 ......
Второй вариант - сделайте то же самое, но не используйте массив: у вас есть переменная N, выведете на экран, все числа до N, по тому же принципе что и выше, например, если N=9, то получим:
1 2 3 4 5 6 7 8 9
Решение, вариант 1:
function array_write($n)
{
$array = array ();
for ($index = 1; $index<=$n;$index++)
{
$array [] = $index;
}
return $array;
}
function elka($array)
{
$k = 2;
for ($index = 0; $index < count($array);$index++)
{
echo $array[$index] , " ";
if ($index == ($k * ($k-1)/2 - 1)){
$k++;
echo "<BR>";
}
}
}
$arr = array_write(9);
elka($arr);Решение, вариант 2:
function elka ($N)
{
$val = 1;
$rows = 1;
while ($val <=$N)
{
for ($count = 1; $count <= $rows && $val <= $N;$count++)
{
echo $val, " ";
$val++;
}
$rows++;
$count = 1;
echo " <BR> ";
}
}
elka(9);Задача № 10
Задайте случайным образом массив из N элементов (целых чисел). Найдите максимальное число и напечатайте его.
Решение:
function array_max($N)
{
$array = array ();
$max = 0;
for ($index = 0;$index<$N;$index++)
{
$random = rand(0,15);
array_push($array,$random);
}
for ($index = 0; $index<count($array);$index++)
{
if ($array[$index] > $max)
{
$max = $array[$index];
}
}
echo $max;
}
array_max(5);Задача 11
Задайте случайным образом массив из 20-ти элементов (целых чисел). Найдите минимальное число и напечатайте его.
Решение:
function array_min($N)
{
$array = array ();
for ($index = 0;$index<$N;$index++)
{
$random = rand(-15,15);
array_push($array,$random);
}
$min = $array[0];
for ($index = 0; $index<count($array);$index++)
{
if ($array[$index] < $min)
{
$min = $array[$index];
}
}
echo $min;
}
array_min(20);Задача 12
Даны два массива по 20 элементов каждый (заполните случайными числами, так чтобы среди элементов массива при очередном запуске программы могли встретиться и отрицательные и положительные числа).
Сравните каждый 3-ий элемент 1-ого массива с каждый 2-ым элементов 2-ого массива - сравнение проводите пока не закончится та выборка, которая короче.
Решение:
function array_write($N)
{
$array = [];
for ($index = 0;$index<$N;$index++)
{
$random = rand(-15,15);
array_push($array,$random);
}
return $array;
}
function array_show($array)
{
foreach ($array as $value)
{
echo $value , " ";
}
}
function array_srav($array1,$array2)
{
$val1 = 0;
$i = 0;
$j = 0;
echo "<BR>";
echo "Сравнение каждого 3 элемента первого массива с каждым 2 элементом второго массива <BR>";
while ($i < count($array1) && $j<count($array2))
{
if (($i+1) % 3 ==0)
{
$val1 = $array1[$i];
}
else
{
$i++;
continue;
}
if (($j+1) % 2 ==0)
{
$val2 = $array2[$j];
}
else
{
$j++;
continue;
}
if ($val1 > $val2)
{
echo "$val1 > $val2 <BR>";
}
else if ($val1 < $val2)
{
echo "$val1 < $val2 <BR>";
}
else
{
echo "$val1 = $val2 <BR>";
}
$i++;
$j++;
}
}
$array1 = array_write(20);
$array2 = array_write(20);
array_show($array1);
echo "<BR>";
array_show($array2);
array_srav($array1,$array2);Задача 13
Создайте функцию, которая принимает на вход массив случайных чисел из диапазона [5..12]. Обходит этот массив и делает для каждого элемента следующее (пусть она оказывает побочный эффект прямо в своём теле):
Если это число равно 5 -- то выведете на экран строку "пять", если 6 -- то строку "шесть", если 7 то число "7", иначе -- строку "какое-то другое число".
Решение:
function create_array($N)
{
for ($index = 0;$index < $N;$index++)
{
$random = rand (5,12);
$array[$index] = $random;
}
return $array;
}
function array_write($array)
{
foreach($array as $value)
{
echo $value , " ";
}
}
function word ($array)
{
echo "<br>";
foreach($array as $value)
{
switch ($value){
case 5:
echo "пять <BR>";
break;
case 6:
echo "шесть <BR> ";
break;
case 7:
echo "семь <BR>";
break;
case 8:
echo "восемь <BR>";
break;
case 9:
echo "девять <BR>";
break;
case 10:
echo "десять <BR>";
break;
case 11:
echo "одиннадцать <BR>";
break;
case 12:
echo "двенадцать <BR>";
break;
default:
echo "Число вне диапазона от 5 до 12 <BR>";
break;
}
}
}
$array = create_array(5);
array_write($array);
word($array);Задача 14
Есть два массива "a" и "b". На вход вашей программе подаётся массив "a" случайных чисел (10 элементов) из диапазона от 1 до 20. Задача: вывести на экран все числа, которые не содержатся в массиве "b"
Решение первым способом:
function create_array($N)
{
for ($index = 0;$index < $N;$index++)
{
$random = rand (1,20);
$array[$index] = $random;
}
return $array;
}
function array_write($array)
{
foreach($array as $value)
{
echo $value , " ";
}
}
function unique($array1,$array2)
{
$total_array = array();
for ($i = 0;$i < count($array1);$i++)
{
$found = false;
for ($j=0;$j < count($array2);$j++)
{
if ($array1[$i] == $array2[$j])
{
$found = true;
break;
}
}
if (!$found)
{
$total_array[] = $array1[$i];
}
}
return $total_array;
}
$array1 = create_array(5);
$array2 = create_array(5);
array_write($array1);
echo "<BR>";
array_write($array2);
$array3 = unique($array1,$array2);
echo "<BR>";
array_write($array3);Решение вторым способом:
function create_array($N)
{
for ($index = 0;$index < $N;$index++)
{
$random = rand (1,20);
$array[$index] = $random;
}
return $array;
}
function array_write($array)
{
foreach($array as $value)
{
echo $value , " ";
}
}
function unique($array1,$array2)
{
$total_array = array();
foreach($array1 as $value)
{
if (!in_array($value,$array2))
{
$total_array[] = $value;
}
}
return $total_array;
}
$array1 = create_array(5);
$array2 = create_array(5);
array_write($array1);
echo "<BR>";
array_write($array2);
$array3 = unique($array1,$array2);
echo "<BR>";
array_write($array3);- Log in to post comments
- 1408 reads
vedro-compota
Fri, 09/13/2024 - 00:56
Permalink
в случае перебора элементов
в случае перебора элементов массива надо использовать foreach
_____________
матфак вгу и остальная классика =)