#include <stdio.h>
#include <stdlib.h>
typedef int (*fx_p)(int, int);
int testadd(int a, int b) { return a+b; }
int testsub(int a, int b) { return a-b; }
int testmul(int a, int b) { return a*b; }
int testdiv(int a, int b) { return a/b; }
fx_p getfx(int n) {
switch (n) {
default: return testadd;
case 4: case 5: case 6: return testsub;
case 7: case 8: return testmul;
case 9: return testdiv;
}
}
int main(void) {
// missing srand on purpose
for (int k
= 0; k
< 20; k
++) printf("%d\n", getfx
(rand() % 10)(42, 10)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgaW50ICgqZnhfcCkoaW50LCBpbnQpOwoKaW50IHRlc3RhZGQoaW50IGEsIGludCBiKSB7IHJldHVybiBhK2I7IH0KaW50IHRlc3RzdWIoaW50IGEsIGludCBiKSB7IHJldHVybiBhLWI7IH0KaW50IHRlc3RtdWwoaW50IGEsIGludCBiKSB7IHJldHVybiBhKmI7IH0KaW50IHRlc3RkaXYoaW50IGEsIGludCBiKSB7IHJldHVybiBhL2I7IH0KCmZ4X3AgZ2V0ZngoaW50IG4pIHsKICAgIHN3aXRjaCAobikgewogICAgICAgIGRlZmF1bHQ6IHJldHVybiB0ZXN0YWRkOwogICAgICAgIGNhc2UgNDogY2FzZSA1OiBjYXNlIDY6IHJldHVybiB0ZXN0c3ViOwogICAgICAgIGNhc2UgNzogY2FzZSA4OiByZXR1cm4gdGVzdG11bDsKICAgICAgICBjYXNlIDk6IHJldHVybiB0ZXN0ZGl2OwogICAgfQp9CgppbnQgbWFpbih2b2lkKSB7CiAgICAvLyBtaXNzaW5nIHNyYW5kIG9uIHB1cnBvc2UKCWZvciAoaW50IGsgPSAwOyBrIDwgMjA7IGsrKykgcHJpbnRmKCIlZFxuIiwgZ2V0ZngocmFuZCgpICUgMTApKDQyLCAxMCkpOwoJcmV0dXJuIDA7Cn0K