[Exam Problems] PHP Basics - Exam 29.08 - Morning - {04} softuniTunes
Здравейте колеги,
Някой може ли да ми каже защо с този код ми дава само 70/100 в judge-a ? Тествах си кода в различни ситуации, но не мога да разбера къде гърми.
Здравейте колеги,
Някой може ли да ми каже защо с този код ми дава само 70/100 в judge-a ? Тествах си кода в различни ситуации, но не мога да разбера къде гърми.
Не сплитваш правилно с " | ".
Също така не обхождаш пропъртитата правилно - т.е. foreach-ваш абсолютно всичко и търсиш съвпадение с изпълнител навсякъде, а в единия тест името на изпълнителя е сложено като жанр. :)
Според мен в условието е редно да се уточни, че рейтингът следва да се пусне на floatval. Доста се помъчих докато не видях в единия от тестовете, че системата очаква рейтинг 0.0 да бъде изписан като 0, а аз си го връщах като 0.0 (което за мен е логично - променям само ако трябва да ескейпвам нещо).
Нямах други грешки по алгоритъма, щеше да е много болезнено да загубя 40 точки защото изискване за форматирането на изхода не е споменато изрично нкъде.
Здравейте, дали ще може някой да удари едно рамо..., че зациклих. Не мога да разбера къде бъркам при сортирането....
Благодаря!
Като гледам сортирането го правиш през няколко цикъла и там нещата сякаш малко се претруват и усложняват.
Защо не ползваш просто 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];
}
} );
Според мен ще ти е по-лесно да разбереш как работи ето това сортиране (погледни usort функцията):
Веднъж успееш ли да разбереш как се прави след това сортирането по 2 критерия е доста лесно. Това, което правя при това сортиране е:
Един вариант от мен с използване на array_multisort: softUniTunes
В повечето случаи е по-удобен за ползване от usort според мен :)
Благодаря ти за отговора. Сега вече работи :)