- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
#include <stdio.h>
unsigned int mid (unsigned int a, unsigned int b)
{
if (a > b) {unsigned int c = a; a = b; b = c;}
for(; a < b; a--, b++) {;};
return a;
}
int main(void) {
printf("%u %u %u %u", mid(2,2), mid(3,2), mid(2,3), mid(3,3));
return 0;
}
j123123 04.05.2014 17:42 # −2
wvxvw 04.05.2014 22:54 # −2
brutushafens 04.05.2014 18:01 # −4
wvxvw 04.05.2014 18:09 # −2
wvxvw 04.05.2014 18:15 # 0
guest 04.05.2014 20:15 # −2
brutushafens 04.05.2014 20:40 # +1
3Doomer 05.05.2014 14:07 # 0
bormand 05.05.2014 15:33 # +1
3.14159265 05.05.2014 15:53 # −2
Но почему на нём написано wvxvw?
Он ведь не пишет на чем угодно, но не на крестах. Да и вообще где здесь С++?
bormand 05.05.2014 16:07 # +3
Как где? Вон же + из жопы изображенного на портрете торчит, остальные символы, видимо, внутри.
> Но почему на нём написано wvxvw?
Это волосы. Они даже другим цветом выделены.
1024-- 04.05.2014 21:04 # 0
j123123 04.05.2014 21:42 # −3
3.14159265 05.05.2014 15:23 # +2
Но не парься, нормальный компилятор сможет выпилить твой "way of thinking" и оставить пару команд.
j123123 05.05.2014 21:30 # +1
j123123 05.05.2014 21:32 # 0
hometwo 04.05.2014 22:55 # −59
bormand 05.05.2014 15:30 # −1
j123123 05.05.2014 21:34 # 0
bormand 05.05.2014 21:52 # −2
Нет. Оно именно не ту середину ищет. Если представить unsigned числа как окружность (а из-за переполнения это именно окружность, а не луч), а входные данные - как две точки на ней, то мы получим как раз 2 "середины". Этот код выбирает ту, которая на дуге (b, a) (что кажется странным), а исправленный - на дуге (a, b) (что вполне интуитивно).
А то, что в целых числах не найти середину между 2 и 3 вполне решается округлением по одному из правил. В случае с for(; a < b; a++, b--); return a; - в большую сторону.
j123123 05.05.2014 22:10 # +1
bormand 05.05.2014 22:23 # −1
j123123 05.05.2014 22:27 # 0
j123123 05.05.2014 22:37 # 0
Bobik 05.05.2014 22:58 # +1
j123123 06.05.2014 00:41 # −1
j123123 07.05.2014 05:24 # −1
https://www.youtube.com/watch?v=mqAf5lOJZew