// main.cpp:
#include <iostream>
#include <functional>
int exercise1();
int exercise2();
int exercise3();
int prompt_user_for_exercise() {
// TODO
return 1;
}
int main() {
std::function<int()> exercises[] {
exercise1,
exercise2,
exercise3 };
int choice = prompt_user_for_exercise();
// probably wise to check that choice is in bounds
std::cout << "running exercise " << choice << "...\n";
int result = exercises[choice](); // run exercise
std::cout << "result = " << result;
return result;
}
// exercise1.cpp:
int exercise1() {
// do the stuff
return 0; // success, or 1 for failure
}
// exercise2.cpp:
int exercise2() {
// do the stuff
return 0; // success, or 1 for failure
}
// exercise3.cpp:
int exercise3() {
// do the stuff
return 0; // success, or 1 for failure
}
Ly8gbWFpbi5jcHA6CgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxmdW5jdGlvbmFsPgoKaW50IGV4ZXJjaXNlMSgpOwppbnQgZXhlcmNpc2UyKCk7CmludCBleGVyY2lzZTMoKTsKCmludCBwcm9tcHRfdXNlcl9mb3JfZXhlcmNpc2UoKSB7CiAgICAvLyBUT0RPCiAgICByZXR1cm4gMTsKfQoKaW50IG1haW4oKSB7CiAgICBzdGQ6OmZ1bmN0aW9uPGludCgpPiBleGVyY2lzZXNbXSB7CiAgICAgICAgZXhlcmNpc2UxLAogICAgICAgIGV4ZXJjaXNlMiwKICAgICAgICBleGVyY2lzZTMgfTsKCiAgICBpbnQgY2hvaWNlID0gcHJvbXB0X3VzZXJfZm9yX2V4ZXJjaXNlKCk7CiAgICAvLyBwcm9iYWJseSB3aXNlIHRvIGNoZWNrIHRoYXQgY2hvaWNlIGlzIGluIGJvdW5kcwoKICAgIHN0ZDo6Y291dCA8PCAicnVubmluZyBleGVyY2lzZSAiIDw8ICBjaG9pY2UgPDwgIi4uLlxuIjsKICAgIGludCByZXN1bHQgPSBleGVyY2lzZXNbY2hvaWNlXSgpOyAvLyBydW4gZXhlcmNpc2UKICAgIHN0ZDo6Y291dCA8PCAicmVzdWx0ID0gIiA8PCByZXN1bHQ7CgogICAgcmV0dXJuIHJlc3VsdDsKfQoKLy8gZXhlcmNpc2UxLmNwcDoKCmludCBleGVyY2lzZTEoKSB7CiAgICAvLyBkbyB0aGUgc3R1ZmYKCiAgICByZXR1cm4gMDsgLy8gc3VjY2Vzcywgb3IgMSBmb3IgZmFpbHVyZQp9CgovLyBleGVyY2lzZTIuY3BwOgoKaW50IGV4ZXJjaXNlMigpIHsKICAgIC8vIGRvIHRoZSBzdHVmZgoKICAgIHJldHVybiAwOyAvLyBzdWNjZXNzLCBvciAxIGZvciBmYWlsdXJlCn0KCi8vIGV4ZXJjaXNlMy5jcHA6CgppbnQgZXhlcmNpc2UzKCkgewogICAgLy8gZG8gdGhlIHN0dWZmCgogICAgcmV0dXJuIDA7IC8vIHN1Y2Nlc3MsIG9yIDEgZm9yIGZhaWx1cmUKfQ==