Блог по Ruby in Rails

блог по Ruby on Rails


вторник, 3 марта 2009 г.

Изучаем PHP вместе: продолжаем функционировать.

В предыдущем посте (http://www.egoholic.ru/2009/02/blog-post_22.html) я уже писал о написании собственных функций на PHP. Сегодня, я решил написать еще одну статью, касательно созданию собственных функций.

Итак, приступим!

Задача №1: Написать функцию возвращающую количество разрядов числа.

А вот и код этой функции:

function num_digits($number)
{
$rest = floor($number / 10);
$i = 1;
while ($rest >= 1) {
$rest = floor($rest / 10);
$i++;
}
return $i;
}

Как видите, вычисление количества разрядов на PHP – довольно простое дело.

Задача №2: Написать функцию, которая возвращает массив цифр из которых состоит число.

Реализация функции:

function citizen($number)
{
$citizen_array = array();
$stepen = num_digits($number) - 1;
$divider = pow(10, $stepen);
while($divider >= 1){
$cit = floor($number / $divider);
$citizen_array[] = $cit;
$number = $number % $divider;
$divider /= 10;
}
return($citizen_array);
}

Задача №3: Написать на PHP функцию, которая вычисляет сумму цифр из которых состоит число.

Код функции:

function sum_of_digits($number)
{
$citnumber = array();
$citnumber = citizen($number);
$i = 0;
while($i <= count( $citnumber)){
$summ = $summ + $citnumber[$i];
$i++;
}
return($summ);
}


Задача №4: Написать функцию, которая возвращает числа, цифры, составляющие которое, идут в обратном порядке, нежели в заданном числе. Т.е. нам необходимо, при вводе 123, выдать 321, при вводе 478, выдать 874 и т.д.

Программный код:

function reverse_digits($number)

{
$citnumber = citizen($number);
$reverse_citnumber = array_reverse($citnumber);
$reverse_number = implode($reverse_citnumber, "");
return($reverse_number);
}


Задача №5: Написать функцию, которая определяет, является ли число палиндромом(палиндром – это число которое читается одинаково, как слева на право, так и наоборот, к примеру, 12321 - палиндром).

Код функции:

function is_palindrom($number)
{
return(reverse_digits($number) == $number);
}


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

Спонсор поста:
Хороший бесплатный хостинг Дама Пик.

5 комментариев:

  1. >Задача №2: Написать функцию, которая возвращает массив цифр из которых состоит число.

    К чему ты писал такой большой кусок кода? PHP обладает большим числом функций которые половину работы уже делают за тебя. И велосипедов своих не надо изобретать. Достаточно сделать так:
    function citizen($number)
    {
    $number = (string)$number;
    return str_split($number);
    }
    Что скажешь?

    >Задача №3: Написать на PHP функцию, которая вычисляет сумму цифр из которых состоит число.

    А как тебе такое?
    function sum_of_digits($number)
    {
    $number = (string)$number;
    return array_sum($number);
    }

    Я думаю что для таких задач функции то писать и не обязательно.

    И ещё один момент по поводу стандартов кодирования:
    "Возвращаемое значение не должно обрамляться в круглые скобки, иначе это ухудшает читабельность, а также может поломать код, если метод позже станет возвращать результат по ссылке."
    Выдержка из стандарта кодирования Zend
    http://framework.zend.com/manual/ru/coding-standard.html

    Удачи ;)

    ОтветитьУдалить
  2. Этот комментарий был удален автором.

    ОтветитьУдалить
  3. Извиняюсь за ошибку в 3 задаче. Вот корректно:

    function citizen{
    $number = (string)$number;
    $number_split = str_split($number);

    return array_sum($number_split);
    }

    ОтветитьУдалить
  4. Кошмар! Это что?!
    $i = 0;
    while($i <= count( $citnumber)){
    Вышли за границы массива.

    Действительно, изобретение велосипеда, а ведь незнающие люди читают и будут у себя такое использовать.

    ОтветитьУдалить
  5. Эм. Лучше попробуй раскрыть тему разнообразных MVC и прочего :) Функции позволяет реализовать практически любой язык...)

    ОтветитьУдалить