Вы также должны учитывать верхний / нижний регистр. В моем опыте, считая от 1, часто опасно, потому что это может привести к ошибкам. Как правило, я всегда преобразую в индекс, основанный на 1, только при взаимодействии с пользователем, и использую счет, основанный на 0, чтобы избежать путаницы.
int GetPosition(char c)
{
if (c >= 'a' && c <= 'z') {
return c - 'a';
}
else if (c >= 'A' && c <= 'Z') {
return c - 'A';
}
else {
// Indicate that it isn't a letter.
return -1;
}
}