2017-06-08 8 views
-2

がそのとき私は、たとえばC++エラー:予期した '、'または ';'前に「{」

cout<<getPosition('l') 

を機能 に渡される文字のアルファベット位置を返す関数を作成しようとしていたトークンは、私は整数12を返しますかなり確かに私は論理を正しいが持っているが、私は構文にいくつかの問題を抱えている。私は多くの同様の質問を見つけましたが、私はまだ問題を解決することができませんでした。 すべてのヘルプはそれがすべての権利定義されて/宣言されていないこの関数は、文字が型である必要があり、ここで

int getPosition(letter) 
{ 

始まり、あなたはこのを想定して何も...

を与えなかった

#include <iostream> 
using namespace std; 

int getPosition(letter) 
{ 
    int pos = 0; 
    const char alphabet[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'}; 
    for (int counter=0; counter!=26; counter++) 
    { 
     if (alphabet[counter] == letter) 
     { 
      pos = counter; 
      break; 
     } 
    } 
    return pos; 
} 

int main() 
{ 
    string letter = 'r'; 
    cout << posInAlpha(letter); 
    return 0; 
} 
+2

あなたはあなたの関数にパラメータの型が欠落しています。 'int getPosition(char letter)'でなければなりません。 –

+0

cout << posInAlpha(letter);あなたの関数はgetPositionです。 –

+0

文字がアルファベットに含まれていない場合の戻り値は何かを再考してください。注意「0」は、アルファベットの最初の文字を表す有効な位置です。 –

答えて

3

std::stringcharを混合していますが、最初のものは必要ありません。さらに、main()は宣言されていない関数を使用します。さらに、関数のパラメータには型がありません。あなたのコンパイラは、これらについてはかなり説明する必要があります。私はあなたのコードを変更して、目的の動作を得ました。ここで変更する必要があったものを理解する瞬間または2をご利用ください。

#include <iostream> 
using namespace std; 

// Returns the index of 'letter' in alphabet, or -1 if not found. 
int getPosition(char letter) 
{ 
    int pos = -1; 
    const char alphabet[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'}; 
    for (int counter=0;counter!=26;counter++) 
    { 
     if (alphabet[counter]==letter) 
     { 
      pos=counter; 
      break; 
     } 
    } 
    return pos; 
} 

int main() 
{ 
    char letter='r'; 
    cout<<getPosition(letter); 
    return 0; 
} 

は出力:

17

私はアルファベットに属さないletter場合には、-1にposを初期化します。それ以外の場合、関数は0を返します。つまり、aが答えです。


PS:letterstd::stringた場合は型が一致しないことから、その後、アルファベットのすべての文字を使用して比較すると、コンパイルエラーを生成します。

+0

は、 –

+0

私は何らかの 'NOT_FOUND'を使って' pos'を初期化します。 '#define NOT_FOUND -1'です。さもなければ 'letter'がアルファベットの一部でなくても有効な結果を返します。 –

1

を高く評価しました

char letter = 'r'; 
cout << posInAlpha(letter); 

その文字はcharでなければならず、関数posInAlpha shoul

ため を印刷し
#include <iostream> 
using namespace std; 

int getPosition(char& letter) 
{ 
    int pos = 0; 
    const char alphabet[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' }; 
    for (int counter = 0; counter != 26; counter++) 
    { 
     if (alphabet[counter] == letter) 
     { 
      pos = counter; 
      break; 
     } 
    } 
    return pos; 
} 

int main() 
{ 
    char letter = 'r'; 
    cout << getPosition(letter); 
    cin.get(); 
    return 0; 
} 

:あなたの最終固定コードは次のようになります

、あなたがのstd ::文字列と文字をミキシングしているようにそれがすべて見えますgetPosition

に改名さdは指定された文字'r'

0
#include <iostream> 

int getPosition(char c) 
{ 
    c |= 0x20; // to lower 
    return (c < 'a' || c > 'z') 
    ? -1 
    : c - 'a'; 
} 

int main() 
{ 
    std::cout << getPosition('R'); 
    return 0; 
} 

Demo

関連する問題