Форум » Вебмастер и вебдизайн » Языки программирования » Помогите доработать решение задачки по php
Открыть Ответить

Помогите доработать решение задачки по php

0.00

0.00

1
05.02.2019 10:30:00 05.03.2021 09:54:32

Привет, коллеги.
Я решил, что пора подтянуть свои не ахти какие знания в php.

Вот задачка: Создайте переменную $studentsCount - присвойте ей случайное значение от 1 до 1000000. Создайте программу, которая выведет в нужной форме текстовое сообщение, например такие “на учебе 100 студентов”, или “на учебе 2 студента” и т.д.

Я решил её вот так:

$studentsCoun = rand(1, 1000000);
  

    if( ($studentsCoun % 100 >= 11) && ($studentsCoun % 100 <= 19) ){
        
        echo "На учебе ".$studentsCoun." студентов";
    
    } else {
    
        if($studentsCoun % 10 == 1):
           
          echo "На учебе ".$studentsCoun." студент";  
        
        elseif ($studentsCoun % 10 == 2 || $studentsCoun % 10 == 3 || $studentsCoun % 10 == 4):
        
          echo "На учебе ".$studentsCoun." студента";
          
        else:
        
          echo "На учебе ".$studentsCoun." студентов";
          
        endif; 
                
    }


Куратор написал замечание по решению. Все правильно, все работает, но "В условии для остатков 2, 3, 4 можно уменьшить количество логических опереаторов."

Ни как не могу понять, как там уменьшить количество "ИЛИ"?

Группа
Активисты
Пункты
10766
Регистрация
28.10.2005
Пол
Мужчина
Из
Москва
Предупреждения
Нет
otherside
otherside
3.97

3.97

05.02.2019 18:39:07 05.02.2019 18:39:33

Все таки понял. Оказалось все элементарно. Аж стыдно, что сразу не понял.

Было:

($studentsCoun % 10 == 2 || $studentsCoun % 10 == 3 || $studentsCoun % 10 == 4)


Стало:
($studentsCoun % 10 == 2 || $studentsCoun % 10 <= 4)

Группа
Активисты
Пункты
10766
Регистрация
28.10.2005
Пол
Мужчина
Из
Москва
Предупреждения
Нет
otherside
otherside
3.97

3.97

03.03.2019 16:01:10 03.03.2019 16:03:29
$max=10000;
$count = rand(1, $max);
$where=array("в магазин", "в кафе", "есть", "спать", "гулять");
$how=array("молча ушли", "смотались", "решили пойти");
$i=rand(0,(count($where)-1));
$k=rand(0,(count($how)-1));

echo "На учебе  из ".$max." студентов, на месте только  ".$count." чел.  
Остальные ".($max - $count)." чел. ".$how[$k]." ".$where[$i];
Группа
Клиент
Пункты
32504
Регистрация
06.05.2011
Пол
Мужчина
Предупреждения
Нет
olevpa
olevpa
4.02

4.02

06.03.2019 09:33:28

Использую древнею как ...... функцию

//Функция вывода множественный; многочисленный
function plural($n, $form1, $form2, $form5){
$n = abs($n) % 100;
$n1 = $n % 10;
if ($n > 10 && $n < 20) return $form5;
if ($n1 > 1 && $n1 < 5) return $form2;
if ($n1 == 1) return $form1;
return $form5;
}

Группа
Клиент
Пункты
1246
Регистрация
21.09.2005
Пол
Мужчина
Предупреждения
Нет
Sergey
Sergey
3.57

3.57

15.12.2020 21:15:57 15.12.2020 21:25:12

Было:

($studentsCoun % 10 == 2 || $studentsCoun % 10 == 3 || $studentsCoun % 10 == 4)


Стало:
($studentsCoun % 10 == 2 || $studentsCoun % 10 <= 4)



Не совсем верно.
$studentsCoun % 10 <= 4 - это ещё и 3, и 2, и 1, и 0...
Поэтому, запись $studentsCoun % 10 == 2 - тоже не имеет смысла.

Правильнее будет так:
elseif ($studentsCoun % 10 > 1 && $studentsCoun % 10 < 5):


т.е., получаем диапазон от 2 и до 4 - что и требовалось в исходной записи.

Группа
Новички
Пункты
221
Регистрация
15.12.2020
mychatik
mychatik
5.00

5.00

Открыть Ответить
Хотите опробовать SLAED CMS в действии?
Идеи и предложения
Обратная связь
Подтверждение

Поделиться
QR-код