2012-05-05 6 views
-4

これは、各しかし、それがコンパイルされないバック0に戻される第6及び第13のスロットを除いて、その中に4を有していなければならない、私は14個のスロットを有するアレイのために書かれたコードです。私がここで間違ったことを誰かが知っていますか?私の配列のコーディングに何が問題なのですか?

using namespace std; 
#include <iostream> 

const int MAX = 14; 

int main() 
{ 
    void printArray(); 

    system ("pause"); 
    return 0; 
} 

void startArray (int beadArray[MAX]) 
{ 
    for(int i=0; i<MAX; i++) 
    { 
     beadArray[i]=4; 
    } 
    beadArray[6]=0; 
    beadArray[13]=0; 
} 

//**********************************************// 

void printArray() 
{ 
    startArray (int beadArray[MAX]); 
    for(int i=0; i<MAX; i++) 
    { 
     cout<<i; 
    } 
} 
+3

恐ろしいです。 :)このコードには多くの問題があります。 – ervinbosenbacher

+1

何かがコンパイルされないときの素晴らしいことは、コンパイラがなぜ**を言うのかということです。そして、あなたは[ビルドされていない]ターゲットを実行する必要はありません。この情報**はあなたの役に立つ**だけでなく、受け入れ可能な質問をするために必要な情報**です。 –

+0

この質問は、コードレビューに関するもので、[コードレビュー](codereview.stackexchange.com)に適しているため、話題にはならないようです。 –

答えて

3

いくつかの修正ミス:あなたはoutsiteそれを使用したい場合は

  • はstartArray()関数呼び出しの外で、あなたの配列を宣言します。
  • あなたは
  • coutの< < beadArray [i]の代わりに、coutの< <のI

それを変更したい場合は、参照として配列を渡します。

using namespace std;  
#include <iostream> 

const int MAX = 14; 

int main()  
{ 
    void printArray(); 
    system ("pause"); 
    return 0; 
} 

void startArray (int &beadArray[MAX]) 
{ 
    for(int i=0; i<MAX; i++) 
     beadArray[i]=4; 
    beadArray[6]=0; 
    beadArray[13]=0; 
} 

//**********************************************// 

void printArray() 
{ 
    int beadArray[MAX]; 
    startArray (beadArray); 

    for(int i=0; i<MAX; i++) 
     cout<<beadArray[i]; 
} 
+0

ありがとうございます! 私は上記のすべてからの入力に従って修正を行いましたが、今は何も出力しません。私のコードはgabitzishから上記のコードのように見えます。 – chrisvx930

+0

ところで、 'int&beadArray [MAX]'は参照の配列です。あなたは 'int(&beadArray)[MAX]'を意味しました。 – chris

7
startArray (int beadArray[MAX]); 

あなたはbeadArrayを宣言し、ワンステップでそれを使用しようとしています。あなたはそれを使用する前にそれを宣言する必要があります

int beadArray[MAX]; 
startArray (beadArray); 

をまた他の問題の多くを持っている:<iostream>#includeがまだdをされていないため

  • using namespace std;は効果がありません。グローバルusing namespace std;も使用しないでください。

  • system ("PAUSE");を置き換える必要があります。私は個人的に使用します。

    cin.syncを(); cin.get();

  • main()のコンパイラは、関数についてはわかりません。 main()の前に、プロトタイプを配置する必要があります。

    void printArray(); void startArray(int []);

  • main()void printArray();と言っています。関数を呼び出すときは、関数名と引数を使用します。

    printArray();

  • printArray()の場合、beadArray [i]の代わりにiを出力しています。スペーシングもありません。

  • グローバル定数は、使用する悪いことです。

私はこのようなルックスを持っていた固定コード:

#include <iostream> 

const int MAX = 14; 

void startArray (int (&beadArray)[MAX]); 
void printArray(); 

int main() 
{ 
    printArray(); 

    std::cout << "\n\nPress enter to continue..."; 
    std::cin.sync(); 
    std::cin.get(); 
    return 0; 
} 


void startArray (int (&beadArray)[MAX]) 
{ 
    for(int i=0; i<MAX; ++i) 
     beadArray[i]=4; 

    beadArray[6]=0; 
    beadArray[13]=0; 
} 

void printArray() 
{ 
    int beadArray[MAX]; 
    startArray (beadArray); 

    for(int i=0; i<MAX; i++) 
     std::cout << beadArray[i] << ' '; 
} 

私は一定のままでしたが、あなたはそれを置き換えるために行うことができますがたくさんあります。

+0

は 'void startArray(int beadArray [MAX])'ではない配列をコピーし、渡された配列を変更しませんか?参照やポインタを取る必要はありませんか? – EdChum

+0

@EdChum、それは私のためにうまくいった。私は実際に配列への参照を使ったことがないことを認めなければならない。私はほとんどすべての配列を渡してきました(私のクラスではマイナスですが、参照やポインタで渡すことについて言及されていないところではベクトルやポインタに向いています)。 – chris

+0

もう一度お返事ありがとうございます! – chrisvx930

関連する問題