Вам необходимо преобразовать символ, такой как «а», в его индекс в таблице. Согласно вашей спецификации, таблица начинается с азбуки Морзе для «а», поэтому «а» должен отображаться на индекс 0, «б» должен отображаться на 1 и т. Д.
Самое простое такое отображение может быть реализовано так:
int char_to_index(char c)
{
return tolower(c) - 'a';
}
Это вычитает ASCII-код для «a» из заданной буквы, который превратит «a» в 0 и т. Д.
К сожалению, это работает только в том случае, если компьютер, на котором выполняется программа, кодирует буквы алфавита, используя систему, которая присваивает смежные коды буквам. Не все компьютеры такие. Более переносимая функция может выполнять сопоставление явно, например так:
int char_to_index2(char c)
{
switch(tolower(c))
{
case 'a': return 0;
case 'b': return 1;
case 'c': return 2;
/* and so on */
}
}
Это более подробный код, но более переносимый.
ОБНОВЛЕНИЕ: Я добавил вызовы к tolower()
для обеих функций, чтобы сделать их немного более устойчивыми.