издевательства над switch-ем на собеседовани
От: kittown  
Дата: 04.12.05 19:10
Оценка: -13 :))
Hi,

Вчера сам собой придумался пример кода для запугивания
претендентов на собеседовании:

#include <iostream>
int main()
{
switch(0) default: std::cout << "Hello World!" << std::endl;
};

Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,
то где ошибка (помимо ошибки в ДНК автора) ? Если скомпилируется,
то почему и что будет делать ? Компилятор юзать нельзя.

Уже жду следующей команды студентов, желающих пособеседоваться.

Mikhail
Posted via RSDN NNTP Server 2.0
Re: издевательства над switch-ем на собеседовани
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 04.12.05 19:25
Оценка: 1 (1) +5 :)))
Здравствуйте, kittown, Вы писали:

K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

K>Вопрос претендентам — скомпилируется ли ?


Претенденты, надо полагать, на разработку C++ компилятора.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: издевательства над switch-ем на собеседовани
От: Андрей Коростелев Голландия http://www.korostelev.net/
Дата: 04.12.05 19:26
Оценка: 1 (1) +4
Здравствуйте, kittown, Вы писали:

K>Hi,


K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,

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

K>Уже жду следующей команды студентов, желающих пособеседоваться.


K>Mikhail


Хм, а какой конструктивный вывод можно сделать о разнице между студентами,
справившимися с этим заданием и не справившимися?
-- Андрей
Re: издевательства над switch-ем на собеседовани
От: Сергей Мухин Россия  
Дата: 04.12.05 19:27
Оценка: 6 (1) +2 -2
Здравствуйте, kittown, Вы писали:

K>Hi,


на RSDN принято писать по-русски. Это также отражено в правилах.

K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,

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

K>Уже жду следующей команды студентов, желающих пособеседоваться.


K>Mikhail


вот этого Вчера Сама я бы поубивал.

Этот претендент работать тоже будет без компилятора?

Уж если рассматривать это убожество, то только в таком аспекте. как быстро (при наличии среды привычной претеденту) он откомпилирует без ошибок (без использования комментариев ).
---
С уважением,
Сергей Мухин
Re: издевательства над switch-ем на собеседовани
От: Kemm  
Дата: 04.12.05 19:28
Оценка: +2
Здравствуйте, kittown, Вы писали:

K>Вопрос претендентам — скомпилируется ли ?


"Обожаю" такие вопросы. Скомпилируется ли чем? По хорошему вопрос тогда уж должен звучать примерно так: "валидная ли это программа с точки зрения последнего стандарта С++?"
Re: издевательства над switch-ем на собеседовани
От: alexsoff Россия  
Дата: 04.12.05 19:35
Оценка:
Здравствуйте, kittown, Вы писали:

K>Hi,


K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K> switch(0) default: std::cout << "Hello World!" << std::endl;


if (0); else std::cout << "Hello World!" << std::endl;
Вы это имели ввиду?
Да там еще return 0, не хватает.
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 04.12.05 19:42
Оценка:
eao197 wrote:
>
> K>Вчера сам собой придумался пример кода для запугивания
> K>претендентов на собеседовании:
>
> K>#include <iostream>
> K>int main()
> K>{
> K> switch(0) default: std::cout << "Hello World!" << std::endl;
> K>};
>
> K>Вопрос претендентам — скомпилируется ли ?
>
> Претенденты, надо полагать, на разработку C++ компилятора.

Претенденты на офигительное признание и бесплатное обучение.
Для адекватных кадров, плохо знающих язык — просто приведение
примера с пояснением.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 04.12.05 19:48
Оценка:
alexsoff wrote:
>
> K>Вчера сам собой придумался пример кода для запугивания
> K>претендентов на собеседовании:
>
> K> switch(0) default: std::cout << "Hello World!" << std::endl;
>
> if (0); else std::cout << "Hello World!" << std::endl;
> Вы это имели ввиду?

Тоже красиво.

> Да там еще return 0, не хватает.


В main ? Зачем ? Хотя, для старых компиляторов — можно и поставить.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 04.12.05 19:57
Оценка: -6
Сергей Мухин wrote:
> K>Hi,
>
> на RSDN принято писать по-русски. Это также отражено в правилах.

Нашли к чему придраться.

> вот этого Вчера Сама я бы поубивал.

>
> Этот претендент работать тоже будет без компилятора?

Нет, этот претендент должен показать ход рассуждений.
Либо сдаться.

> Уж если рассматривать это убожество, то только в таком аспекте. как

> быстро (при наличии среды привычной претеденту) он откомпилирует без
> ошибок (без использования комментариев ).

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

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

Mikhail
Posted via RSDN NNTP Server 2.0
Re[3]: издевательства над switch-ем на собеседовани
От: alexsoff Россия  
Дата: 04.12.05 20:00
Оценка:
Здравствуйте, kittown, Вы писали:

>> Да там еще return 0, не хватает.


K>В main ? Зачем ? Хотя, для старых компиляторов — можно и поставить.

Да чтоб без warning`ов,а то всегда настроение портят...
Re[4]: издевательства над switch-ем на собеседовани
От: Kemm  
Дата: 04.12.05 20:03
Оценка:
Здравствуйте, alexsoff, Вы писали:

>>> Да там еще return 0, не хватает.

K>>В main ? Зачем ? Хотя, для старых компиляторов — можно и поставить.
A>Да чтоб без warning`ов,а то всегда настроение портят...

Кстати, я что-то торможу: почему указаный пример g++ компилирует без warning'ов, а gcc — честно его выдает (после замены кода на C, понятно)?
Re: издевательства над switch-ем на собеседовани
От: pavel_turbin  
Дата: 04.12.05 20:06
Оценка:
Здравствуйте, kittown, Вы писали:

K>Hi,


K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,

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

спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.
Re: издевательства над switch-ем на собеседовани
От: korzhik Россия  
Дата: 04.12.05 20:23
Оценка:
Здравствуйте, kittown, Вы писали:

K>Hi,


K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,

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

Ну вопрос то не особо сложный.
Если говорить про switch, то такая конструкция допустима, выведет Hello World! Не вижу в этом сложностей на самом деле и издевательств.
Компилятором не пользовался при ответе
Вот если Duff's device подсунуть на собеседовании, то это издевательство.
Но вот целиком программа не корректна, так как нельзя ставить точку с запятой, после тела функции. Но это скорее всего опечятка.
Re: издевательства над switch-ем на собеседовани
От: RomanOdaisky Украина  
Дата: 04.12.05 20:24
Оценка:
Здравствуйте, kittown, Вы писали:

K>Hi,


K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,

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

K>Уже жду следующей команды студентов, желающих пособеседоваться.


void copy(T* po, T const* pi, std::size_t len)
{
    std::size_t len8 = len / 8;

    switch(len % 8)
        do
        {
            *po++ = *pi++;
case 7:     *po++ = *pi++;
case 6:     *po++ = *pi++;
case 5:     *po++ = *pi++;
case 4:     *po++ = *pi++;
case 3:     *po++ = *pi++;
case 2:     *po++ = *pi++;
case 1:     *po++ = *pi++;
case 0:
        } while(len8--);
}


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

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


Стандартное, что приходит в голову (пузырек и qsort)
дополнительной памяти не требует.
Или под "выделением памяти" ты имеешь ввиду что-то особенное?
Re[2]: издевательства над switch-ем на собеседовани
От: RomanOdaisky Украина  
Дата: 04.12.05 20:29
Оценка: :)
> Вот если Duff's device подсунуть на собеседовании, то это издевательство.

Одновременно написали А вот еще:

int x, y;

. . .

x ^= y ^= x ^= y;


Что делает? 30 сек на размышления!

С уважением, Роман.
До последнего не верил в пирамиду Лебедева.
Re[5]: издевательства над switch-ем на собеседовани
От: Анатолий Широков СССР  
Дата: 04.12.05 20:30
Оценка: 1 (1) +1
Здравствуйте, Kemm, Вы писали:

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


>>>> Да там еще return 0, не хватает.

K>>>В main ? Зачем ? Хотя, для старых компиляторов — можно и поставить.
A>>Да чтоб без warning`ов,а то всегда настроение портят...

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


См. 3.6.1 п. 5 стандарта С++.
Re[3]: издевательства над switch-ем на собеседовани
От: korzhik Россия  
Дата: 04.12.05 20:31
Оценка:
Здравствуйте, RomanOdaisky, Вы писали:

>> Вот если Duff's device подсунуть на собеседовании, то это издевательство.


RO>Одновременно написали А вот еще:


RO>
RO>int x, y;

RO>. . .

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


RO>Что делает?

меняет значения x и y

>30 сек на размышления!

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

угадал?
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 04.12.05 20:31
Оценка:
RomanOdaisky wrote:
>
> void copy(T* po, T const* pi, std::size_t len)
> {
> std::size_t len8 = len / 8;
>
> switch(len % 8)
> do
> {

default: std::cout << "whaaat??" << std::endl;

> *po++ = *pi++;

> case 7: *po++ = *pi++;
> case 6: *po++ = *pi++;
> case 5: *po++ = *pi++;
> case 4: *po++ = *pi++;
> case 3: *po++ = *pi++;
> case 2: *po++ = *pi++;
> case 1: *po++ = *pi++;
> case 0:
> } while(len8--);
> }

Mikhail
Posted via RSDN NNTP Server 2.0
Re[3]: издевательства над switch-ем на собеседовани
От: Сергей Мухин Россия  
Дата: 04.12.05 20:32
Оценка: +2 -2
Здравствуйте, kittown, Вы писали:

K>Сергей Мухин wrote:

>> K>Hi,
>>
>> на RSDN принято писать по-русски. Это также отражено в правилах.

K>Нашли к чему придраться.


нарушать правила нехорошо. опять же это ваш стиль

>> вот этого Вчера Сама я бы поубивал.

>>
>> Этот претендент работать тоже будет без компилятора?

K>Нет, этот претендент должен показать ход рассуждений.

K>Либо сдаться.

>> Уж если рассматривать это убожество, то только в таком аспекте. как

>> быстро (при наличии среды привычной претеденту) он откомпилирует без
>> ошибок (без использования комментариев ).

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

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

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

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

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

вам нужен со знанием стандарта? вы пишете компилятор С++? или программист?
---
С уважением,
Сергей Мухин
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.