Решение для задач по PHP

Задача №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);
vedro-compota's picture

в случае перебора элементов массива надо использовать foreach

_____________
матфак вгу и остальная классика =)