Хелпикс

Главная

Контакты

Случайная статья





Задание 1_3_2. Задание 1_3_25 (инд). Задание 1_4_1. Задание 1_4_2. Задача 1_4_25 (инд)



Задание 1_3_2

Описание задачи:

Заданы окружность радиуса R с центром в начале коор­динат и прямая, проходящая через точки А (х; у) и В (х; -у). Написать программу, проверяющую, пересекаются ли окружность и прямая, или они касаются друг друга, или не пересекаются и не касаются. Привести тесты для проверки работоспособности программы.

Описание алгоритма:

Поскольку по условию х-координата не меняется, прямая будет всегда параллельна оси Oy. Поэтому, нам нужно сравнивать только её. Если она больше радиуса, то прямая не пересекает окружность. Если равна радиусу, то прямая касается окружности. Если координата меньше радиуса, то прямая пересекает окружность.

Текст программы:

<?php

              $x = $_POST['x'];

              $y = $_POST['y'];

              $r = $_POST['r'];

              //Применяем функцию abs, чтобы сравнивать х-координату без знака

              if (abs($x) < $r){//Сравниваем х-координату и радиус

                       echo "Прямая и окружность пересекаются.";

              } elseif (abs($x) == $r){ //Выясняем, равны ли значения друг другу

                       echo "Прямая и окружность касаются друг друга.";

              } else {

                       echo "Прямая и окружность не соприкасаются друг с другом в обоих случаях.";

              }

              ?>


 

Тестовый пример:


 

Задание 1_3_25 (инд)

Описание задачи:

Может ли шар радиуса r пройти через ромбообразное отверстие с диагоналями p и q?

Описание алгоритма:

По геометрическим формулам находим радиус вписанной окружности ромба и сравниваем его с радиусом нашего шара.

Текст программы:

<?php

              $p = $_POST['p'];

              $q = $_POST['q'];

              $r = $_POST['r'];

              $side = sqrt($p*$p/4+$q*$q/4);//Находим радиус вписанной окружности ромба из имеющихся значений

              $r1 = $p*$q/4/$side;

              if ($r <= $r1){//Сравниваем радиус вписанной окружности ромба с радиусом шара

                       echo "Шар сможет пройти через отверстие.";

              } else {

                       echo "Нет, шар не сможет пройти через отверстие.";

              }

              ?>


 

Блок-схема:

Тестовый пример:


Задание 1_4_1

Описание задачи:

Составить программу, которая бы в зависимости от введенной даты рождения человека в форме «dd. mm. yyyy» выводила бы на экран комментарий: если целых лет от 1 до 6 – «дитя», от 7 до 16 – «школьник», от 17 до 22 – «студент» от 23 до 60 – «большой человек», от 60 – «отдыхающий».

Описание алгоритма:

Используя в форме отправки данных паттерн даты, получаем удобное значение даты в виде одной строковой переменной. С помощью функции explode() преобразуем её в массив и присваиваем в переменную. Используя функцию date(), присваиваем в другую переменную текущую дату и разбиваем её тем же способом.

Полученные элементы двух массивов мы сравниваем друг с другом в соответствие с их временными значениями. Если текущая дата больше по всем трем значениям, вычитаем из текущего года год рождения и присваиваем в новую переменную, отвечающую за возраст. В противном случае из вышеописанной разницы вычитаем еще единицу, так как день рождения в текущем году еще не наступил.

После получения возраста проверяем его на поставленные критерии и выводим статус человека на экран.


Текст программы:

<?php

              date_default_timezone_set('UTC');//Устанавливаем правильный отсчет даты

              $data = $_POST['data'];

              $data = explode("-", $data);//Разбиваем введенную дату на массив данных

              $today = date("d.m.Y");    //Получаем из функции даты текущую дату

      $today = explode(".", $today);//Разбиваем текущую дату на массив данных

              $age = 0;

              if ($today[2] > $data[0]){//Сравниваем года текущей и введенной даты

                       if ($today[1] >= $data[1]){//Сравниваем месяца текущей и введенной даты

                                 if ($today[0] >= $data[2]){//Сравниваем дни текущей и введенной даты

                                          $age += $today[2] - $data[0];//Получаем возраст человека из разницы текущей и введенной даты

                                 } else {

                                          $age += $today[2] - $data[0] - 1;//Делаем то же самое с учетом того, что день рождения в текущем году не наступил

                                 }

                       } else {

                                 $age += $today[2] - $data[0] - 1;

                       }

              }

              switch(true){//С помощью оператора выбора выясняем возрастной статус человека

                       case($age <= 6 && $age >= 0): {

                                 echo "Человек - дитя, его возраст ".$age;

                                 break;

                       }

                       case($age <= 16 && $age >= 7): {

                                 echo "Человек - школьник, его возраст ".$age;

                                 break;

                       }

                       case($age <= 22 && $age >= 17): {

                                 echo "Человек - студент, его возраст ".$age;

                                 break;

                       }

                       case($age <= 60 && $age >= 23): {

                                 echo "Большой человек, его возраст ".$age;

                                 break;

                       }

                       default:{

                                 echo "Отдыхающий, его возраст ".$age;

                                 break;

                       }

              }

              ?>


 

Тестовый пример:


 

Задание 1_4_2

Описание задачи:

Составить программу, определяющую является ли введенный шестизначный номер «счастливым» (совпадает ли у него сумма трех начальных и трех конечных цифр). Для выделения отдельных цифр во введенном номере можно использовать операции mod и div.

Описание алгоритма:

Создаем переменную, в которую передаем шестизначное число. Разбиваем его на 6 элементов символьного массива с помощью функции str_split().

Организуем цикл от 1 до 3-х, чтобы сосчитать сумму первых трех цифр в первый элемент массива.

Организуем второй цикл от 4-х до 6-ти, чтобы сосчитать сумму последних трех цифр во второй элемент массива.

После операций в циклах мы сравниваем первый элемент массива и второй элемент массива. Если они равны, номер будет счастливым, иначе - нет.


Текст программы:

<?php

        $num = $_POST['numer'];

              $num = str_split($num);//Разбиваем номер на массив

              for ($i = 1; $i < 3; $i++){//Суммируем первые три цифры в нулевой элемент массива

                       $num[0] += $num[$i];

              }

              for ($i = 4; $i < 6; $i++){//Суммируем последние три цифры в третий элемент массива

                       $num[3] += $num[$i];

              }

              if ($num[3] == $num[0]){//Сравниваем элементы с суммами и выводим результат

                       echo "Значения сумм 3х первых и 3х последних цифр совпали, номер счастливый. Сумма равна ".$num[0];

              } else {

                       echo "Значения сумм 3х первых и 3х последних цифр не совпали. Номер не является счастливым. Первая и вторая суммы соответственно: ".$num[0]." и ".$num[3];

              }

              ?>


 

Тестовый пример:


Задача 1_4_25 (инд)

Описание задачи:

На ввод в программу натурального числа, не превышающего миллион, программа выводит словами на русском языке введенное число и слово «учеников». Например, на ввод числа 21 385 программа выводит «двадцать одна тыся­ча триста восемьдесят пять учеников».

Описание алгоритма:

Используя оператор выбора switch-case, распишем для каждого из разрядов чисел склонение слова «ученик» и буквенное значение числа. Особое внимание уделим числам в диапазоне 11-19, которые имеют одинаковое склонение и уникальное буквенное название. Этот диапазон чисел поместим в еще одну отдельную функцию.


 

Текст программы:

<?php

              function hundreds($var){

                       switch ($var){//Оператор выбора для сотен

                                 case 1:{

                                          echo " сто ";

                                          break;

                                 }

                                 case 2:{

                                          echo " двести ";

                                          break;

                                 }

                                 case 3:{

                                          echo " триста ";

                                          break;

                                 }

                                 case 4:{

                                          echo " четыреста ";

                                          break;

                                 }

                                 case 5:{

                                          echo " пятьсот ";

                                          break;

                                 }

                                 case 6:{

                                          echo " шестьсот ";

                                          break;

                                 }

                                 case 7:{

                                          echo " семьсот ";

                                          break;

                                 }

                                 case 8:{

                                          echo " восемьсот ";

                                          break;

                                 }

                                 case 9:{

                                          echo " девятьсот ";

                                          break;

                                 }

                       }

              }       

              function tens($var, $var2, $bool){//Операторы выбора для десятков

                       if ($var == 1){

                                 switch ($var2){

                                 case 0:{

                                          echo " десять ";

                                     break;

                                 }

                                 case 1:{

                                          echo " одиннадцать ";

                                          break;

                                 }

                                 case 2:{

                                          echo " двенадцать ";

                                          break;

                                 }

                                 case 3:{

                                          echo " тринадцать ";

                                          break;

                                 }

                                 case 4:{

                                          echo " четырнадцать ";

                                          break;

                                 }

                                 case 5:{

                                          echo " пятнадцать ";

                                          break;

                                 }

                                 case 6:{

                                          echo " шестьнадцать ";

                                          break;

                                 }

                                 case 7:{

                                          echo " семьнадцать ";

                                          break;

                                 }

                                 case 8:{

                                          echo " восемьнадцать ";

                                          break;

                                 }

                                 case 9:{

                                          echo " девятнадцать ";

                                          break;

                                 }

                                 }

                                 one(0, $bool);//Отправляем функцию для склонения слова "ученик" для нуля

                       } else {

                                 switch ($var){

                                 case 2:{

                                          echo " двадцать ";

                                          break;

                                 }

                                 case 3:{

                                          echo " тридцать ";

                                          break;

                                 }

                                 case 4:{

                                          echo " сорок ";

                                          break;

                                 }

                                 case 5:{

                                          echo " пятьдесят ";

                                          break;

                                 }

                                 case 6:{

                                          echo " шестьдесят ";

                                          break;

                                 }

                                 case 7:{

                                          echo " семьдесят ";

                                          break;

                                 }

                                 case 8:{

                                          echo " восемьдесят ";

                                          break;

                                 }

                                 case 9:{

                                          echo " девяносто ";

                                          break;

                                 }

                                 }

                                 one($var2, $bool);//Отправляем число для расписывания в единицах

                       }

              }                                   

              function one($var, $bool){//Оператор выбора для единиц и тысяч

                       switch($var){

                                 case 0: {

                                          if ($bool == false){//Проверяем, для тысяч или единиц была вызвана функция

                                                   echo " учеников";

                                          } else {

                                                   echo " тысяч";

                                          }

                                          break;

                                 }

                                 case 1:{

                                          if ($bool == true){

                                                   echo " одна тысяча ";

                                          } else {

                                                   echo " один ученик";                                        

                                          }

                                          break;

                                 }

                                 case 2:{

                                          if ($bool == true){

                                                   echo " две тысячи ";

                                          } else {

                                                   echo " два ученика";                                         

                                          }

                                          break;

                                 }

                                 case 3:{

                                          echo " три ";

                                          if ($bool == true){

                                                   echo "тысячи ";

                                          } else {

                                                   echo "ученика ";

                                          }

                                          break;

                                 }

                                 case 4:{

                                          echo " четыре ";

                                          if ($bool == true){

                                                   echo "тысячи ";

                                          } else {

                                                   echo "ученика ";

                                          }

                                          break;

                                 }

                                 case 5:{

                                          echo " пять ";

                                          if ($bool == true){

                                                   echo "тысяч ";

                                          } else {

                                                   echo "учеников ";

                                          }

                                          break;

                                 }

                                 case 6:{

                                          echo " шесть ";

                                          if ($bool == true){

                                                   echo "тысяч ";

                                          } else {

                                                   echo "учеников ";

                                          }

                                          break;

                            }

                                 case 7:{

                                          echo " семь ";

                                          if ($bool == true){

                                                   echo "тысяч ";

                                          } else {

                                                   echo "учеников ";

                                          }

                                          break;

                                 }

                                 case 8:{

                                          echo " восемь ";

                                          if ($bool == true){

                                                   echo "тысяч ";

                                          } else {

                                                   echo "учеников ";

                                          }

                                          break;

                                 }

                                 case 9:{

                                          echo " девять ";

                                          if ($bool == true){

                                                   echo "тысяч ";

                                          } else {

                                                   echo "учеников ";

                                          }

                                          break;

                                 }

                       }

              }                

              function number_menu($num, $var){

                       switch ($var){//Оператор выбора, определяющий разрядность числа для составления нужного списка вызываемых функций

                                 case 1:{

                                          one($num[0], false);

                                          break;

                                 }

                                 case 2:{

                                          tens($num[0],$num[1], false);

                                          break;

                                 }

                                 case 3:{

                                          hundreds($num[0]);

                                          tens($num[1],$num[2], false);

                                          break;

                                 }

                                 case 4:{

                                          one($num[0], true);

                                          hundreds($num[1]);

                                          tens($num[2],$num[3], false);

                                          break;

                                 }

                                 case 5:{

                                          tens($num[0],$num[1], true);

                                          hundreds($num[2]);

                                          tens($num[3],$num[4], false);

                                          break;

                                 }

                                 case 6:{

                                          hundreds($num[0]);

                                          tens($num[1],$num[2], true);

                                          hundreds($num[3]);

                                          tens($num[4],$num[5], false);

                                 }

                       }

              }

              $num = $_POST['numer'];

              $num = str_split($num);

              number_menu($num, count($num));

              ?>


 

Тестовый пример:


Задание 1_5_1

Описание задачи:

Первое любимое число Незнайки – 1, второе – 5. Каждое следующее число получается как сумма удвоенного предыдущего и предпредыдущего. Так, третье любимое число – 11, а четвертое – 27. Вывести любимые числа Незнайки среди первой тысячи и вычислить их сумму.

Описание алгоритма:

Создаем две переменных, в которые записываем первые два «любимых» числа Незнайки.

Выводим первое число и после этого организуем цикл от 1-го до 50-и. Размер не принципиален, так как по условию внутри мы выйдем из него раньше.

Внутри цикла используем дополнительную переменную для обмена, в которую мы будем помещать второе число. После дублирования значения мы увеличиваем переменную второго числа в соответствии с алгоритмом. В первое число присваиваем предыдущее значение второй переменной, хранящееся в обменной переменной. Прибавляем второе число к значению переменной суммы.

Перед операциями обмена проверяем, стало ли второе число в результате предыдущей итерации больше тысячи. Если стало, выходим из цикла и показываем сумму чисел. В противном случае показываем очередное число последовательности.


 

Текст программы:

   <?php

              $a = 1; $b = 5; $sum = 1;//Объявляем в виде переменных первые два числа последовательности и счетчик суммы

              $temp;//Объявляем обменную переменную

              echo $a." ";

              for ($i = 0; $i < 50; $i++){//Создаем цикл, куда гарантированно войдут все числа последовательности меньше 1000

                       if ($b < 1000){//Проверяем, меньше ли тысячи большее число последовательности

                                 echo $b. " ";

                       } else {

                                 echo $sum. " ";//Если больше, выводим накопленную сумму и останавливаем цикл

                                 break;

                       }

                       $sum += $b;//Суммируем число последовательности

                       $temp = $b;//Производим обменную операцию после увеличения счетчика суммы

                       $b = $b*2 + $a;

                       $a = $temp;

              }

              ?>


 

Тестовый пример:


Задание 1_5_2

Описание задачи:

Некто взял ссуду в банке величиной А руб. под В% годовых. Ежегодно заемщик вносит платежи в счет ссуды в С руб. Написать программу, определяющую, через сколько лет будет погашена ссуда, и сумму денег, выплаченных заемщиком банку.

Описание алгоритма:

Организуем цикл с предусловием, который закончится только тогда, когда значение переменной ссуды станет меньше или равным нулю. В теле цикла увеличиваем ссуду на b-процент, вычитаем c-рублей. Так же заводим счетчик и считаем количество лет (итераций цикла). После цикла проверяем, стала ли переменная со значением ссуды иметь отрицательное значение. Если это так, то прибавляем отрицательное значение к сумме выплат, помноженных на год, чтобы вычесть их из общей платы, так как ссуда уже была погашена.


Текст программы:

                       $n = 0;

                       $sum = 0;

                       $a = $_POST['a'];

                       $b = $_POST['b'];

                       $c = $_POST['c'];

                       while ($a > 0){//Цикл с предусловием, работающий, пока ссуда не погашена

                                 $a += ($a * ($b/100));//Увеличиваем ссуду на b-процент

                                 $a -= $c;//Выплачиваем платеж

                                 $n++;//Считем год

                       }

                       if ($a < 0){//Если последняя выплата была больше ссуды, возвращаем остаток

                                 $sum = $c * $n + $a;

                       } else {

                                 $sum = $c * $n;

                       }

                       echo "Ссуда будет выплачена через ".$n." лет, а сумма будет равняться ".round($sum,0)." руб.";//Вывод результата с округлением

Тестовый пример:


Задание 1_5_25 (инд)

Описание задачи:

Вычислить количество точек с целочисленными координа­тами, находящихся в круге радиуса R (R > 0).

Описание алгоритма:

Заводим счетчик точек. Заводим цикл, количество итераций которого R + R + 1 (ноль тоже входит в промежуток). Это будет перечисление всех точек в квадрате радиуса по координате х. В теле первого цикла заводим аналогичный цикл с количеством итераций R + R + 1. Этот цикл будет пересечением всех точек в квадрате радиуса по координате y.

Текст программы:

<?php

              $r = $_POST['r'];

              $k = 0;

              for ($i = -$r; $i < $r + 1; $i++){//Цикл всех точек х в квадрате r

                       for ($j = -$r; $j < $r + 1; $j++){//Цикл всех точек y в квадрате r

                                 if (($i * $i + $j * $j) <= ($r * $r)){//Проверка, входят ли координаты точки в радиус

                                          $k++;//Увеличение счетчика точек

                                 }

                       }

              }

              echo "Количество точек в радиусе ".$r." равняется ".$k;

              ?>


 

Блок-схема:


Тестовый пример:


Задание 1_6_1

Описание задачи:

Татьяна Ларина, читая очередной французский роман, подсчитала сумму номеров прочитанных страниц. Написать программу, определяющую номер последней прочитанной страницы.

Описание алгоритма:

Создаем переменную, в которую присваиваем значение суммы прочитанных страниц. Создаем счетчик, по умолчанию равный нулю. Организуем бесконечный цикл. В бесконечном цикле увеличиваем счетчик на единицу, а затем вычитаем его из суммы страниц. Каждая инкрементация счетчика - это номер новой страницы.

Затем создаем проверку. Если в результате этой итерации цикла переменная с суммой стала равна нулю, то выводим на экран счетчик, который и является количеством прочитанных страниц. Если значение переменной суммы стало отрицательным, значит введенная сумма неверна, и последнего номера прочитанной страницы не существует.


Текст программы:

   <?php

              $sum = $_POST['sum'];

              $k = 0;

              while (true){//Организуем бесконечный цикл

                       $k++;//Увеличиваем номер страницы

                       $sum -= $k;//Вычитаем из суммы страниц текущую страницу

                       if ($sum == 0){

                                 echo "Последняя прочитанная страница равна ".$k;//Когда сумма будет исчерпана, выведем счетчик страниц

                                 break;

                       } elseif ($sum < 0){//Если сумма стала отрицателльной, последней страницы не существует, ровно как и суммы

                                 echo "Страницы не существует, сумма была введена некорректно.";

                                 break;

                       }

              }

              ?>


 

Тестовый пример:


Задание 1_6_2

Описание задачи:

Написать программу, вычисляющую сумму

Описание алгоритма:

Создаем две переменных для диапазона значений. Заполняем их данными из формы. Создаем переменную счетчика сумм и несколько переменных для удобного построения зацикленной формулы.

Организуем цикл с постусловием. В теле цикла создаем в еще одной переменной наше выражение. Затем проверяем, не стало ли оно больше или меньше нашего диапазона. Если не стало, то увеличиваем наш счетчик сумм и через еще одну, побочную проверку, чередуем знак нашего выражения.

Выходим из цикла, если счетчик сумм стал равен сотне. Показываем полученную сумму.


Текст программы:

   <?php

              $pi = 3.1415;//Константа Pi

              $a = $_POST['a'];

              $b = $_POST['b'];

              $k = 0; $s = 0; $i = 1; $t = 1;//Стартовые переменные для вычисления значений

              do {//Цикл с предусловием

                       $t *= 2;//Значение, изменяемое в формуле

                       $y = sin($i*$pi/$t);//Формула с синусами

                       $i += 2;//Значение, изменяемое в формуле

                       if (($y >= $a) && ($y <= $b)){//Проверка, входит ли результат формулы в диапазон

                                 $k++;//Увеличиваем счетчик цикла

                                 if ($k % 2 != 0){//В зависимости от четности счетчика определяем знак формулы

                                          $s += $y;

                                 } else {

                                          $s -= $y;

                                 }

                       }

              } while ($k <= 100);//Условие выхода - вычисление 100 значений через изменяемую в цикле формулу

              echo "Сумма равна: ".round($s,3);

              ?>


 

Тестовый пример:


Задание 1_6_25 (инд)

Описание задачи:

Найти наименьший номер элемента последователь­ности, для которого выполняется условие М. Вывести на экран этот номер и все элементы ai, где i = 1, 2, ..., п, .

Описание алгоритма:

Организуем цикл с постусловием. В нем по формуле вычисляем каждый элемент последовательности по заданной формуле до тех пор, пока элемент не будет удовлетворять установленному в задаче условию.

Текст програмы:

   <?php

              $e = $_POST['e'];

              $i = 1;

              do {//Цикл с постусловием

                       $a = pow(-1,$i)*$i/pow(2,$i);//Вычисляем элемент последовательнотсти по формуле

                       $i++;//Увеличиваем номер элемента

                       echo "$a <br>";//Выводим готовое значение элемента последовательности

              } while(abs($a*$a - 2) >= $e);//Выполняем цикл до тех пор, пока не получим минимальное значение в последовательности, отвечающее условию

              ?>


 

Блок-схема:

Тестовый пример:


 

Задача 2_1_1

Описание задачи:

Разработайте числовые функции для вычисления у. Для любых a, b, c найдите значение у.

Описание алгоритма:

Решим линейную задачу, используя математические функции PHP.

Текст программы:

<?php

$z=log(pow($a, sqrt(2+cos($b))));//Разбиение формулы на составные части

    $d=pow($c,(pow($a,2)+pow($b,2)));

    $k=pow(((pow($b,2))+(pow($c,4))+3),1/5);

    $u=pow(1.2,sqrt(1-sin($c)));

    $y=$z-$d/$k+$u;//Вычисление y

    echo round($y,2);//Вывод y?>

Тестовый пример:

 


 

Задача 2_1_2

Описание задачи:

Разработайте числовые функции для вычисления у. Для любых a, b, c найдите значение у.

Описание алгоритма:

Решим линейную задачу, используя математические функции PHP.

Текст программы:

<?php

    $q=log(2*pow($a,$c-$b)+18*pow($b,4));//Вычисление формулы по частям

    $w=log(pow(1.3,12*pow($a,2)+pow($c,4)),4+pow($a,2));

    $e=log(2*pow($c,2)+pow($b,6));

    $y=$q+$w/$e;//Вычисление y

    echo round($y,2);//Вывод y  

?>

Тестовый пример:


Задача 2_2_25 (инд)

Описание задачи:

Разработайте числовые функции для вычисления у. Для любых a, b, c найдите значение у.

Описание алгоритма:

Решим линейную задачу, используя математические функции PHP.

Текст программы:

 <?php

$q=pow(acos((5 - $c*$c)/(3 + abs($b))),2);//Слагемое 1

$w=asin(sqrt((6*$b - $c)/(3*$a*$a)));//Слагаемое 2

$e=7*sin(pow(acos(0.3),2));//Слагаем



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.