#include <iostream>
#include <string>
// Определение нот с помощью enum
enum note {
DO = 1, // 0000001
RE = 2, // 0000010
MI = 4, // 0000100
FA = 8, // 0001000
SOL = 16, // 0010000
LA = 32, // 0100000
SI = 64 // 1000000
};
int main() {
std::string chord;
std::cout << "Введите аккорд (набор цифр от 1 до 7): ";
std::cin >> chord;
int notes_mask = 0;
// Проходим по каждой цифре в строке
for (char c : chord) {
int note_index = c - '0'; // преобразуем символ в число
int note_bit = 1 << (note_index - 1); // определяем бит для ноты
// добавляем ноту в маску, если её там ещё нет
notes_mask |= note_bit;
}
// Выводим ноты, присутствующие в аккорде
std::cout << "Ноты в аккорде: ";
if (notes_mask & DO) std::cout << "DO ";
if (notes_mask & RE) std::cout << "RE ";
if (notes_mask & MI) std::cout << "MI ";
if (notes_mask & FA) std::cout << "FA ";
if (notes_mask & SOL) std::cout << "SOL ";
if (notes_mask & LA) std::cout << "LA ";
if (notes_mask & SI) std::cout << "SI ";
std::cout << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKLy8g0J7Qv9GA0LXQtNC10LvQtdC90LjQtSDQvdC+0YIg0YEg0L/QvtC80L7RidGM0Y4gZW51bQplbnVtIG5vdGUgewogICAgRE8gPSAxLCAgIC8vIDAwMDAwMDEKICAgIFJFID0gMiwgICAvLyAwMDAwMDEwCiAgICBNSSA9IDQsICAgLy8gMDAwMDEwMAogICAgRkEgPSA4LCAgIC8vIDAwMDEwMDAKICAgIFNPTCA9IDE2LCAvLyAwMDEwMDAwCiAgICBMQSA9IDMyLCAgLy8gMDEwMDAwMAogICAgU0kgPSA2NCAgIC8vIDEwMDAwMDAKfTsKCmludCBtYWluKCkgewogICAgc3RkOjpzdHJpbmcgY2hvcmQ7CiAgICBzdGQ6OmNvdXQgPDwgItCS0LLQtdC00LjRgtC1INCw0LrQutC+0YDQtCAo0L3QsNCx0L7RgCDRhtC40YTRgCDQvtGCIDEg0LTQviA3KTogIjsKICAgIHN0ZDo6Y2luID4+IGNob3JkOwoKICAgIGludCBub3Rlc19tYXNrID0gMDsKCiAgICAvLyDQn9GA0L7RhdC+0LTQuNC8INC/0L4g0LrQsNC20LTQvtC5INGG0LjRhNGA0LUg0LIg0YHRgtGA0L7QutC1CiAgICBmb3IgKGNoYXIgYyA6IGNob3JkKSB7CiAgICAgICAgaW50IG5vdGVfaW5kZXggPSBjIC0gJzAnOyAvLyDQv9GA0LXQvtCx0YDQsNC30YPQtdC8INGB0LjQvNCy0L7QuyDQsiDRh9C40YHQu9C+CiAgICAgICAgaW50IG5vdGVfYml0ID0gMSA8PCAobm90ZV9pbmRleCAtIDEpOyAvLyDQvtC/0YDQtdC00LXQu9GP0LXQvCDQsdC40YIg0LTQu9GPINC90L7RgtGLCgogICAgICAgIC8vINC00L7QsdCw0LLQu9GP0LXQvCDQvdC+0YLRgyDQsiDQvNCw0YHQutGDLCDQtdGB0LvQuCDQtdGRINGC0LDQvCDQtdGJ0ZEg0L3QtdGCCiAgICAgICAgbm90ZXNfbWFzayB8PSBub3RlX2JpdDsKICAgIH0KCiAgICAvLyDQktGL0LLQvtC00LjQvCDQvdC+0YLRiywg0L/RgNC40YHRg9GC0YHRgtCy0YPRjtGJ0LjQtSDQsiDQsNC60LrQvtGA0LTQtQogICAgc3RkOjpjb3V0IDw8ICLQndC+0YLRiyDQsiDQsNC60LrQvtGA0LTQtTogIjsKICAgIGlmIChub3Rlc19tYXNrICYgRE8pIHN0ZDo6Y291dCA8PCAiRE8gIjsKICAgIGlmIChub3Rlc19tYXNrICYgUkUpIHN0ZDo6Y291dCA8PCAiUkUgIjsKICAgIGlmIChub3Rlc19tYXNrICYgTUkpIHN0ZDo6Y291dCA8PCAiTUkgIjsKICAgIGlmIChub3Rlc19tYXNrICYgRkEpIHN0ZDo6Y291dCA8PCAiRkEgIjsKICAgIGlmIChub3Rlc19tYXNrICYgU09MKSBzdGQ6OmNvdXQgPDwgIlNPTCAiOwogICAgaWYgKG5vdGVzX21hc2sgJiBMQSkgc3RkOjpjb3V0IDw8ICJMQSAiOwogICAgaWYgKG5vdGVzX21hc2sgJiBTSSkgc3RkOjpjb3V0IDw8ICJTSSAiOwoKICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CgogICAgcmV0dXJuIDA7Cn0=