那么,我必须做一个任务,它将以UNIQUE方式对数组元素进行排序。例如,如果我输入第一个字符串: BOB,我必须这样做:2 + 15 + 2(因为它们在字母表中的位置),然后除以字符数量/ 3,然后为所有输入的字符串,然后按高到低排序。 :)如何设置字母的值? C++
我的问题是,我如何设置值1,2,3,4,5 ...为A,B,C,D,E .....(只有大写字母)。
谢谢。
那么,我必须做一个任务,它将以UNIQUE方式对数组元素进行排序。例如,如果我输入第一个字符串: BOB,我必须这样做:2 + 15 + 2(因为它们在字母表中的位置),然后除以字符数量/ 3,然后为所有输入的字符串,然后按高到低排序。 :)如何设置字母的值? C++
我的问题是,我如何设置值1,2,3,4,5 ...为A,B,C,D,E .....(只有大写字母)。
谢谢。
我不认为char_traits有什么需要这个。 – 2013-02-28 14:42:45
“信”是什么意思? – 2013-02-28 14:43:00
@ R.MartinhoFernandes,我记住了[char_traits :: to_int_type](http://en.cppreference.com/w/cpp/string/char_traits/to_int_type)。 – StoryTeller 2013-02-28 14:44:17
您需要定义一个函数
int weight(const std::string& s);
然后遍历由字符的字符串char和做以下:
w = ch - 'A' + 1
您还可以检查字符是“A”之前和'Z'或者假设。
你需要阅读更多有关ASCII
编辑: 码重功能(简体):
int weight(const std::string& s) {
int sum = 0, i = 0;
for(i = 0; i < s.size(); i++) {
char ch = s[i];
sum += ch - 'A' + 1;
}
return sum/i;
}
“char”是什么意思? – 2013-02-28 14:42:07
对不起,固定的,我的意思是“ch”,这是字符。 ch = s [i];我在哪里它是你的循环计数器。 – SlavaNov 2013-02-28 14:45:34
谢谢。但它会工作(std :: string & s);?上面的答案之一说我必须使用一个字符,即使该字符串是一个字母,它不会这样工作.. – 2013-02-28 14:53:28
为了让你可以使用下面的代码值:
int getValue(char which)
{
int ret = 0;
switch(which)
{
case 'a' : ret = 1 ; break;
case 'A' : ret = 27 ; break;
case 'b' : ret = 2 ; break;
case 'B' : ret = 28 ; break;
// and so on....
}
return ret;
}
int result = 0;
while(....)
{
result = result + getValue(myarray[counter]);
}
你只需要将字符串转义为数组并通过它循环...
他只问大字母,你不需要使用这样的表格,你可以使用它的ASCII值(见下面的答案) – SlavaNov 2013-02-28 14:38:17
这是真的......我不需要小字符,只有很大。使用ASCII方法,除了我不知道如何去做 – 2013-02-28 14:40:11
如果您正在使用ASCII机器,@ StoryTeller的答案就可以工作。否则,你可以创建一个数组在两者之间映射:
const char letters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
static const int numbers [ 256 ] = { 0 };
for (size_t index = 0; index < sizeof letters; ++index) {
numbers [ letters [ index ] ] = index + 1;
}
assert (numbers [ 'A' ] == 1)
assert (numbers [ 'Z' ] == 26)
什么是ASCII码机? – 2013-02-28 14:54:40
@JohnSmith是一台使用ASCII字符表示的机器,它是现在大多数机器中的一种,一些大型机使用EBCDIC http ://en.wikipedia.org/wiki/EBCDIC,例如I和J之间有空白,所以'J' - 'I'!= 1' – 2013-02-28 15:15:46
他的意思是他有功课要做,不想做... – 2013-02-28 14:38:06
这不是功课。 – 2013-02-28 14:41:06
闻起来很喜欢它,考虑到这是一个简单的解决方案... – 2013-02-28 14:42:28