Отношение буквы к значению, которое хранится в массиве
У меня проблема, мне нужно соотнести значение с буквой. Значения входят в массив. Например:
Value vector -> [1,2,3,1,2,5,1,...,8]
Мне нужна идея, чтобы связать первое число этого вектора с буквой "а", второе число с буквой "b" и т. Д. До последнего числа с буквой "z".
Так, a -> 2
значение "а" равно 2.
Цель этого - если у меня есть слово типа "воздух", я хочу, чтобы значение воздуха было значением "а" + значение "i" + значение "r".
1 ответ
Кажется, ваша проблема в том, что вы не можете получить индекс массива из буквы. Двадцать шесть строчных латинских букв являются непрерывным блоком в ASCII, и вы можете получить ASCII-код символа с одинарной кавычкой, отсюда:
int ix = c - 'a'
Обратите внимание, что это даст вам недопустимые индексы для вашего массива, если ваш персонаж c
это не письмо. Если ваш алфавит не является простым латинским алфавитом, вы можете написать функцию для назначения числового индекса вашей букве. Например, если бы я хотел написать индексную функцию для немецкого алфавита, я бы сделал что-то вроде этого:
int index_de(int c) {
if (c == 'ä') return 26;
if (c == 'ö') return 27;
if (c == 'ü') return 28;
if (c == 'ß') return 29;
if (c < 'a' || c > 'z') return -1;
return c - 'a';
}
(Поскольку акцентированные буквы находятся за пределами чистого 7-битного диапазона ASCII, это приведет к проблемам с исходным кодом и кодированием ввода. Будьте осторожны.)
Затем вы можете использовать эту функцию, чтобы назначать оценки буквенным кодам, когда вы (а) читаете файл и затем (б) сканируете слова, которые хотите набрать.