fork download
  1. #include <iostream>
  2. #include <string>
  3.  
  4. // Определение нот с помощью enum
  5. enum note {
  6. DO = 1, // 0000001
  7. RE = 2, // 0000010
  8. MI = 4, // 0000100
  9. FA = 8, // 0001000
  10. SOL = 16, // 0010000
  11. LA = 32, // 0100000
  12. SI = 64 // 1000000
  13. };
  14.  
  15. int main() {
  16. std::string chord;
  17. std::cout << "Введите аккорд (набор цифр от 1 до 7): ";
  18. std::cin >> chord;
  19.  
  20. int notes_mask = 0;
  21.  
  22. // Проходим по каждой цифре в строке
  23. for (char c : chord) {
  24. int note_index = c - '0'; // преобразуем символ в число
  25. int note_bit = 1 << (note_index - 1); // определяем бит для ноты
  26.  
  27. // добавляем ноту в маску, если её там ещё нет
  28. notes_mask |= note_bit;
  29. }
  30.  
  31. // Выводим ноты, присутствующие в аккорде
  32. std::cout << "Ноты в аккорде: ";
  33. if (notes_mask & DO) std::cout << "DO ";
  34. if (notes_mask & RE) std::cout << "RE ";
  35. if (notes_mask & MI) std::cout << "MI ";
  36. if (notes_mask & FA) std::cout << "FA ";
  37. if (notes_mask & SOL) std::cout << "SOL ";
  38. if (notes_mask & LA) std::cout << "LA ";
  39. if (notes_mask & SI) std::cout << "SI ";
  40.  
  41. std::cout << std::endl;
  42.  
  43. return 0;
  44. }
Success #stdin #stdout 0.01s 5324KB
stdin
Standard input is empty
stdout
Введите аккорд (набор цифр от 1 до 7): Ноты в аккорде: