Показать сообщение отдельно

  #12  
Старый 19.04.2010, 01:52
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
С нами: 10386906

Репутация: 599


По умолчанию

int x = 13, y = 14;
int z = (x + y ) >> 1;

хз можно ли сдвиги юзать.


Код:
#include <iostream>
#include <utility>
int mean (int x, int y);

int main(){

	for(int i = 0; i < 1000; i++){
		int x = rand(), y = rand();
		int result = mean(x, y);
		int expected = (x + y) / 2;
		std::cout << "mean(" << x << ", " << y << ") = " << result << " Expected = " << expected << std::endl;
		if( result != expected){
			std::cout << "error: x = " << x << " y = " << y << " result = " << mean(x,y) << std::endl;
		}
	}
	system("pause");
}

int mean (int x, int y){

	if(x > y){
		std::swap(x, y);
	}

	int i = 0;
	for(; x + i <= y - i; i++){
		if(x + i == y - i){
			return x + i;
		}
	}

	// для нечетных сумм
	return x + i - 1;
}
или так. забавная задачка =)

Последний раз редактировалось Ra$cal; 19.04.2010 в 02:20..
 
Ответить с цитированием