#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
typedef double Operation(double a,double b);
const struct { char sign; Operation *op; } tb[]=
{
{'+',[](double a,double b) { return a+b; }},
{'-',[](double a,double b) { return a-b; }},
{'*',[](double a,double b) { return a*b; }},
{'/',[](double a,double b) { return a/b; }},
};
char sign;
for(double a,b;(cout<<"Podaj wyrażenie (np 2*2): ")&&(cin>>a>>sign>>b>>ws);)
{
for(size_t i=0;i<sizeof(tb)/sizeof(*tb);++i)
{
if(tb[i].sign==sign)
{
cout<<a<<' '<<sign<<' '<<b<<" = "<<tb[i].op(a,b)<<endl;
sign=0;
break;
}
}
if(sign) cout<<"Nieznana operacja"<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgCnsKCXR5cGVkZWYgZG91YmxlIE9wZXJhdGlvbihkb3VibGUgYSxkb3VibGUgYik7Cgljb25zdCBzdHJ1Y3QgeyBjaGFyIHNpZ247IE9wZXJhdGlvbiAqb3A7IH0gdGJbXT0KCXsKCQl7JysnLFtdKGRvdWJsZSBhLGRvdWJsZSBiKSB7IHJldHVybiBhK2I7IH19LAoJCXsnLScsW10oZG91YmxlIGEsZG91YmxlIGIpIHsgcmV0dXJuIGEtYjsgfX0sCgkJeycqJyxbXShkb3VibGUgYSxkb3VibGUgYikgeyByZXR1cm4gYSpiOyB9fSwKCQl7Jy8nLFtdKGRvdWJsZSBhLGRvdWJsZSBiKSB7IHJldHVybiBhL2I7IH19LAoJfTsKCWNoYXIgc2lnbjsKCWZvcihkb3VibGUgYSxiOyhjb3V0PDwiUG9kYWogd3lyYcW8ZW5pZSAobnAgMioyKTogIikmJihjaW4+PmE+PnNpZ24+PmI+PndzKTspCgl7CgkJZm9yKHNpemVfdCBpPTA7aTxzaXplb2YodGIpL3NpemVvZigqdGIpOysraSkKCQl7CgkJCWlmKHRiW2ldLnNpZ249PXNpZ24pCgkJCXsKCQkJCWNvdXQ8PGE8PCcgJzw8c2lnbjw8JyAnPDxiPDwiID0gIjw8dGJbaV0ub3AoYSxiKTw8ZW5kbDsKCQkJCXNpZ249MDsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJCWlmKHNpZ24pIGNvdXQ8PCJOaWV6bmFuYSBvcGVyYWNqYSI8PGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==