Професионална програма
Loading...
+ Нов въпрос
Vasilsk avatar Vasilsk 109 Точки

[Exam Problems] PHP Basics - Exam 29.08 - Morning - {04} softuniTunes

Здравейте колеги,

 

Някой може ли да ми каже защо с този код ми дава само 70/100 в judge-a ? Тествах си кода в различни ситуации, но не мога да разбера къде гърми.

 

http://pastebin.com/Q0XVBTuc

0
PHP Web Development Basics 08/03/2015 14:29:21
a_rusenov avatar a_rusenov 1103 Точки

Не сплитваш правилно с " | ". 

  • All songs will be in the format above: properties separated by | (with possible whitespace around them)

Също така не обхождаш пропъртитата правилно - т.е. foreach-ваш абсолютно всичко и търсиш съвпадение с изпълнител навсякъде, а в единия тест името на изпълнителя е сложено като жанр. :)

1
Vasilsk avatar Vasilsk 109 Точки

Благодаря ти за отговора. Сега вече работи :)

0
02/09/2014 15:06:06
Filkolev avatar Filkolev 4485 Точки

Според мен в условието е редно да се уточни, че рейтингът следва да се пусне на floatval. Доста се помъчих докато не видях в единия от тестовете, че системата очаква рейтинг 0.0 да бъде изписан като 0, а аз си го връщах като 0.0 (което за мен е логично - променям само ако трябва да ескейпвам нещо).

Нямах други грешки по алгоритъма, щеше да е много болезнено да загубя 40 точки защото изискване за форматирането на изхода не е споменато изрично нкъде.

0
ph.kolarov avatar ph.kolarov 63 Точки

Здравейте, дали ще може някой да удари едно рамо..., че зациклих. Не мога да разбера къде бъркам при сортирането....

http://pastebin.com/PJABnPt7

Благодаря!

 

 

0
VenelinGrozev avatar VenelinGrozev 130 Точки

Като гледам сортирането го правиш през няколко цикъла и там нещата сякаш малко се претруват и усложняват.

Защо не ползваш просто usort функцията за сортиране на масиви? С нея нещата добиват много по-ясен и прегледен вид.

Тази задача не съм я решавал понеже ми се стори твърде "стандартна" но ако трябва да я решавам бих го направил с usort и анонимни функции. Ако не си работил досега с нея кажи да помагаме.

За илюстрация пускам само сортирането на задача 4 от 31.08.2014, която е горе-долу идентична

usort ( $students, function ($a, $b) use($order, $col) {
    switch ($order . '-' . $col) {
        case 'ascending-username' :
            $cmp = strcmp ( $a [0], $b [0] );
            return $cmp ? $cmp : $a [4] > $b [4];
        
        case 'descending-username' :
            $cmp = strcmp ( $b [0], $a [0] );
            return $cmp ? $cmp : $a [4] > $b [4];
        
        case 'ascending-id' :
            return $a [4] > $b [4];
        
        case 'descending-id' :
            return $a [4] < $b [4];
        
        case 'ascending-result' :
            $cmp = $a [3] == $b [3] ? 0 : ($a [3] > $b [3] ? 1 : - 1);
            return $cmp ? $cmp : $a [4] > $b [4];
        
        case 'descending-result' :
            $cmp = $a [3] == $b [3] ? 0 : ($a [3] < $b [3] ? 1 : - 1);
            return $cmp ? $cmp : $a [4] < $b [4];
    }
} );

1
09/01/2015 01:22:06
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Според мен ще ти е по-лесно да разбереш как работи ето това сортиране (погледни usort функцията):

04. softuniTunes

Веднъж успееш ли да разбереш как се прави след това сортирането по 2 критерия е доста лесно. Това, което правя при това сортиране е:

  1. В $property записвам това, по което трябва да сортирам - name, rating, genre или downloads
  2. След това проверявам с if дали  двете стойности се разлизават. Ако се различават проверявам дали трябва да сортирам по възходящ или низходящ ред с тернарния оператор ?: и извършваш сортирането. 
  3. Ако се окаже, че сравняваните стойности са еднакти, то не влиза в if-а и директно сортира по name. 

 

1
a.angelov avatar a.angelov 1317 Точки

Един вариант от мен с използване на array_multisort: softUniTunes

В повечето случаи е по-удобен за ползване от usort според мен :)

2