Как кодировать этот алгоритм в PHP? - PullRequest
0 голосов
/ 01 февраля 2010

У меня есть сложный алгоритм, который я пытаюсь кодировать на PHP, но он немного сложен для начинающего, как я.Так что мне нужна ваша помощь, ребятаУ меня есть массив неизвестных чисел, начиная с t1 до tn.Я не знаю его длину на самом деле.

(t1,t2,t3,t4,.....,tn)

И я хочу проверить условие на первом элементе, если нет, на последнем элементе, если не будет проверять общее условие по значениям от t2 до tn-1У меня также есть значения с именами s, c & b, которые я буду использовать в коде.Первое условие:

if c < s -> Do something
if c >= s and c < (s + (t1 - t2)) -> Do something else
if c >= (s + (t1 - tn)) and c < (s + (t1 + b)) -> Do something else

Если не было сопоставлено ни одно из предыдущих условий, я хочу проверить значения от t2 до tn-1 следующим образом

if c >= (s + (t1 - t2)) and c < (s + (t1 - t3)) -> Do something that's bound to t2 value
if c >= (s + (t1 - t3)) and c < (s + (t1 - t4)) -> Do somehting else

и так далее до tn-1 .. Я не знаю, сколько значений в массиве, поэтому мне нужно сделать это динамически

Может ли кто-нибудь мне помочь?Это будет действительно большая помощь

Ответы [ 3 ]

1 голос
/ 01 февраля 2010

Давайте на минутку представим, что это не ваша домашняя работа.

Первое условие скучно, это IF операторы с проверкой, чтобы убедиться, что t2 существует и count() для поиска tn.Вторая часть немного интереснее:

$homework = array(t1,t2....tn);

for (
    $i=2,$n=count($homework),$cs=$c-$s,$cnd_a=$homework[0]-$homework[1];        
    $i<$n;++$i) 
{
    $cnd_b = $homework[0] - $homework[$i];
    if ($cs >= $cnd_a && $cs < $cnd_b) do_no_study($homework[$i-1]);
    $cnd_a = $cnd_b;
}

Или что-то в этом роде.

0 голосов
/ 01 февраля 2010

Попробуйте это:

$t = array(); // your array
$len = count($t);

if ($c < $s)
    Do_something();
else if ($c >= $s && $c < ($s + ($t[0] - $t[1])))
    Do_something_else();
else if ($c >= ($s + ($t[0] - $t[$len - 1])) && $c < ($s + ($t[0] + b)))
    Do_something_else_again();
else
    for ($i = 1; $i < $len - 1; $i++)
        if ($c >= ($s + ($[0] - $t[$i])) && $c < ($s + ($t[0] - $t[$i + 1)))
            Do_something_thats_bound_to_value($t, $i);

Обратите внимание, что «$ c> = $ s» не требуется во втором операторе «if», кроме ясности.

0 голосов
/ 01 февраля 2010

Это может быть для вас началом:

<?php

function check_condition($value, $pos)
{
    // do your magic
    return TRUE; // or FALSE;
}

$values = array(1,2,3,4,5,6,7,8,9);

// Array length
$arr_length = length($values);

// Check the first condition
for ($i=0; $i<($arr_length/2); $i++)
{
    if (check_condition($values[$i], $i))
    {   
        echo "condition met at start";
        break;
    }
    if (check_condition($values[$i], $arr_length-$i))
    {
        echo "condition met at start";
        break;
    }
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...