За последние 24 часа нас посетили 17635 программистов и 1723 робота. Сейчас ищут 1910 программистов ...

Помогите начинающему программисту решить задачу

Тема в разделе "PHP для новичков", создана пользователем Slavon143, 27 авг 2016.

  1. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @mkramer 3 секунды почему это три? Там в задачи сказано, найдите самый быстрый вариант распечатки скрипты задав время в секундах печати одного принтера задействовав второй или только один.
    --- Добавлено ---
    @runcore правильно вы задачу то поняли?
    --- Добавлено ---
    @runcore, @mkramer
    Ну вот смотрите по условиям задачи допустим у вас 4 листа бумаги, каждый принтер печатает по секунде каждый лист бумаги!
    Так какое самое быстрое решение задать ? И сколько на это затратится времени? Вы чё считать не умеете?
    --- Добавлено ---
    Сори
    Забыл :D
    --- Добавлено ---
    Я посчитал как будто оригинала два :D
     
  2. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    PHP:
    1. function express_xerox_copy($N, $y, $x) {
    2.     $N = $N-1; // сразу же убераем один так как он оригинал
    3.  
    4.     if ($x<$y) {
    5.         $Nx_All_time = $N * $x; // Всё время затраченное на быстрой печати
    6.         $t = $y;
    7.         $_t = $x;
    8.  
    9.     }
    10.     else if ($y<$x) {
    11.         $N = $N-1;
    12.         $Nx_All_time = $N * $y;
    13.         $t = $x;
    14.         $_t = $y;
    15.     }
    16.     elseif ($y==$x) {
    17.         if($N%2 == 0) {
    18.             $all_res_time = $N/2 * $x;
    19.             $all_res_time = $all_res_time + $x;
    20.             return $all_res_time;
    21.         }
    22.         else {
    23.             $all_res_time = floor($N/2) * $x;
    24.             $all_res_time += $x;
    25.             $all_res_time = $all_res_time + $x;
    26.             return $all_res_time;
    27.         }
    28.     }
    29.     $all_res_time = 0;
    30.     $time2 = $t;
    31.     for ($i=0; $i<$N; $i=0) {
    32.         $N = $N-1;
    33.         $all_res_time += $_t;
    34.         if($time2 <= $Nx_All_time) {
    35.             $N = $N-1;
    36.             $time2 += $t;
    37.             $Nx_All_time = $N*$_t;
    38.         }
    39.  
    40.     }
    41.    //echo $_t;
    42.     $all_res_time += $_t;
    43.     return $all_res_time; // Возвращаем результат плюс время на затраченное на распечатку оригенала
    44. }
    45. echo express_xerox_copy(10, 6, 3);
    --- Добавлено ---
    @runcore да там чутка ошибка то :D А ты так написал как будто я писец гавно написал :) Вот ниже скинул смотри
    --- Добавлено ---
    @runcore я просто забыл, что оригинал внатуре один, не учёл этого, но там делов то, а вы сразу не работает, так нельзя, всё работает. И чётко всё работает вот проверь, я добавил что сразу же время убирается один лист как оригинал и потом за него время приписывается в конце!
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    #28 igordata, 30 авг 2016
    Последнее редактирование: 30 авг 2016
    askanim нравится это.
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    @askanim
    ЭТО НЕ АГРЕССИЯ>>>> я вижу у тебя еще как минимум две ошибки в коде <<< ЭТО НЕ АГРЕССИЯ
     
    denis01 нравится это.
  5. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @runcore пока это болабольство покажи ошибки.
     
    denis01 нравится это.
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @askanim на слабо берёшь :D
     
    igordata и askanim нравится это.
  7. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Если сдаешься и сам никак не можешь найти, то конечно я тебе могу сказать. я добрый.
     
  8. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @runcore давай воздух не гоняй, показывай тряпицу людям.
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    хорош уже пора мириться.
    --- Добавлено ---
    @askanim тебе предложили условия капитуляции. можешь согласиться или сам найти ошибки. =)
     
  10. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @igordata дак пусть ткнёт пальцем. Для меня считает правильно, ну исходя из моей логики. Могу ошибаться, конечно, но пусть он не гоняет воздух, а конкретн опокажет где не прав.

    Потому что у меня логика такая: пока печатает быстрый принтер, то второй параллельно может печатать, до тех пор пока пока печатает первый быстрый принтер. Но с условием, что его печать закончится до того как закончит печатать быстрый принтер.
    Ну и отнять один от общей пачки листов и отправить его на печать в быстрый принтер, а в конце прибавить время печати одного листа, на быстром принтере.
     
  11. Anhk

    Anhk Активный пользователь

    С нами с:
    13 дек 2015
    Сообщения:
    219
    Симпатии:
    11
    почаны, ворвусь быстренько в тред опять:
    а где Ранкор "тыкнул в говно" товарища (тамбовский волк мне товарищ) Асканима?
    цитату плиз, я сейчас перечитывал - то ли опять проглядел, то ли вы тут воздух сотрясаете.
     
  12. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    в одном из условий есть лишнее:
    $N = $N-1;
     
  13. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @runcore нет. Оно там нормально ты логику кода не видишь. смотри выше я написал. Могу прокомментировать каждое действие своего кода если станет легче сейчас закину.
     
  14. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    тоесть нормально что разный результат для (8,1,2) и (8,2,1) ?
     
  15. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    PHP:
    1. function express_xerox_copy($N, $y, $x) {
    2.         $N = $N-1; // сразу же убираем один так как он оригинал
    3.  
    4.         if ($x<$y) {
    5.             // если скорость печати на принтере $x быстрее чем на принтере $y
    6.             // то считаем затраченное время общей печати на быстром принтере
    7.             $Nx_All_time = $N * $x; // Всё время затраченное на принтере $x
    8.             $t = $y; // Присваиваем время печати медленного принтера
    9.             $_t = $x; // присваиваем время печати быстрого принтера
    10.  
    11.         }
    12.         else if ($y<$x) {
    13.             // если скорость печати на принтере $y быстрее чем на принтере $x
    14.             // то считаем затраченное время общей печати на быстром принтере
    15.          
    16.             $Nx_All_time = $N * $y; // Всё время затраченное на принтере $y
    17.             $t = $x; // Присваиваем время печати медленного принтера
    18.             $_t = $y; // присваиваем время печати быстрого принтера
    19.         }
    20.         elseif ($y==$x) {
    21.             // Если скорость обоих принтеров равна
    22.             // то далее проверяем условие что кол-во бумаги чётное или не чётное
    23.             if($N%2 == 0) {
    24.                 // Если чётное то делим просто на два и умножаем на любое время
    25.                 $all_res_time = $N/2 * $x;
    26.                 $all_res_time = $all_res_time + $x; // прибавляем время на печать оригинала
    27.                 return $all_res_time;  // вернём затраченное время на печать
    28.             }
    29.             else {
    30.                 // Если же не чётное то мы делим на два и округляем в меньшую сторону
    31.                 $all_res_time = floor($N/2) * $x;
    32.                 $all_res_time += $x; // и прибавляем время одной печати которая не вошла в чёт
    33.                 $all_res_time = $all_res_time + $x; // Прибавляем время печати оригинала
    34.                 return $all_res_time; // возвращаем затраченное время на печать
    35.             }
    36.         }
    37.      
    38.         $all_res_time = 0; // Наше общее время пока оно ноль так как печатать не начали
    39.         $time2 = $t; // Время медленной печати присваиваем переменной $time2
    40.         for ($i=0; $i<$N; $i=0) {
    41.             // и так начали печать всех листов
    42.          
    43.             $N = $N-1; // Отнимаем один лист на быстром принтере
    44.             $all_res_time += $_t; // прибавляем время которое потребовалось на печать
    45.             if($time2 <= $Nx_All_time) {
    46.                 // А тут у нас печать на медленном принтере
    47.                 // Если время печати листов медленного принтера ещё
    48.                 // меньше общей печати на быстром принтере
    49.                 // то заходим в условие и отнимаем от общей пачки листов один лист
    50.                 $N = $N-1; // собственно отняли лист
    51.                 $time2 += $t; // прибавили время печати на медленном принтере
    52.                 $Nx_All_time = $N*$_t; // И пересчитали оставшееся время
    53.             }
    54.  
    55.         }
    56.         //echo $_t;
    57.         $all_res_time += $_t; // собственно прибавили время на печать оригинала
    58.         return $all_res_time; // Возвращаем результат плюс время на затраченное на распечатку оригинала
    59.     }
    60.     echo express_xerox_copy(10, 6, 3);
    --- Добавлено ---
    @runcore не знаю как ты так скопировал, у меня всё ровно считает.
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    @Anhk

    в подворотне есть темка с таким же названием. это всё можно обсудить там.
     
    Anhk нравится это.
  17. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    этот код отличается от того что есть выше. тут лишний $N = $N-1; из второго IF уже убран.
     
  18. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    А P.S в том что я кидал внатуре, есть лишний $N = $N - 1;
    Но это просто случайно туда попало, в оригинале у меня такого нет. Можно было бы и догадаться, что это случайно там оказалось.
    --- Добавлено ---
    @runcore его изначально там не было, у меня вчера темп был и бошка болела вполне мог случайно поставить не туда при печати на форуме. Изначально я то правил на форуме мож лишний один и написал, но суть роль, одна случайная строчка не показатель. Я написал, что могу и ошибаться. Так что сказал не гоняй воздух, а покажи. Что болтать, дела делать надо, мы же не бабки на базаре и не семки тут продаём.
     
  19. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    ага. случайно)
     
  20. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @runcore эх малыш ты ещё.
    --- Добавлено ---
    @runcore и не по возрасту, а по общению.
     
  21. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    в условии задачи не сказано что $x и $y не могут быть равны нулю, хотябы один из них.
    твой код это может нормально переварить?
     
  22. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @runcore А ты как считаешь?
    Я вот например считаю, что ты написал сейчас чушь :)
    Во первых такой скорости не бывает.
    А во вторых, ну даже если ты впишешь ко мне 0, хоть какой то из параметров, то он и выдаст результат 0. Потому что затраченное время будет 0 секунд;
     
  23. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    думаю не сможет.
     
  24. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Ну вот, теперь видно какой из тебя программист и математик. Классный просто, вот что я скажу я даже лайк туда поставлю. Просто за то, что ты ща так лихо стебанулся, над собой же.

    и ещё даже вот это воткну

    [​IMG]
     
  25. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    0 - значит копир неработает. это же очевидно. значит нужно сканировать на оставшемся. даже в условии сказано. что можно использовать только один из них.
    это как раз такой случай.