@mkramer 3 секунды почему это три? Там в задачи сказано, найдите самый быстрый вариант распечатки скрипты задав время в секундах печати одного принтера задействовав второй или только один. --- Добавлено --- @runcore правильно вы задачу то поняли? --- Добавлено --- @runcore, @mkramer Ну вот смотрите по условиям задачи допустим у вас 4 листа бумаги, каждый принтер печатает по секунде каждый лист бумаги! Так какое самое быстрое решение задать ? И сколько на это затратится времени? Вы чё считать не умеете? --- Добавлено --- Сори Забыл --- Добавлено --- Я посчитал как будто оригинала два
PHP: function express_xerox_copy($N, $y, $x) { $N = $N-1; // сразу же убераем один так как он оригинал if ($x<$y) { $Nx_All_time = $N * $x; // Всё время затраченное на быстрой печати $t = $y; $_t = $x; } else if ($y<$x) { $N = $N-1; $Nx_All_time = $N * $y; $t = $x; $_t = $y; } elseif ($y==$x) { if($N%2 == 0) { $all_res_time = $N/2 * $x; $all_res_time = $all_res_time + $x; return $all_res_time; } else { $all_res_time = floor($N/2) * $x; $all_res_time += $x; $all_res_time = $all_res_time + $x; return $all_res_time; } } $all_res_time = 0; $time2 = $t; for ($i=0; $i<$N; $i=0) { $N = $N-1; $all_res_time += $_t; if($time2 <= $Nx_All_time) { $N = $N-1; $time2 += $t; $Nx_All_time = $N*$_t; } } //echo $_t; $all_res_time += $_t; return $all_res_time; // Возвращаем результат плюс время на затраченное на распечатку оригенала } echo express_xerox_copy(10, 6, 3); --- Добавлено --- @runcore да там чутка ошибка то А ты так написал как будто я писец гавно написал Вот ниже скинул смотри --- Добавлено --- @runcore я просто забыл, что оригинал внатуре один, не учёл этого, но там делов то, а вы сразу не работает, так нельзя, всё работает. И чётко всё работает вот проверь, я добавил что сразу же время убирается один лист как оригинал и потом за него время приписывается в конце!
цирк уехал https://php.ru/forum/threads/pomogite-nachinajuschemu-programmistu-reshit-zadachu.59793 --- Добавлено --- Любовь! Доброта! --- Добавлено --- Доброта! Любовь!
хорош уже пора мириться. --- Добавлено --- @askanim тебе предложили условия капитуляции. можешь согласиться или сам найти ошибки. =)
@igordata дак пусть ткнёт пальцем. Для меня считает правильно, ну исходя из моей логики. Могу ошибаться, конечно, но пусть он не гоняет воздух, а конкретн опокажет где не прав. Потому что у меня логика такая: пока печатает быстрый принтер, то второй параллельно может печатать, до тех пор пока пока печатает первый быстрый принтер. Но с условием, что его печать закончится до того как закончит печатать быстрый принтер. Ну и отнять один от общей пачки листов и отправить его на печать в быстрый принтер, а в конце прибавить время печати одного листа, на быстром принтере.
почаны, ворвусь быстренько в тред опять: а где Ранкор "тыкнул в говно" товарища (тамбовский волк мне товарищ) Асканима? цитату плиз, я сейчас перечитывал - то ли опять проглядел, то ли вы тут воздух сотрясаете.
@runcore нет. Оно там нормально ты логику кода не видишь. смотри выше я написал. Могу прокомментировать каждое действие своего кода если станет легче сейчас закину.
PHP: function express_xerox_copy($N, $y, $x) { $N = $N-1; // сразу же убираем один так как он оригинал if ($x<$y) { // если скорость печати на принтере $x быстрее чем на принтере $y // то считаем затраченное время общей печати на быстром принтере $Nx_All_time = $N * $x; // Всё время затраченное на принтере $x $t = $y; // Присваиваем время печати медленного принтера $_t = $x; // присваиваем время печати быстрого принтера } else if ($y<$x) { // если скорость печати на принтере $y быстрее чем на принтере $x // то считаем затраченное время общей печати на быстром принтере $Nx_All_time = $N * $y; // Всё время затраченное на принтере $y $t = $x; // Присваиваем время печати медленного принтера $_t = $y; // присваиваем время печати быстрого принтера } elseif ($y==$x) { // Если скорость обоих принтеров равна // то далее проверяем условие что кол-во бумаги чётное или не чётное if($N%2 == 0) { // Если чётное то делим просто на два и умножаем на любое время $all_res_time = $N/2 * $x; $all_res_time = $all_res_time + $x; // прибавляем время на печать оригинала return $all_res_time; // вернём затраченное время на печать } else { // Если же не чётное то мы делим на два и округляем в меньшую сторону $all_res_time = floor($N/2) * $x; $all_res_time += $x; // и прибавляем время одной печати которая не вошла в чёт $all_res_time = $all_res_time + $x; // Прибавляем время печати оригинала return $all_res_time; // возвращаем затраченное время на печать } } $all_res_time = 0; // Наше общее время пока оно ноль так как печатать не начали $time2 = $t; // Время медленной печати присваиваем переменной $time2 for ($i=0; $i<$N; $i=0) { // и так начали печать всех листов $N = $N-1; // Отнимаем один лист на быстром принтере $all_res_time += $_t; // прибавляем время которое потребовалось на печать if($time2 <= $Nx_All_time) { // А тут у нас печать на медленном принтере // Если время печати листов медленного принтера ещё // меньше общей печати на быстром принтере // то заходим в условие и отнимаем от общей пачки листов один лист $N = $N-1; // собственно отняли лист $time2 += $t; // прибавили время печати на медленном принтере $Nx_All_time = $N*$_t; // И пересчитали оставшееся время } } //echo $_t; $all_res_time += $_t; // собственно прибавили время на печать оригинала return $all_res_time; // Возвращаем результат плюс время на затраченное на распечатку оригинала } echo express_xerox_copy(10, 6, 3); --- Добавлено --- @runcore не знаю как ты так скопировал, у меня всё ровно считает.
А P.S в том что я кидал внатуре, есть лишний $N = $N - 1; Но это просто случайно туда попало, в оригинале у меня такого нет. Можно было бы и догадаться, что это случайно там оказалось. --- Добавлено --- @runcore его изначально там не было, у меня вчера темп был и бошка болела вполне мог случайно поставить не туда при печати на форуме. Изначально я то правил на форуме мож лишний один и написал, но суть роль, одна случайная строчка не показатель. Я написал, что могу и ошибаться. Так что сказал не гоняй воздух, а покажи. Что болтать, дела делать надо, мы же не бабки на базаре и не семки тут продаём.
в условии задачи не сказано что $x и $y не могут быть равны нулю, хотябы один из них. твой код это может нормально переварить?
@runcore А ты как считаешь? Я вот например считаю, что ты написал сейчас чушь Во первых такой скорости не бывает. А во вторых, ну даже если ты впишешь ко мне 0, хоть какой то из параметров, то он и выдаст результат 0. Потому что затраченное время будет 0 секунд;
Ну вот, теперь видно какой из тебя программист и математик. Классный просто, вот что я скажу я даже лайк туда поставлю. Просто за то, что ты ща так лихо стебанулся, над собой же. и ещё даже вот это воткну
0 - значит копир неработает. это же очевидно. значит нужно сканировать на оставшемся. даже в условии сказано. что можно использовать только один из них. это как раз такой случай.