#include <iostream>
#include <array>
#include <string>
#include <sstream>
using namespace std;
string prettify_index(size_t idx) {
return { static_cast<char>('a'+idx) };
}
size_t unprettify_index(string const &sidx) {
return static_cast<size_t>(sidx[0]-'a');
}
struct quiz {
string question;
string proper_answer;
array<string, 5> answers;
quiz(string const &question, string const &proper_answer, decltype(answers) const &answers):
question(question),
answers(answers),
proper_answer(proper_answer)
{}
string pretty_string() const {
stringstream out;
out << "Pytanie:\n\t" << question << endl
<< "Możliwe odpowiedzi:" << endl;
for(auto i = 0u; i < answers.size(); ++i) {
out << "\t" << prettify_index(i) << ". " << answers[i] << endl;
}
return out.str();
};
bool validate(string const &answer) const {
return proper_answer == answer;
}
bool validate(size_t idx) const {
return proper_answer == answers[idx];
}
};
int main() {
quiz q {
"Stolica Polski?",
"Warszawa",
{
"Warszawa",
"Poznań",
"Kraków",
"Gdańsk",
"Toruń"
}
};
cout << q.pretty_string();
cout << "Twoja odpowiedź:\n";
string answer;
cin >> answer;
cout << "\t" << (q.validate(unprettify_index(answer))? "Poprawna!" : "Niepoprawna.");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxzc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RyaW5nIHByZXR0aWZ5X2luZGV4KHNpemVfdCBpZHgpIHsKCXJldHVybiB7IHN0YXRpY19jYXN0PGNoYXI+KCdhJytpZHgpIH07Cn0KCnNpemVfdCB1bnByZXR0aWZ5X2luZGV4KHN0cmluZyBjb25zdCAmc2lkeCkgewoJcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oc2lkeFswXS0nYScpOwp9CgpzdHJ1Y3QgcXVpeiB7CglzdHJpbmcgcXVlc3Rpb247CglzdHJpbmcgcHJvcGVyX2Fuc3dlcjsKCWFycmF5PHN0cmluZywgNT4gYW5zd2VyczsKCQoJCglxdWl6KHN0cmluZyBjb25zdCAmcXVlc3Rpb24sIHN0cmluZyBjb25zdCAmcHJvcGVyX2Fuc3dlciwgZGVjbHR5cGUoYW5zd2VycykgY29uc3QgJmFuc3dlcnMpOgoJCXF1ZXN0aW9uKHF1ZXN0aW9uKSwKCQlhbnN3ZXJzKGFuc3dlcnMpLAoJCXByb3Blcl9hbnN3ZXIocHJvcGVyX2Fuc3dlcikKCXt9CgkKCXN0cmluZyBwcmV0dHlfc3RyaW5nKCkgY29uc3QgewoJCXN0cmluZ3N0cmVhbSBvdXQ7CgkJb3V0IDw8ICJQeXRhbmllOlxuXHQiIDw8IHF1ZXN0aW9uIDw8IGVuZGwKCQkgICAgPDwgIk1vxbxsaXdlIG9kcG93aWVkemk6IiA8PCBlbmRsOwoJCQoJCWZvcihhdXRvIGkgPSAwdTsgaSA8IGFuc3dlcnMuc2l6ZSgpOyArK2kpIHsKCQkJb3V0IDw8ICJcdCIgPDwgcHJldHRpZnlfaW5kZXgoaSkgPDwgIi4gIiA8PCBhbnN3ZXJzW2ldIDw8IGVuZGw7CgkJfQoJCSAgICAKCQlyZXR1cm4gb3V0LnN0cigpOwoJfTsKCQoJYm9vbCB2YWxpZGF0ZShzdHJpbmcgY29uc3QgJmFuc3dlcikgY29uc3QgewoJCXJldHVybiBwcm9wZXJfYW5zd2VyID09IGFuc3dlcjsKCX0KCQoJYm9vbCB2YWxpZGF0ZShzaXplX3QgaWR4KSBjb25zdCB7CgkJcmV0dXJuIHByb3Blcl9hbnN3ZXIgPT0gYW5zd2Vyc1tpZHhdOwoJfQp9OwoKaW50IG1haW4oKSB7CglxdWl6IHEgewoJCSJTdG9saWNhIFBvbHNraT8iLAoJCSJXYXJzemF3YSIsCgkJewoJCQkiV2Fyc3phd2EiLAoJCQkiUG96bmHFhCIsCgkJCSJLcmFrw7N3IiwKCQkJIkdkYcWEc2siLAoJCQkiVG9ydcWEIgoJCX0KCX07CgkKCWNvdXQgPDwgcS5wcmV0dHlfc3RyaW5nKCk7CgkKCWNvdXQgPDwgIlR3b2phIG9kcG93aWVkxbo6XG4iOwoJc3RyaW5nIGFuc3dlcjsKCWNpbiA+PiBhbnN3ZXI7Cgljb3V0IDw8ICJcdCIgPDwgKHEudmFsaWRhdGUodW5wcmV0dGlmeV9pbmRleChhbnN3ZXIpKT8gIlBvcHJhd25hISIgOiAiTmllcG9wcmF3bmEuIik7CgkKCXJldHVybiAwOwp9