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
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 1316 Точки

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

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

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

Благодаря на всички, много ми помогнахте!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.