#include <iostream>
using namespace std;

using opType = void(*)(int&, int);
const opType ops[3] =
{
	[](int&  , int  ){ cout << "noop" << endl; },
    [](int& x, int i){ cout << x << " += " << i << endl; x += i; },
	[](int& x, int i){ cout << x << " -= " << i << endl; x -= i; }
};

void doIt(int k, int &x, int i)
{
	auto f = ops[int(k > 0) + (2 * int(k < 0))];
	f(x, i);
}

int main()
{
	int x = 0;
	cout << "x = " << x << endl;
	doIt(0, x, 1);
	doIt(1, x, 5);
	doIt(-1, x, 3);
	cout << "x = " << x << endl;
	return 0;
}