Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2013, 15:55   #1
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию Алгоритм функции.

Есть задача сделать функцию, которая будет выдавать на выхлопе число.
Условия таковы:
1. Есть id, от 0 до грубо говоря бесконечности.

Код:
getnum($id){
Если 0 < $id<  5000 тогда выдать число 0
Если 5001 < $id < 10000 тогда выдать число 1
Если 10001 < $id < 15000 тогда выдать число 2
Если 15001 < $id < 20000 тогда выдать число 3
Ну и т.д.
return число
}
Никак немогу придумать алгоритм, не писать же кучу ифов до безконечности. ))) Не прошу мне выдавать код, я это и сам сделаю. А, вот в алгоритме прошу помочь.
Благадарю друзья за помощь!!!

Последний раз редактировалось Небесный; 19.02.2013 в 18:20.
Небесный вне форума Ответить с цитированием
Старый 19.02.2013, 16:25   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,179
По умолчанию

целочисленное деление на 5000 ?
Код:
ceil($id/5000)
ADSoft вне форума Ответить с цитированием
Старый 19.02.2013, 16:50   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
целочисленное деление на 5000 ?
ceil($id/5000)
Цитата:
Сообщение от Небесный Посмотреть сообщение
Если $id< 5000 тогда выдать число 0
Здесь скорее подходит floor вместо ceil, если следовать этому условию:
PHP код:
$id 4326;
echo 
ceil($id/5000); // 1
echo floor($id/5000);// 0 
Ну и не совсем понятно из описания задачи, как должны обрабатываться ситуации, когда $id = 5000; (10000, 15000, 20000, etc...).
Andkorol вне форума Ответить с цитированием
Старый 19.02.2013, 17:08   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,179
По умолчанию

Да, чето поспешил :-)
ADSoft вне форума Ответить с цитированием
Старый 19.02.2013, 18:17   #5
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Ну и не совсем понятно из описания задачи, как должны обрабатываться ситуации, когда $id = 5000; (10000, 15000, 20000, etc...).
Ну, id= от 1 до 5000 должно возвращать 0, id от 5001 до 10000 должно возвращать 1, id от 10001 до 15000 должно возращать 2 и т.д.

Последний раз редактировалось Небесный; 19.02.2013 в 18:19.
Небесный вне форума Ответить с цитированием
Старый 19.02.2013, 19:33   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,351
По умолчанию

PHP код:
ceil($id/5000) - 
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 19.02.2013, 20:39   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Небесный Посмотреть сообщение
Ну, id= от 1 до 5000 должно возвращать 0, id от 5001 до 10000 должно возвращать 1, id от 10001 до 15000 должно возращать 2 и т.д.
Я бы сделал как-то так примерно:
PHP код:
function getnum($id$start 5000$end 30000$step 5000){
    
$return 0;
    
$nums range($start$end$step);
    foreach(
$nums as $key => $num){
        if(
$id <= $num){
            
$return $key;
            break;
        }
    }
    return 
$return;
}

$id rand(130000);
$num getnum($id);
var_dump($id$num); 
Andkorol вне форума Ответить с цитированием
Старый 19.02.2013, 20:48   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,351
По умолчанию

Andkorol, я вообще не силен в PHP, но, имхо, 1 функция быстрее, чем перебор (foreach ведь цикл).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 19.02.2013, 21:05   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
имхо, 1 функция быстрее, чем перебор (foreach ведь цикл).
Согласен полностью!
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм функции c# DimaNIKul Помощь студентам 2 04.02.2013 20:01
Создать алгоритм и программу нахождения значения функции oly557964 Паскаль, Turbo Pascal, PascalABC.NET 0 03.02.2012 19:13
Алгоритм для вычисления функции student_13 C# (си шарп) 0 02.02.2012 22:49
Алгоритм построения графика функции... serg_yl Qt и кроссплатформенное программирование С/С++ 0 08.03.2011 19:57
Алгоритм вычисления значения функции vzr Свободное общение 9 30.03.2010 20:14