Функция магического квадрата C ++ - PullRequest
0 голосов
/ 12 февраля 2011

Это моя последняя функция для моего магического квадрата, и по какой-то причине она выдает мне ошибку, что есть «[int]» для индекса массива », но я не знаю, что это значит, если кто-то может помочь объяснить, чтоЯ должен сделать.

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;
}

Ответы [ 2 ]

4 голосов
/ 12 февраля 2011

Хорошо, все когда-то были новичками. Я действительно рекомендую вам прочитать одну или две книги, посвященные c ++. (Лично я изучал программирование с помощью «Learn c ++ за 21 день», многие жалуются, но это было хорошее начало для меня).

И для кода. Не уверен, что это то, что вам нужно, оно должно выглядеть так:

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. Вам не нужны скобки для 1 команды после оператора if, for, while,

  2. Предложите использовать if -> else if -> else. Здесь это не имеет значения, поскольку вы выпрыгиваете из функции, как только обнаруживаете, что что-то не так, но в случае продолжения работы с кодом вы проверяете другие операторы, даже если в этом нет необходимости.

  3. Привыкайте к какому-то стилю, создавайте свой или копируйте чей-либо. Лично я использую скобки таким образом:

    если (что-то! = Что-то еще) { doSomeNastyThings (); doEvenMore (); }

Удачи ..

Редактировать: добавлено объявление переменной int для оператора, обновлены квадратные скобки (умная идея, так как последние 3 if-s не используют индекс)

1 голос
/ 12 февраля 2011

Если операторы отформатированы так:

if (condition) {
  do_this()
}

не так:

{
if (condition)
  do_this()
}

То, как вы форматируете свой код, закрывает цикл for после двух строкЯ думаю, это не то, что вы пытаетесь сделать (поскольку вы имеете в виду var i впоследствии).

...