>

Worse than failure: как обменять значения двух переменных?

29 июня 2008 // Хельги

Казалось бы, задача проще некуда, из тех, что сможет сделать даже студент-первокурсник. Но нет.

Мы с паре с моим непосредственным начальником разрабатывали участок кода, связанный с отрисовкой изображения. В какой-то момент возникла необходимость построить по двум точкам прямоугольник со сторонами, параллельными осям. Понятно, что для этого нужно проверить, что пары x и y-координат упорядочены, и обменять их, если это условие не выполнено. Я, не долго думая, написал следующий код:

int t = y1;
y1 = t;
y2 = y1;

Мы запустили тестовое приложение и поняли, что что-то пошло не так. Мой начальник сказал: «А, ясно, да ты тут ошибся в обмене!» — и исправил мои три строчки на вот такой вариант:

int t = y2;
y1 = t;
y2 = y1;

Программа снова не заработала. Тут мы наконец остановились и поняли, что оба не смогли с первого раза правильно написать обмен двух переменных. Для очистки совести мы подозвали коллегу и попросили его быстро, не проверяя себя, написать на бумажке решение злополучной задачи. Вот что у него получилось:

int t = y2;
y1 = y2;
y2 = t;

Поиск ошибок в вышеприведённых примерах, а также правильного решения задачи мы оставим читателю в качестве самостоятельного упражнения.

Редакция от 15 октября 2009
Тэги: c#, wtf, работа
Комментарии (2)

ФоннатегиКузинатра

Обсуждение

1. Константин

int t = y1;
y1 = y2;
y2 = t;

82.200.146.146   оставлено 17 июля 2008 в 8:51  

 

2. Хельги (администратор)

Константин, это, конечно, верное решение задачи, но я не предполагал, что кто-то воспримет всерьёз предложение её решить. ;)

78.106.124.234   оставлено 17 июля 2008 в 13:02  

 

Написать комментарий

На этот адрес будут приходить только уведомления о новых комментариях к этой записи.
Чтобы отправить комментарий, введите сюда слово «человек».
« »  
Высота поля:
Разрывы строк (Enter) будут сохранены. HTML не работает. Гиперссылки: вставьте URL.

Ваш комментарий появится после одобрения модератором.