W tym zadaniu nie ma podanej liczby testów. Testy kończą się w momencie zamknięcia strumienia danych wejściowych.
Jak już sam rozwiążesz... możesz zerknąć. Z premedytacją nietypowo...
#include <iostream>
#include <unordered_map>
#include <functional>
int main() {
static std::unordered_map<char, std::function<int(int, int)>> operation_map = {
{'+', [](int val1, int val2) { return val1 + val2; }},
{'-', [](int val1, int val2) { return val1 - val2; }},
{'*', [](int val1, int val2) { return val1 * val2; }},
{'/', [](int val1, int val2) { return val1 / val2; }},
{'%', [](int val1, int val2) { return val1 % val2; }}
};
char operation;
int val1;
int val2;
while(std::cin >> operation >> val1 >> val2) {
std::cout << operation_map[operation](val1, val2) << std::endl;
}
}