fork download
  1. #include <iostream>
  2. #include <array>
  3. #include <string>
  4. #include <locale>
  5.  
  6. template<typename T, size_t N, size_t M>
  7. std::string find(T ch, const std::array<std::array<T, N>, M> &arr)
  8. {
  9. for (size_t i = 1; i < N; ++i)
  10. {
  11. for (size_t j = 1; j < M; ++j)
  12. {
  13. if (ch == arr[i][j])
  14. {
  15. return std::string{ arr[i][0], arr[0][j] };
  16. }
  17. }
  18. }
  19. return std::string(" ");
  20. }
  21.  
  22. int main()
  23. {
  24. constexpr std::array<std::array<char, 6>, 6> arr = { ' ', 'A', 'B', 'C', 'D', 'E' ,
  25. 'A', 'A', 'B', 'C', 'D', 'E' ,
  26. 'B', 'F', 'G', 'H', 'I', 'K' ,
  27. 'C', 'L', 'M', 'N', 'O', 'P' ,
  28. 'D', 'Q', 'R', 'S', 'T', 'U' ,
  29. 'E', 'V', 'W', 'X', 'Y', 'Z'
  30. };
  31.  
  32. std::string text = "HELLO";
  33. std::locale loc;
  34. for (auto i = text.begin(); i != text.end(); ++i)
  35. {
  36. *i = std::toupper(*i, loc);
  37. if (*i == 'J')
  38. *i = 'I';
  39. }
  40.  
  41. std::string result;
  42. result.reserve(text.size() * 3);
  43.  
  44. for (auto i : text)
  45. {
  46. result.append(find(i, arr)).append(" ");
  47. }
  48.  
  49. std::cout << result.c_str() << std::endl;
  50. getchar();
  51.  
  52. return 0;
  53. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
BC AE CA CA CD