#include <iostream>
#include <cstdio>
#include <functional>
#include <iostream>
using namespace std;
int mul(int x, int y){
return x*y;
}
int dif(int x, int y){
return x/y;
}
int sum(int x, int y){
return x+y;
}
int sub(int x, int y){
return x-y;
}
int main() {
int x, y;
x = 5;
y = 2;
int(*funPtr1)(int, int) = mul;
int(*funPtr2)(int, int) = sum;
//z2
int(*tabFunPtr[4]) (int x, int y);
tabFunPtr[0] = mul;
tabFunPtr[1] = dif;
tabFunPtr[2] = sum;
tabFunPtr[3] = sub;
//z4
auto lamMul = [&](int x, int y) -> int{
return x*y;
};
auto lamDif = [&](int x, int y) -> int{
return x / y;
};
auto lamSum = [&](int x, int y) -> int{
return x + y;
};
auto lamSub = [&](int x, int y) -> int{
return x - y;
};
cout << mul(x,y) << endl;
cout << dif(x,y) << endl;
cout << sum(x,y) << endl;
cout << sub(x,y) << endl;
cout <<"------------------------"<<endl;
cout << funPtr1(x,y)<<endl;
cout << funPtr2(x,y)<<endl;
cout <<"-------------z2---------"<< endl;
for(int i =0; i<4; i++){
cout << (*tabFunPtr[i])(x, y) << endl;
}
cout << "------------------------z3--------"<< endl;
cout << lamMul(x, y) << endl;
cout << lamDif(x, y) << endl;
cout << lamSum(x, y) << endl;
cout << lamSub(x, y) << endl;
system("pause");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmludCBtdWwoaW50IHgsIGludCB5KXsKIAogICAgcmV0dXJuIHgqeTsKfQppbnQgZGlmKGludCB4LCBpbnQgeSl7CiAKICAgIHJldHVybiB4L3k7Cn0KaW50IHN1bShpbnQgeCwgaW50IHkpewogCiAgICByZXR1cm4geCt5Owp9CmludCBzdWIoaW50IHgsIGludCB5KXsKIAogICAgcmV0dXJuIHgteTsKfQogCiAKaW50IG1haW4oKSB7CiAgICBpbnQgeCwgeTsKICAgIHggPSA1OwogICAgeSA9IDI7CiAgICBpbnQoKmZ1blB0cjEpKGludCwgaW50KSA9IG11bDsKICAgIGludCgqZnVuUHRyMikoaW50LCBpbnQpID0gc3VtOwogICAgLy96MgogICAgaW50KCp0YWJGdW5QdHJbNF0pIChpbnQgeCwgaW50IHkpOwogICAgdGFiRnVuUHRyWzBdID0gbXVsOwogICAgdGFiRnVuUHRyWzFdID0gZGlmOwogICAgdGFiRnVuUHRyWzJdID0gc3VtOwogICAgdGFiRnVuUHRyWzNdID0gc3ViOwogICAgLy96NAogICAgYXV0byBsYW1NdWwgPSBbJl0oaW50IHgsIGludCB5KSAtPiBpbnR7IAogICAgICAgIHJldHVybiB4Knk7IAogICAgfTsKICAgIGF1dG8gbGFtRGlmID0gWyZdKGludCB4LCBpbnQgeSkgLT4gaW50ewogICAgICAgIHJldHVybiB4IC8geTsKICAgIH07CiAgICBhdXRvIGxhbVN1bSA9IFsmXShpbnQgeCwgaW50IHkpIC0+IGludHsKICAgICAgICByZXR1cm4geCArIHk7CiAgICB9OwogICAgYXV0byBsYW1TdWIgPSBbJl0oaW50IHgsIGludCB5KSAtPiBpbnR7CiAgICAgICAgcmV0dXJuIHggLSB5OwogICAgfTsKICAgIAogICAgCiAgICAKICAgIGNvdXQgPDwgbXVsKHgseSkgPDwgZW5kbDsKICAgIGNvdXQgPDwgZGlmKHgseSkgPDwgZW5kbDsKICAgIGNvdXQgPDwgc3VtKHgseSkgPDwgZW5kbDsKICAgIGNvdXQgPDwgc3ViKHgseSkgPDwgZW5kbDsKICAgIGNvdXQgPDwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIjw8ZW5kbDsKICAgIGNvdXQgPDwgZnVuUHRyMSh4LHkpPDxlbmRsOwogICAgY291dCA8PCBmdW5QdHIyKHgseSk8PGVuZGw7CiAgICBjb3V0IDw8Ii0tLS0tLS0tLS0tLS16Mi0tLS0tLS0tLSI8PCBlbmRsOwogICAgZm9yKGludCBpID0wOyBpPDQ7IGkrKyl7CiAgICAgICAgY291dCA8PCAoKnRhYkZ1blB0cltpXSkoeCwgeSkgPDwgZW5kbDsgIAogICAgfQogICAgY291dCA8PCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tejMtLS0tLS0tLSI8PCBlbmRsOwogICAgY291dCA8PCBsYW1NdWwoeCwgeSkgPDwgZW5kbDsKICAgIGNvdXQgPDwgbGFtRGlmKHgsIHkpIDw8IGVuZGw7CiAgICBjb3V0IDw8IGxhbVN1bSh4LCB5KSA8PCBlbmRsOwogICAgY291dCA8PCBsYW1TdWIoeCwgeSkgPDwgZW5kbDsKICAgIAogICAgCiAgICBzeXN0ZW0oInBhdXNlIik7CiAgICByZXR1cm4gMDsKfQ==