PDA

Просмотр полной версии : помогите составить алгоритм плиз


kolobok2233
18.04.2010, 18:42
Нужно найти среднее арифметическое 2 чисел X и Y при условии что нельзя использовать * / . А можно только +-><. Заранее спасибо!

Sunstrider
18.04.2010, 18:43
тут с матемом трудно,я просил по дискриминантам не смогли иди на виноград там мну сделали

yaneblinchik
18.04.2010, 18:46
X + Y - (X+Y) Если че то > или < . Блин в голову не лезет,уставший

kolobok2233
18.04.2010, 19:17
да причем тут математика. c=(x+y)/2
тока нельзя деление использовать и умножение
сосотавить нада алгоритм

M_script_
18.04.2010, 19:22
Как-то так:

int xxx(int X, int Y)
{
for(int i = 1; i < X + Y; ++i)
if(i + i > X + Y)
return i - 1;
}

BrainDeaD
18.04.2010, 20:05
Как-то так:

int xxx(int X, int Y)
{
for(int i = 1; i < X + Y; ++i)
if(i + i > X + Y)
return i - 1;
}
чего-то я не понимаю. у меня так не получается.

вот моя версия:

do
{
Y--;
X++;
}
while (X<Y);
return X;

при условии X<Y (eсли на оборот, то просто меняем местами переменные)
и оба числа чётные или нечётные(если одно чётное, другое нет, то вычитаем из результата 0,5.)

Sunstrider
18.04.2010, 20:08
эмм вроде ТС просил алгоритм(кубики)

BrainDeaD
18.04.2010, 20:12
эмм вроде ТС просил алгоритм(кубики)
а почему не кружочки?
харе флудить иди читай http://ru.wikipedia.org/wiki/Алгоритм

Sunstrider
18.04.2010, 20:15
а почему не кружочки?
харе флудить иди читай http://ru.wikipedia.org/wiki/Алгоритм
не сорь,прост на икт у нас там тип начала и тд

kolobok2233
18.04.2010, 22:01
это блок-схема называется

Sunstrider
18.04.2010, 22:02
это блок-схема называется
Упс точно,извиняюсь

Ra$cal
19.04.2010, 01:52
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;
}

или так. забавная задачка =)