0

結果を変数に代入するときに少し問題があります。これは初めてのことです。「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 ステートメント内の結果は正しいです。ただし、変数は最初の 2 つの代入で 1 減算されます。

4

1 に答える 1