将结果分配给变量时我遇到了一个小问题,这对我来说是第一次发生。我用“aaa”作为参数调用 Convert(),这是我的输出:
aaa
**676** *(value from cout)* = 26^(3-1)*1 **675** *(value of the variable)*
+26 = 26^(3-2)*1 700
+1 = 26^(3-3)*1 701
701
这里的代码:
string alphabet="abcdefghijklmnopqrstuvwxyz";
unsigned long long Convert(string &str){
unsigned long long wvalue=0;
for(int i=0;i<str.size();++i){
size_t found=alphabet.find(str[i]);
if(found==string::npos)
cout<<"Please enter only lowercase letters of the english alphabet!"<<endl;
unsigned long long add=((found+1)*pow(26,(str.size()-(i+1))));
wvalue+=add;
if(i>0)cout<<"+";
cout<<"\t"<<((found+1)*pow(26,(str.size()-(i+1))))<<" = "<<"26^("<<str.size()<<"-"<<(i+1) <<")*"<<(found+1)<<"\t"<<wvalue<<endl;
}
return wvalue;
}
我很可能错过了一些非常明显的东西,但我无法弄清楚。
((found+1)*pow(26,(str.size()-(i+1))))
正在进行计算,并且正在按预期进行,cout-statment 中的结果是正确的。但变量在前两个赋值中被减 1。