ну, я пытался сделать то же самое, что и у вас во втором листинге, но только чтобы результат вычислялся как математическая функция - напрямую без ветвлений :)
Re: Убить автора!11evilduckkOctober 2 2011, 07:49:37 UTC
Мне одни намекали, что если С++, то нужно нэймспэйс использовать. а другие утверждали, что лишнее. Без нэймспэйса работает, если чо. И работаем в консоли.
Comments 76
#include
#include
int main()
{
float x,y, x2,y2;
int s = 0;
cout<<"Insert x and y: ";
cin>>x>>y;
x2 = x + y; // тут должны были быть 1/sqrt(2)
y2 = -x + y; // но я их не буду писать :)
s = (((x2 * y2) >= 0) & 1) +
(((1 + y) >= 0) & 1) +
(((1 - y) >= 0) & 1);
s = ((s - 3) >= 0) & 1;
// в принципе, каждое из ((N >= 0) & 1)
// можно очевидно заменить к примеру на (((int8)-N) >> 7)
// и таким образом переводить ветвления в линейные вычисления
// :)
char* yes = "Yes!";
char* no = "No";
char* res = (char*)(s*(long)yes + (1-s)*(long)no);
cout<
Reply
Reply
Reply
И еще есть такая вещь как тринарный оператор, чтобы char* не писать.
Reply
Reply
#include
using namespace std;
int main() {
double x, y;
cin >> x >> y;
cout << (fabs(x) <= fabs(y) && fabs(y) <= 1) << endl;
}
Reply
И про fabs впервые слышу.
Reply
Reply
Reply
Reply
Reply
Reply
Просто на всякий случай предупреждаю, что обычно тэги у меня стоят не зря :)
Reply
(The comment has been removed)
Reply
Reply
Leave a comment