0

これは私の魔方陣の最後の関数であり、何らかの理由で "'[int]' for array subscript" というエラーが表示されますが、それが何を意味するのかわかりません。行う。

bool Square::is_magic()
{
    for (i = 0; i < size-1; i++)
    {
        if (sum_row[i] != sum_row[i+1])
            return false;

    if (sum_col[i] != sum_col[i+1])
        return false;
        }

    if (sum_row[0] != sum_col[0])
        return false;

    if (sum_row[0] != sum_maindiag[0])
        return false;

    if (sum_row[0] != sum_other[0])
        return false;

    return true;
}
4

2 に答える 2

4

わかりました誰もがいつの間にか初心者でした。C++ に焦点を当てた本を 1 冊か 2 冊読むことを強くお勧めします。(個人的には「Learn c++ in 21 days」でプログラミングを学びました。多くの人は文句を言いますが、私にとっては良いスタートでした)。

そして、コードのために。それが必要なものかどうかわからない場合は、次のようにする必要があります。

bool Square::is_magic()
{
   int i;
   for (i = 0; i < size-1; i++)
   {
       if (sum_row[i] != sum_row[i+1])
          return false;

       if (sum_col[i] != sum_col[i+1])
          return false;
   }

   if (sum_row[0] != sum_col[0])
         return false;

   if (sum_row[0] != sum_maindiag[0])
         return false;

   if (sum_row[0] != sum_other[0])
         return false;

   return true;

}

いくつかのコメント:

  1. if,for,while ステートメントの後の 1 つのコマンドに角かっこは必要ありません

  2. if -> else if -> else の使用を提案します。ここでは、何か正しくないことを見つけるとすぐに関数から飛び出すので問題ではありませんが、コードを続行する場合は、必要がなくても他のステートメントをチェックします。

  3. いくつかのスタイルに慣れ、独自のスタイルを作成するか、誰かのスタイルをコピーしてください。個人的には、ブラケットを次のように使用します。

    if (something != somethingElse){ doSomeNastyThings(); doEvenMore(); }

幸運を..

編集:ステートメントの変数宣言intを追加し、ブラケットを更新しました(最後の3つのif-sがインデックスを使用していないため、賢いアイデアです)

于 2011-02-12T01:00:31.843 に答える
1

ステートメントが次のようにフォーマットされている場合:

if (condition) {
  do_this()
}

このようではありません:

{
if (condition)
  do_this()
}

コードをフォーマットする方法は、2 行の後に for ループを閉じることですが、これはあなたがやろうとしていることではないと思います (後で var i を参照しているため)。

于 2011-02-12T01:01:31.507 に答える