-
Сергей Суровцев © (06.04.17 14:23) [59]
Оригинально, но не спортивно.
-
>Jeer © (06.04.17 22:13) [60]
>Оригинально, но не спортивно.
Почему?
-
>Jeer © (06.04.17 22:13) [60]
Как по мне, так вот это не спортивно: )))
>отсортировать массив на месте или вывести на консоль
Потому что это две принципиально разные по сложности задачи.
-
Сергей Суровцев © (07.04.17 00:59) [62]
Задача была дана на откуп студентам разного уровня подготовки - кто на что был горазд, тот так и смог реализовать.
Можно дать задачу, с которой справятся 5% студентов. Что делать с остальными? Отсеивать? А можно дать варианты и там будет уже 50% удачных решений.
Еще раз, задача была дана для обычных студентов, не софт-маньяков :)
-
>Jeer © (07.04.17 01:03) [63]
>Еще раз, задача была дана для обычных студентов, не софт-маньяков :)
В те времена, когда описания ЯП умещалось в брошюру, а алгоритмы сортировки массивов писались вручную вариант вывода на консоль имел хоть какой-то образовательный смысл. А сейчас его образовательная нагрузка просто отделить четные от нечетных в разные массивы (для этого варианта в условии это разрешается) и вызвать две стандартные сортировки.
А там где программирование - основной профиль обучения студенты и должны быть главными софт-маньяками. ))
-
На мой взгляд, в этой задаче условие "или вывести на консоль" создает лишнюю лазейку.
Например, можно за каждый проход по массиву находить только одно подходящее число и выводить его.
-
>Sha © (07.04.17 10:30) [65]
>На мой взгляд, в этой задаче условие "или вывести на консоль" создает лишнюю лазейку.
Вот и я о том же. ))
-
>Sha ©
А почему та красота из
>Sha © (04.04.17 23:01) [48]
для C# не сработала? Сдвиг через минус в Delphi и С# по разному обрабатывается?
-
нужно использовать беззнаковый сдвиг вправо >>>
-
> [64] Сергей Суровцев © (07.04.17 10:07)
> А сейчас его образовательная нагрузка просто отделить четные
> от нечетных в разные массивы
Я может что-то не понял в твоём высказывании, но как же фундаментальные знания против сугубо цеховых навыков?
-
> Сергей Суровцев © (07.04.17 10:07) [64]
> А там где программирование - основной профиль обучения студенты
> и должны быть главными софт-маньяками. ))
Кстати, да. Я сейчас методику Sha еле-еле понимаю, но когда был студентом, понял бы. Это сейчас я далек от этого, но тогда все эти битовые операции и разные формы представления чисел были обыденностью. То же самое с алгоритмами. Через 15 лет половина конечно выветрится из головы, но прямо сейчас-то у них кругозор должен быть ого-го.
-
>Inovet © (07.04.17 12:25) [69]
Почему "фундаментальные знания" должны быть против "сугубо цеховых навыков"? )))
-
> [71] Сергей Суровцев © (07.04.17 13:15)
Потому что цеховые навыки могут не коррелировать с фундаментальными знаниями. Можно уметь что=-то сделать, чтобы работало, но не понимать, почемк оно работает. Разве с таким не сталкивался?
-
>Sha © (07.04.17 12:18) [68]
>нужно использовать беззнаковый сдвиг вправо >>>
Нету его...
Оператор Java, который недоступен в C#, это оператор сдвига (>>>). Этот оператор используется в языке Java из-за малого числа в нем беззнаковых переменных для случаев, когда требуется смещение вправо для вставки 1 в наиболее важные разряды.
Язык C# поддерживает беззнаковые переменные, поэтому в C# требуется только стандартный оператор >>. Данный оператор выдает различные результаты в зависимости от того, имеет операнд знак или нет. При сдвиге вправо беззнакового числа в самый важный бит вставляется 0, а при сдвиге вправо числа со знаком выполняется копирование предыдущего самого важного бита.
-
использовать явное преобразование, что-нибудь вроде (uint)Arr[i],
и маску m тоже сделать беззнаковой
-
>Sha © (07.04.17 14:01) [74]
Ну да, так в итоге и сделал в обход отсутствия >>>.
-
>Sha © (07.04.17 10:30) [65]
>
>На мой взгляд, в этой задаче условие "или вывести на консоль" создает лишнюю >лазейку.
>Например, можно за каждый проход по массиву находить только одно >подходящее число и выводить его.
Еще раз - надо всем возможность реализовать себя.
Кто понял, что это "лазейка" - тот ей не воспользовался и дал "уголька".
Кому все достаточно сложно - ей воспользовался, но задачу решил.
И это тоже хорошо.
-
А дипломы потом все одинаковые получат. Беда все-таки у нас с образованием в IT... Профнепригодные преподаватели вместо того, чтобы научить чему-то студентов дают им задачи попроще.
-
Для сравнения дам задачу из вводного курса в программирование одного из больших западных вузов.
Сколькими способами можно разменять сумму в 1 доллар, если имеются монеты по 50, 25, 10, 5 и 1 цент? У этой задачи есть простое решение в виде рекурсивной процедуры.
Эта задача не сложная. Но между ней и "покажи, что умеешь выводить массив на консоль" - пропасть.
-
Для сравнения могу предложить решить на Delphi какую-нибудь задачу из "Этюдов для программиста" Уэзерелла.