Конференция "Прочее" » Студенческая задачка
 
  • Jeer © (06.04.17 22:13) [60]
    Сергей Суровцев ©   (06.04.17 14:23) [59]
    Оригинально, но не спортивно.
  • Сергей Суровцев © (06.04.17 22:47) [61]
    >Jeer ©   (06.04.17 22:13) [60]
    >Оригинально, но не спортивно.

    Почему?
  • Сергей Суровцев © (07.04.17 00:59) [62]
    >Jeer ©   (06.04.17 22:13) [60]

    Как по мне, так вот это не спортивно: )))

    >отсортировать массив на месте или вывести на консоль

    Потому что это две принципиально разные по сложности задачи.
  • Jeer © (07.04.17 01:03) [63]
    Сергей Суровцев ©   (07.04.17 00:59) [62]

    Задача была дана на откуп студентам разного уровня подготовки - кто на что был горазд, тот так и смог реализовать.
    Можно дать задачу, с которой справятся 5% студентов. Что делать с остальными? Отсеивать? А можно дать варианты и там будет уже 50% удачных решений.

    Еще раз, задача была дана для обычных студентов, не софт-маньяков :)
  • Сергей Суровцев © (07.04.17 10:07) [64]
    >Jeer ©   (07.04.17 01:03) [63]
    >Еще раз, задача была дана для обычных студентов, не софт-маньяков :)

    В те времена, когда описания ЯП умещалось в брошюру, а алгоритмы сортировки массивов писались вручную вариант вывода на консоль имел хоть какой-то образовательный смысл. А сейчас его образовательная нагрузка просто отделить четные от нечетных в разные массивы (для этого варианта в условии это разрешается) и вызвать две стандартные сортировки.
    А там где программирование - основной профиль обучения студенты и должны быть главными софт-маньяками. ))
  • Sha © (07.04.17 10:30) [65]
    На мой взгляд, в этой задаче условие "или вывести на консоль" создает лишнюю лазейку.
    Например, можно за каждый проход по массиву находить только одно подходящее число и выводить его.
  • Сергей Суровцев © (07.04.17 10:51) [66]
    >Sha ©   (07.04.17 10:30) [65]
    >На мой взгляд, в этой задаче условие "или вывести на консоль" создает лишнюю лазейку.

    Вот и я о том же. ))
  • Сергей Суровцев © (07.04.17 10:58) [67]
    >Sha ©

    А почему та красота из

    >Sha ©   (04.04.17 23:01) [48]

    для C# не сработала? Сдвиг через минус в Delphi и С# по разному обрабатывается?
  • Sha © (07.04.17 12:18) [68]
    нужно использовать беззнаковый сдвиг вправо >>>
  • Inovet © (07.04.17 12:25) [69]
    > [64] Сергей Суровцев ©   (07.04.17 10:07)
    > А сейчас его образовательная нагрузка просто отделить четные
    > от нечетных в разные массивы

    Я может что-то не понял в твоём высказывании, но как же фундаментальные знания против сугубо цеховых навыков?
  • Kerk © (07.04.17 12:44) [70]

    > Сергей Суровцев ©   (07.04.17 10:07) [64]
    > А там где программирование - основной профиль обучения студенты
    > и должны быть главными софт-маньяками. ))

    Кстати, да. Я сейчас методику Sha еле-еле понимаю, но когда был студентом, понял бы. Это сейчас я далек от этого, но тогда все эти битовые операции и разные формы представления чисел были обыденностью. То же самое с алгоритмами. Через 15 лет половина конечно выветрится из головы, но прямо сейчас-то у них кругозор должен быть ого-го.
  • Сергей Суровцев © (07.04.17 13:15) [71]
    >Inovet ©   (07.04.17 12:25) [69]

    Почему "фундаментальные знания" должны быть против "сугубо цеховых навыков"? )))
  • Inovet © (07.04.17 13:46) [72]
    > [71] Сергей Суровцев ©   (07.04.17 13:15)

    Потому что цеховые навыки могут не коррелировать с фундаментальными знаниями. Можно уметь что=-то сделать, чтобы работало, но не понимать, почемк оно работает. Разве с таким не сталкивался?
  • Сергей Суровцев © (07.04.17 13:47) [73]
    >Sha ©   (07.04.17 12:18) [68]
    >нужно использовать беззнаковый сдвиг вправо >>>

    Нету его...

    Оператор Java, который недоступен в C#, это оператор сдвига (>>>). Этот оператор используется в языке Java из-за малого числа в нем беззнаковых переменных для случаев, когда требуется смещение вправо для вставки 1 в наиболее важные разряды.
    Язык C# поддерживает беззнаковые переменные, поэтому в C# требуется только стандартный оператор >>. Данный оператор выдает различные результаты в зависимости от того, имеет операнд знак или нет. При сдвиге вправо беззнакового числа в самый важный бит вставляется 0, а при сдвиге вправо числа со знаком выполняется копирование предыдущего самого важного бита.
  • Sha © (07.04.17 14:01) [74]
    использовать явное преобразование, что-нибудь вроде (uint)Arr[i],
    и маску m тоже сделать беззнаковой
  • Сергей Суровцев © (07.04.17 14:47) [75]
    >Sha ©   (07.04.17 14:01) [74]

    Ну да, так в итоге и сделал в обход отсутствия >>>.
  • Jeer © (07.04.17 19:32) [76]
    >Sha ©   (07.04.17 10:30) [65]
    >
    >На мой взгляд, в этой задаче условие "или вывести на консоль" создает лишнюю >лазейку.
    >Например, можно за каждый проход по массиву находить только одно >подходящее число и выводить его.

    Еще раз - надо всем возможность реализовать себя.
    Кто понял, что это "лазейка" - тот ей не воспользовался и дал "уголька".
    Кому все достаточно сложно - ей воспользовался, но задачу решил.
    И это тоже хорошо.
  • Kerk © (07.04.17 19:38) [77]
    А дипломы потом все одинаковые получат. Беда все-таки у нас с образованием в IT... Профнепригодные преподаватели вместо того, чтобы научить чему-то студентов дают им задачи попроще.
  • Kerk © (07.04.17 19:45) [78]
    Для сравнения дам задачу из вводного курса в программирование одного из больших западных вузов.

    Сколькими способами можно разменять сумму в 1 доллар, если имеются монеты по 50, 25, 10, 5 и 1 цент? У этой задачи есть простое решение в виде рекурсивной процедуры.

    Эта задача не сложная. Но между ней и "покажи, что умеешь выводить массив на консоль" - пропасть.
  • Игорь Шевченко © (07.04.17 20:05) [79]
    Для сравнения могу предложить решить на Delphi какую-нибудь задачу из "Этюдов для программиста" Уэзерелла.
 
Конференция "Прочее" » Студенческая задачка
Есть новые Нет новых   [134431   +10][b:0.001][p:0.001]