Re[3]: издевательства над switch-ем на собеседовани
От: pavel_turbin  
Дата: 04.12.05 20:33
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, pavel_turbin, Вы писали:


_>>спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.


А>Стандартное, что приходит в голову (пузырек и qsort)

А>дополнительной памяти не требует.
А>Или под "выделением памяти" ты имеешь ввиду что-то особенное?

но во время пузырька вам нужно будет обменять 2 ячейки памяти? это нетривиально без 3-й ячейки. Вот и требуется найти рещение как обойтись без этой дополнительной ячейки. Кроме того видно будет как кандидат ориентируется в массивах, списках и др. Какие методы сортировок знает.
Re[4]: издевательства над switch-ем на собеседовани
От: RomanOdaisky Украина  
Дата: 04.12.05 20:33
Оценка: 1 (1)
Здравствуйте, korzhik, Вы писали:

K>угадал?


Канэшна. Вопрос №следующий: почему нельзя так писать?

С уважением, Роман.

P. S. Спойлеры по-хорошему предваряют парой десятков пустых строк
До последнего не верил в пирамиду Лебедева.
Re[2]: издевательства над switch-ем на собеседовани
От: Сергей Мухин Россия  
Дата: 04.12.05 20:34
Оценка:
Здравствуйте, pavel_turbin, Вы писали:

K>>то где ошибка (помимо ошибки в ДНК автора) ? Если скомпилируется,

K>>то почему и что будет делать ? Компилятор юзать нельзя.

_>спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.


что значит без выделения памяти? рекурсия подойдет?
---
С уважением,
Сергей Мухин
Re[4]: издевательства над switch-ем на собеседовани
От: Сергей Мухин Россия  
Дата: 04.12.05 20:36
Оценка: 2 (1) +5
Здравствуйте, pavel_turbin, Вы писали:

_>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, pavel_turbin, Вы писали:


_>>>спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.


А>>Стандартное, что приходит в голову (пузырек и qsort)

А>>дополнительной памяти не требует.
А>>Или под "выделением памяти" ты имеешь ввиду что-то особенное?

_>но во время пузырька вам нужно будет обменять 2 ячейки памяти? это нетривиально без 3-й ячейки. Вот и требуется найти рещение как обойтись без этой дополнительной ячейки. Кроме того видно будет как кандидат ориентируется в массивах, списках и др. Какие методы сортировок знает.


это боле чем тривиально, а то что кто-то не знает этот конкретный фокус ничего не говорит о его квалификации
---
С уважением,
Сергей Мухин
Re[5]: издевательства над switch-ем на собеседовани
От: Анатолий Широков СССР  
Дата: 04.12.05 20:37
Оценка: +2 :))
Здравствуйте, RomanOdaisky, Вы писали:

RO>Здравствуйте, korzhik, Вы писали:


K>>угадал?


RO>Канэшна. Вопрос №следующий: почему нельзя так писать?


"Патамушта, там снег башка попадет, савсэм мертвый будешь" (c)
Re[6]: издевательства над switch-ем на собеседовани
От: RomanOdaisky Украина  
Дата: 04.12.05 20:40
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

K>>>угадал?


RO>>Канэшна. Вопрос №следующий: почему нельзя так писать?


АШ>"Патамушта, там снег башка попадет, савсэм мертвый будешь" (c)


А что, вопрос актуален. Вот рядом пишут:

> но во время пузырька вам нужно будет обменять 2 ячейки памяти? это нетривиально без 3-й ячейки. Вот и требуется найти рещение как обойтись без этой дополнительной ячейки.


Но почему лучше таки использовать третью ячейку и лишний вызов конструктора копирования, а не то извращение?

С уважением, Роман.
До последнего не верил в пирамиду Лебедева.
Re[2]: издевательства над switch-ем на собеседовани
От: xbit Россия  
Дата: 04.12.05 20:42
Оценка:
Здравствуйте, pavel_turbin, Вы писали:

_>спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.


А еще лучше попросите отсортировать массив из 0 и 1
Нас не догонят!
Re[5]: издевательства над switch-ем на собеседовани
От: korzhik Россия  
Дата: 04.12.05 20:43
Оценка:
Здравствуйте, RomanOdaisky, Вы писали:

RO>Здравствуйте, korzhik, Вы писали:


K>>угадал?


RO>Канэшна. Вопрос №следующий: почему нельзя так писать?


Дык,UB. Множественная модификация переменной между точками следования.
Угадал?


RO>P. S. Спойлеры по-хорошему предваряют парой десятков пустых строк

вот этой фразы не понял.
Re[4]: издевательства над switch-ем на собеседовани
От: Аноним  
Дата: 04.12.05 20:43
Оценка: +3
Здравствуйте, korzhik, Вы писали:

K>2.5 секунды думал


Ты не думал, ты просто знал
Кстати, именно по этой причине нет смысла в таких вопросах.
Они проверяют эрудицию. Не больше.
Не верю, что обычный человек (не дурак, но и не гений) с нуля
сможет за 30 сек. в условиях интервью сообразить, что тут меняются 2 значения
или сможет вникнуть в Duff's device...
Re[7]: издевательства над switch-ем на собеседовани
От: Анатолий Широков СССР  
Дата: 04.12.05 20:44
Оценка:
Здравствуйте, RomanOdaisky, Вы писали:

RO>Здравствуйте, Анатолий Широков, Вы писали:


K>>>>угадал?


RO>>>Канэшна. Вопрос №следующий: почему нельзя так писать?


АШ>>"Патамушта, там снег башка попадет, савсэм мертвый будешь" (c)


RO>А что, вопрос актуален. Вот рядом пишут:


Надо убрать UB и тогда все будет нормально:

x ^= y; y ^= x; x ^= y;
Re[4]: издевательства над switch-ем на собеседовани
От: Аноним  
Дата: 04.12.05 20:45
Оценка:
Здравствуйте, pavel_turbin, Вы писали:

_>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, pavel_turbin, Вы писали:


_>>>спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.


А>>Стандартное, что приходит в голову (пузырек и qsort)

А>>дополнительной памяти не требует.
А>>Или под "выделением памяти" ты имеешь ввиду что-то особенное?

_>но во время пузырька вам нужно будет обменять 2 ячейки памяти? это нетривиально без 3-й ячейки. Вот и требуется найти рещение как обойтись без этой дополнительной ячейки.


Итого задача свелась к обмену 2 значений без промежуточной переменной.
Ну и о чем это тебе скажет, если человек не знает трюка типа:
http://www.rsdn.ru/Forum/Message.aspx?mid=1520854&only=1
Автор: RomanOdaisky
Дата: 04.12.05

который все равно лучше не применять?
Re[8]: издевательства над switch-ем на собеседовани
От: korzhik Россия  
Дата: 04.12.05 20:46
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>Здравствуйте, RomanOdaisky, Вы писали:


RO>>Здравствуйте, Анатолий Широков, Вы писали:


K>>>>>угадал?


RO>>>>Канэшна. Вопрос №следующий: почему нельзя так писать?


АШ>>>"Патамушта, там снег башка попадет, савсэм мертвый будешь" (c)


RO>>А что, вопрос актуален. Вот рядом пишут:


АШ>Надо убрать UB и тогда все будет нормально:


АШ>
АШ>x ^= y; y ^= x; x ^= y;
АШ>


Насколько я понимаю в общем случае работает только для unsigned ?
Re[6]: издевательства над switch-ем на собеседовани
От: Kemm  
Дата: 04.12.05 20:49
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

A>>>Да чтоб без warning`ов,а то всегда настроение портят...

K>>Кстати, я что-то торможу: почему указаный пример g++ компилирует без warning'ов, а gcc — честно его выдает (после замены кода на C, понятно)?
АШ>См. 3.6.1 п. 5 стандарта С++.

А можно процитировать, если не сложно? А то я не настоящий сварщик... В смысле, стандарта под рукой нет, да и вообще на plain C пишу в основном. 8))
Re[6]: издевательства над switch-ем на собеседовани
От: RomanOdaisky Украина  
Дата: 04.12.05 20:50
Оценка: -2
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте, RomanOdaisky, Вы писали:


RO>>Здравствуйте, korzhik, Вы писали:


K>>>угадал?


RO>>Канэшна. Вопрос №следующий: почему нельзя так писать?


K>Дык,UB. Множественная модификация переменной между точками следования.

K>Угадал?

На этот раз нет. Assignment operators имеют левую ассоциативность (или, наоборот, правую?). Т. е. они сперва вычисляют то, что справа, затем то, что слева, затем вызывается operator =(). Да и, ЕМНИП, операторы присваивания как раз создают ТС.

Здесь пустые строки, чтобы не было искушения заглянуть в ответ.

пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки

Не то, чтобы ответ был чересчур сложен... Просто будет работать, скорее всего, медленнее. На x86 нет операции 'xor mem, mem'. Несравненно проще сделать три движения в регистрах.

С уважением, Роман.
До последнего не верил в пирамиду Лебедева.
Re[9]: издевательства над switch-ем на собеседовани
От: Аноним  
Дата: 04.12.05 20:50
Оценка:
Здравствуйте, korzhik, Вы писали:


АШ>>
АШ>>x ^= y; y ^= x; x ^= y;
АШ>>


K>Насколько я понимаю в общем случае работает только для unsigned ?


А для объектов точно проще завести промежуточную переменную,
чем думать над реализацией оператора ^=

Да и вообще, std::swap рулит
Re[7]: издевательства над switch-ем на собеседовани
От: Анатолий Широков СССР  
Дата: 04.12.05 20:51
Оценка: 5 (1)
K>А можно процитировать, если не сложно? А то я не настоящий сварщик... В смысле, стандарта под рукой нет, да и вообще на plain C пишу в основном. 8))


5 A return statement in main has the effect of leaving the main function (destroying any objects with automatic storage duration) and calling exit with the return value as the argument. If control reaches the end of main without encountering a return statement, the effect is that of executing return 0;

Re[8]: издевательства над switch-ем на собеседовани
От: Kemm  
Дата: 04.12.05 20:54
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

K>>А можно процитировать, если не сложно? А то я не настоящий сварщик... В смысле, стандарта под рукой нет, да и вообще на plain C пишу в основном. 8))

АШ>

АШ>5 A return statement in main has the effect of leaving the main function (destroying any objects with automatic storage duration) and calling exit with the return value as the argument. If control reaches the end of main without encountering a return statement, the effect is that of executing return 0;


Спасибо. А зачем это было сделано, интересно? Какое-то нарушение общности...
Re[7]: издевательства над switch-ем на собеседовани
От: korzhik Россия  
Дата: 04.12.05 20:54
Оценка:
Здравствуйте, RomanOdaisky, Вы писали:

RO>Здравствуйте, korzhik, Вы писали:


K>>Здравствуйте, RomanOdaisky, Вы писали:


RO>>>Здравствуйте, korzhik, Вы писали:


K>>>>угадал?


RO>>>Канэшна. Вопрос №следующий: почему нельзя так писать?


K>>Дык,UB. Множественная модификация переменной между точками следования.

K>>Угадал?

RO>На этот раз нет. Assignment operators имеют левую ассоциативность (или, наоборот, правую?). Т. е. они сперва вычисляют то, что справа, затем то, что слева, затем вызывается operator =(). Да и, ЕМНИП, операторы присваивания как раз создают ТС.


Я думаю что я прав. Но так как веки закрываются, доказывать это буду завтра.
Re[8]: издевательства над switch-ем на собеседовани
От: RomanOdaisky Украина  
Дата: 04.12.05 20:55
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>Надо убрать UB и тогда все будет нормально:


АШ>
x ^= y; y ^= x; x ^= y;


RO>
x ^= y ^= x ^= y;


У кого-то из нас глюки. ГДЕ UB? Приведите, пожалуйста, 2 или больше противоречащих варианта вычисления (по шагам).

С уважением, Роман.
До последнего не верил в пирамиду Лебедева.
Re[4]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 04.12.05 20:58
Оценка: +1
Сергей Мухин wrote:

>> > K>Hi,

>> > на RSDN принято писать по-русски. Это также отражено в правилах.
> K>Нашли к чему придраться.
> нарушать правила нехорошо. опять же это ваш стиль

Язык приветствия как в русскоязычных, так и в англоязычных
конференциях бывает совершенно произвольным, не ограничиваясь
тем же самым английским (для писем на английском). Вы первый
человек, встреченный мной более чем за 10 лет (среди сотен
других), связывающий язык приветствия с языком, на котором
пишется письмо. Исключение — деловая корреспонденция.

Соответственно, если бы вы спросили меня, на каком языке
написано письмо, я бы ответил, что полностью на русском.

> K>Это характерная точка зрения студента. Логичная, конечно, но после

> K>внимательного изучения языка все эти вещи вообще не представляют
> K>никакой сложности.
>
> ну я уж ни как на студента не похож. но вот такие вещи я никогда при
> преме не задавал.
> чел может знать синтаксис с++ и при этом не способен написать программу!
> или отладить ее!

Может. Так я и выясню все — и что может, что не может. Вопросов
больше чем один. Свитч в список не внесен, но если будет внесен,
то с комментарием, что ответ — плюс, неответ — не минус. Были
неуверенные в ответе кандидаты, так прямо говорил — пофиг мне
на уверенность-неуверенность, что знаете — говорите, что не
знаете — высказывайте аргументированные предположения или хотя
бы прокомментируйте код. Только не выдавайте догадки за знания.
Не можете собраться — возьмите тайм-аут и соберитесь. Других
за это время поспрашиваю.

> K>Приблизительный уровень знаний, нужный для непробиваемости

> K>подобными вещами — c++ faq lite + cpp faq book ver2 + cuj
> K>за несколько лет (начиная с ~1998, чтобы не расходиться
> K>со стандартом)
>
> вам нужен со знанием стандарта? вы пишете компилятор С++? или программист?

Нам не нужен зазубривший версию c++, расходящуюся со стандартом.

Забыл упомянуть главное — это собеседование не о приеме на работу.
Это сортирующее собеседовании при приеме на обучение — либо на
изучение C (начальное плюс практика), либо на C++ (если нет
проблем с большинством основных понятий C, черт с ними с
библиотеками), либо на стажировку. Собеседование можно проходить
более чем по одному разу, соответственно однократный провал
не страшен. Кто приходит на второе собеседование, все заданные
ранее вопросы уже успевает разобрать дома. Свитч выучить. Вообще,
надо уже для второй раз приходящих новый тест придумывать.

Mikhail
Posted via RSDN NNTP Server 2.0
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.