我有一个问题,我需要将一个值与一个字母相关联。值以数组形式出现。例如:
Value vector -> [1,2,3,1,2,5,1,...,8]
我需要一个想法,使该矢量的第一个数字与字母“a”相关联,第二个数字与字母“b”相关联,直到最后一个数字为字母“z”。
所以,a -> 2
,“a”的值是2。
这样做的目的是,如果我有一个像“空气”这样的词,我希望空气的值是“a”的值+“i”的值+“r”的值。
答案 0 :(得分: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)扫描您想要评分的单词时,您可以使用此功能为字母代码分配分数。