2016-04-19 7 views
2

だから私が抱えている問題は、27文字を含む配列があり、ユーザー入力に基づいて特定の文字を0から25まで表示する関数を書く必要があることです。配列から変数を取得する

配列は文字列定数である:

const string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

アイデアは、ユーザは、アレイ内の協賛文字を表示1及び25(int値)との間の値を入力することです。私が使用してこれをやって:

cout << ALPHABET[value]; 

私の質問は、これは配列を作成するappropreateな方法であると私は配列からこの方法で値を取得することができています。私の質問があり

const string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

int main() 
{ 
    int value; //Variable defining user entered value 
    cout << "Please enter a number between 0-25." << endl; 
    cin >> value; 
    if (value > 25) //If statement to display "-1" if number entered is past "Z" 
     cout << "-1" << endl; 
    else 
     cout << ALPHABET[value]; 

    return 0; 
} 
+0

'string'は' std :: string'を意味しています。本当に配列を作成していません。配列のようなアクセスを可能にするオブジェクトを作成しました。 –

+0

ステップ1:コードを書く。ステップ2:エラーを修正します。ステップ3:修正できないエラーについては、Stack Overflowに関する質問を投稿してください。あなたはステップ1にいるようですが、3になると元に戻ります。 – user657267

+0

オブジェクトが問題であるという事実はありますか? – Johnapples

答えて

1

これは、配列を作成するためのappropreate方法だと私は配列からこの方法で値を取得することができています。

それは文字列を使用して動作しますが:

int main() 
{ 
    const string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

    int num = -1; 
    while (num < 0 || num > 25) { 
     cout << "Enter number (0 - 25): "; 
     cin >> num; 
    } 

    cout << ALPHABET[num] << '\n'; 
} 

私は要素のシーケンスを含むためstd::vectorを使用したい:

vector<char> ALPHABET(26); 
iota(begin(ALPHABET), end(ALPHABET), 'A'); 
+0

私は入力と出力に関していくつかの明確さを加えるために私のコード全体を更新しました。それは私がそれを必要としないだけでエラーなしで正常に構築されます。 – Johnapples

+0

@Johnapples私は文字列を使用する私の答えを編集しました –

+0

'ベクトル'は 'string'または通常の配列よりもどのような利点がありますか?私は欠点だけ考えることができます。定義長を見てください。私はデフォルトとして 'vector'を推奨したいと思っていますが、確かに_everything_のためではありません。 –

0

は多分これはあなたが何をしたいです。 これには、配列を作成する正しい方法が含まれています。

#include <iostream> 

char ALPHABET[] = { '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', '\0' }; 
//the \0 means the end of the array of characters a.k.a. a string 

int main() 
{ 
    int value; //Variable defining user entered value 
    std::cout << "Please enter a number between 0-25." << std::endl; 
    std::cin >> value; 

    if (value > 25 || value < 0) //If statement to display "-1" if number entered is past "Z" 
     std::cout << "-1" << std::endl; 
    else 
     std::cout << ALPHABET[value]; 

return 0; 
} 

(アレイを作成するより多くの方法があります) チャーアルファベット[26] = { 'A'、 'B'、 'C​​'、 'D'、 'E'、 'F'」と同様「G」「H」「I」「J」「K」「L」「M」「N」「O」「P」「Q」「R」「 ' '0'};

26は、次のようにすることはできません。この配列の26文字

私は "using namespace std;"を使わず、 "std ::"の代わりに "cout"または "endl"という名前の2つの名前空間があると混乱する場合は、プログラムどちらを使いたいのか分かりません。

正しい名前空間のものであることを確認するには、名前空間の名前と2つのコロンを使用します。

関連する問題