Отношение буквы к значению, которое хранится в массиве

У меня проблема, мне нужно соотнести значение с буквой. Значения входят в массив. Например:

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, это приведет к проблемам с исходным кодом и кодированием ввода. Будьте осторожны.)

Затем вы можете использовать эту функцию, чтобы назначать оценки буквенным кодам, когда вы (а) читаете файл и затем (б) сканируете слова, которые хотите набрать.

Другие вопросы по тегам