За последние 24 часа нас посетили 72308 программистов и 3535 роботов. Сейчас ищут 2708 программистов ...

помогите дописать код.

Тема в разделе "Сделайте за меня", создана пользователем Viki, 26 авг 2023.

  1. Viki

    Viki Новичок

    С нами с:
    25 авг 2023
    Сообщения:
    14
    Симпатии:
    0
    <?php

    function calculate ($a, $b, $action) {
    if ($action = '+') {
    $c = $a + $b;
    } else {
    $c = $a - $b;
    }
    return $c;
    }

    $a = 5;
    $b = 10;
    $action = '+';

    echo calculate($a, $b, $action);

    ?>



    Задача: Сделать калькулятор. 3 входящих параметра: 1. Первое число, 2. Второе число, 3. Действие (плюс, минус, умножить, поделить).

    написала код, как я поняла. смотрела разные уроки в итоге вот этот код, но не могу добавить туда (* и /) по уроку должна добавить через elsif, пробовала, но код не работал. Либо написанный мной код вовсе не верный.

    Честно не особо поняла функции и как они работает.
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.831
    Симпатии:
    1.335
    Адрес:
    Лень
    PHP:
    1. <?php
    2.  
    3. declare ( strict_types = 1 );
    4.  
    5. error_reporting ( E_ALL );
    6.  
    7. enum ArithmeticSymbols: string
    8. {
    9.     case Plus = '+';
    10.     case Minus = '-';
    11.     case Multiply = '*';
    12.     case Divide = '/';
    13.  
    14.     public function calculate( int $a, int $b ): string
    15.     {
    16.         return ( string ) match( $this )
    17.         {
    18.             static :: Plus => $a + $b,
    19.             static :: Minus => $a - $b,
    20.             static :: Multiply => $a * $b,
    21.             static :: Divide => $a / $b,
    22.         };
    23.     }
    24. }
    25.  
    26.  
    27.  
    28.  
    29. function calculate( int $a, int $b, ArithmeticSymbols $action )
    30. {
    31.     return $action -> calculate( $a, $b );
    32. }
    33.  
    34. $a = 5;
    35. $b = 10;
    36. $action = ArithmeticSymbols :: Minus; // Plus / Minus / Multiply / Divide
    37.  
    38. echo calculate( $a, $b, $action );
    Самый современный код для 2024 года и точка.
    Контроль всего и вся.
    --- Добавлено ---
    А самый короткий калькулятор выглядит так:
    PHP:
    1. $a = 5;
    2. $b = 10;
    3. $action = '*';
    4.  
    5. eval ( "echo $a {$action} $b;" );
    Но не то что не рекомендую, а запрещаю использовать где-либо eval.
    Это тоже самое что и открыть все двери квартиры и уехать в отпуск.
     
  3. Viki

    Viki Новичок

    С нами с:
    25 авг 2023
    Сообщения:
    14
    Симпатии:
    0



    Спасибо)
     
  4. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.511
    Симпатии:
    284
    Код (Text):
    1. <?php
    2. $action = '/';
    3.  
    4. $a = 5;
    5. $b = 20;
    6.  
    7. $actions = array('+' => 'bcadd', '-' => 'bcsub', '*' => 'bcmul', '/' => 'bcdiv');
    8.  
    9. echo $actions[$action]($a, $b, 8);
    10. ?>
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.831
    Симпатии:
    1.335
    Адрес:
    Лень

    PHP:
    1. $action = '-';
    2. $a = 1.234;
    3. $b = 1;
    0.23400000

    PHP:
    1. $action = '-';
    2. $a = 1.234;
    3. $b = 2;
    -0.76600000
     
  6. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.511
    Симпатии:
    284
    А если справку по bc*() глянуть?
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.831
    Симпатии:
    1.335
    Адрес:
    Лень
    Вот и посмотри что у тебя выходит. Типизацию включи для начала, вместо того чтобы сидеть в своем 2009 году.
     
  8. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.511
    Симпатии:
    284
    Это, конечно же всё меняет, да
    Хороший был год
     
  9. Viki

    Viki Новичок

    С нами с:
    25 авг 2023
    Сообщения:
    14
    Симпатии:
    0
    Всем спасибо! за помощь. я задачу решила, благодаря всем Вам!