Я представляю себе алгоритм действий,- но он упирается в синтаксис.
Это свидетельствует о том, что тобою составленный алгоритм использует такие понятия, которые не очевидно и не непосредственно реализуются в известных тебе синтаксических конструкциях языка программирования.
Да, можно воспользоваться написанными кем-то указанными функциями, но в учебных целях лучше реализовать операции самостоятельно.
Например, мне понятно, что ты хочешь сделать:
if (element[i] + element[i + 1] = engsochit[x])
cout << russochit[x];
(Знак "=" - это присваивание, сравнение будет "==".)
Это, в терминах абстрактной задачи, узкоспециализированный вариант внутренней части поиска карточки и применение правила. Но мне не совсем понятен твой подход к реализации задуманного. Что именно в терминах языка программирования, а не задачи (!), ты делаешь? Каков внутренний смысл этого выражения?
Конструкции языка программирования столь абстрактны, что ими можно воспользоваться для решения различных задач. (Вспомни, что про алгоритм говорилось.) Вот ты решил применить их для записи своего алгоритма. Т.е., опять, ты смотришь на внешний смысл конструкции и не хочешь увидеть внутренний смысл конструкции - операции над элементами массива. Потому не получается. Попытайся описать на русском языке, используя программистские термины, что ты делаешь.
Я мог бы дать решение всей твоей задачи, но не хочу этого делать без конкретных вопросов, заданных на должном абстрактном уровне. Т.е. мой пример должен восприниматься как пример программирования вообще, а не решения твоей конкретной задачи. Пока у меня ощущение, что в общем виде ты не готов воспринимать примеры. Не совсем понятна твоя мотивация: с одной стороны, если бы тебе нужно было просто сдать лабу, ты бы уже давно нашёл решение, или кто-нибудь бы его написал на каком-либо форуме - раз ты этого не делаешь, значит тебя интересует программирование; с другой стороны ты так нацелен на решение конкретной задачи, что "за деревьями леса не видишь" - в решении этой конкретной задачи не видно общих приёмов программирования, годных для решения любых задач, не видно результата обучения. Задача учебная, и решается не для того, чтобы её решить, а чтобы на примере решения обучиться программированию. Вот том и основная проблема - нужно суметь временно отложить цель (что решать) и сосредоточиться на процессе (как решать). Понять суть абстрагирования.
Т.е. в начале ты определил, что задача решается неким способом, с помощью некоторого инструмента (инструмент в виде языка программирования дал тебе, допустим, преподаватель). Ты не знаешь в деталях реализации этого способа, ты не умеешь пользоваться инструментом, ты знаешь только то, что задача этим способом решается. И вот это знание, что данный инструмент пригоден для решения задачи (инструмент имеет внешний смысл), позволяет отключиться от собственно задачи, сосредоточив внимание на освоении собственно инструмента (изучить внутренний смысл). Только изучив инструмент, ты сможешь применить его наилучшим способом. Не всякий инструмент создан для решения твоей конкретной задачи. Например, такой инструмент, как язык программирования, создан для решения множества задач. Не бойся сосредоточить внимание на нём, забыв на время о задаче. Лишь зная в деталях и инструмент, и задачу, ты сможешь их соединить.
С прагматической точки зрения программист всегда устанавливает связи между внешним и внутренним смыслом тех или иных элементов программы и элементов решаемой при помощи программирования задачи. Например, язык программирования предоставляет внутреннее с точки зрения языка понятие "целочисленная переменная, обозначаемая идентификатором i". Внутренний смысл такой переменной - возможность хранить какие-то целые числа. Какой внешний смысл имеют эти числа, какую роль играют в задаче - не важно для языка программирования. Ты, к примеру, начинаешь считать, что "i" - "счётчик итераций цикла". Этот смысл переменной определён программистом, "приложен" к переменной, определяет смысл конкретной этой переменной в конкретной программе, но он не является значимым для языка программирования. Когда создавался язык, никто не знал, что ты будешь при помощи этого языка решать свою задачу, и что ты назначишь целочисленной переменной имя "i" и смысл "счётчик итераций цикла". И компьютер об этом не "знает". Компьютер вообще ничего не "знает" о том, как и для чего им пользуются - он не может "знать" в принципе, это лишь машина. Т.е. ты устанавливаешь в своём сознании ассоциацию: "целочисленная переменная i" - это "счётчик цикла". Первое ("целочисленная переменная") - это такая "вещь в себе", это понятие языка программирования. Второе ("счётчик цикла") - это лишь твоё отношение к этой переменной, только то, что ты о ней думаешь. Первое реально существует вне зависимости от второго. Второе существует только в сознании, и существует постольку, поскольку существует первое. Ты можешь действовать в обратном направлении: подумать, что тебе нужен "счётчик итераций цикла", затем вспомнить, что есть в языке понятие "целочисленная переменная", которое можно применить в качестве счётчика. Но и в этом случае "целочисленная переменная" как понятие существует до того и вне зависимости от того, что тебе нужен "счётчик итераций цикла". Аналогично со структурами. Есть "вещь в себе", скажем, "массив символов". Ты начинаешь думать, что вот этим массивом символов ты воспользуешься в качестве "набора левых частей карточек-правил" или ещё каким-то образом. Но этот внешний смысл массива не подменяет внутреннего смысла массива. Как бы ты к нему не относился, он остаётся "массивом символов". Аналогично с алгоритмами. Есть "вещь в себе", например, "алгоритм поиска карточек". Он ищет карточки. Не важно, как эти карточки устроены, не важно, как ты этими карточками пользуешься, даже не важно, какими синтаксическими конструкциями ты реализовал этот алгоритм в программе, на каком языке программирования - к алгоритму это отношения не имеет. И вот ты решил воспользоваться этим алгоритмом в своей задаче, ты определил, что карточки содержат правила перевода, ты определил, что нужно сравнить особым образом карточку с буквой - это всё приспосабливает алгоритм к решению твоей задачи, но не подменяет внутренний смысл алгоритма. Что бы ты ни думал о конкретном применении этого алгоритма, он всё равно остаётся "алгоритмом поиска карточки" и ничем другим не становится.