2016-05-03 6 views
-1

私は限られたプログラミング知識に基づいてアルファベット順にソートするプログラムを書いていますので、ハードな方法は、とにかく、私は一緒に文字列の各文字のアルファベットの値を追加し、並べ替えられた文字列配列に入れて、私はそれを行うと決めたこれの一部として最大値と文字列の長さループを介して一緒に文字値を追加する関数は...ここでの問題イムは、文字のこのテスト入力に基づいているに実行しているネストされたループから値を返す

#include <iostream> 
#include <string> 
using namespace std; 
int ABReturn_value(string a); 
int main(int argc,char *argv[]){ 
    cout<<ABReturn_value("a")<<endl; 
    return 0; 
} 
int ABReturn_value(string a){ 
    //declare an internal character array containing the alphabet 
    char alphabet[2][26] = {{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'},{'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}}; 
    //variable to hold the acrued value 
    int value=0; 
    //look through the provided string's characters and acrue the value based on which address in the refernece array the letter corresponds to 
    for(unsigned int x = 0;x<=(a.size())-1;x++) 
     for(int y=0;y<=26-1;y++){ 
      if(a[x]==alphabet[1][y]||a[x]==alphabet[2][y]){ 
       value+=y; 
      } 
     } 
    return value; 
} 

は私に値を返す関数を期待していaiを私の源でありますの1しかしそれは代わりに40を返している、それを見つめているiveと私は間違って何かが間違って何かを見つけたように見える何かが不足している何か?前もって感謝します!

+6

'アルファベットをimmibis [0] 'とアルファベット[2] 'はアルファベット[1]でなければなりません – immibis

+0

C++の「難しい方法」は効果的にCコードになります。また、 'char'sは整数であり、直接比較することができます。例えば、 '' c '>' a''のようになります。 – Kupiakos

+2

'y <= 26-1'はより一般的であり、簡潔には' y <26'と書かれています。 –

答えて

-1

@immibisさんがこれに答えています。あなたはそれにタグを付けることができますか?

アルファベット[1]アルファベットでなければならない[0]とアルファベット[2]アルファベットであるべきである[1] - `[1]` `アルファベットでなければならない

関連する問題