0

我有一个问题,我需要将一个值与一个字母联系起来。这些值以数组形式出现。例如:

Value vector -> [1,2,3,1,2,5,1,...,8]

我需要一个想法,使该向量的第一个数字链接到字母“a”,第二个数字链接到字母“b”,等等,直到最后一个数字链接到字母“z”。

所以, a -> 2, "a" 的值为 2。

这样做的目的是,如果我有一个像“air”这样的词,我希望 air 的值是“a”的值 +“i”的值 +“r”的值。

4

1 回答 1

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 范围,这将引入源代码和输入编码问题。请注意。)

然后,当您 (a) 阅读文件,然后 (b) 扫描要评分的单词时,您可以使用此功能为字母代码分配分数。

于 2014-05-12T16:27:30.140 回答