#c #continue
#c #продолжить
Вопрос:
Я ищу способ заменить оператор continue в этой функции. В правилах указано, что они не могут быть использованы, но у меня возникают трудности с реализацией замены, которая не приводит к неправильной работе остальной части кода.
bool neighCheck (int i, int j, int a[][COLLENGTH])
{
bool neighbourOnFire;
int x, y, neighX, neighY, curreNeigh;
/* Bool set up to change after neighbours looped*/
neighbourOnFire = false;
/* The neighbours -looping from -1 -> 1 to get index of each neighbour*/
for (x = -1; x < 2; x ) {
for (y = -1; y < 2; y ) {
/* Disregards current (middle) cell*/
if ((x == 0) amp;amp; (y == 0)) {
continue;
}
/* Get indexes of the neighbour we're looking at */
neighX = i x;
neighY = j y;
/* Checks for edges*/
if (neighX >= 0 amp;amp; neighY >= 0 amp;amp; neighX < ROWLENGTH
amp;amp; neighY < COLLENGTH) {
/* Get the neighbour using the indexes above */
curreNeigh = a[neighX][neighY];
/* Test to see if the neighbour is burning */
if (curreNeigh == fire) {
neighbourOnFire = true;
continue;
}
}
}
}
return neighbourOnFire;
}
Комментарии:
1. Почему бы и нет
if ((x != 0) || (y != 0))
, и еще один блок кода?2. Второй
continue
не нужен, потому что это последний оператор.3. Может быть, использовать
goto
? 😉4.
neighbourOnFire = true;
return true;
в этом случае может быть заменен на.
Ответ №1:
Первый continue;
можно заменить, инвертировав условие и поместив код rest внутри if
оператора.
Второй continue;
можно просто удалить, потому что после этого нет кода для выполнения.
bool neighCheck (int i, int j, int a[][COLLENGTH])
{
bool neighbourOnFire;
int x, y, neighX, neighY, curreNeigh;
/* Bool set up to change after neighbours looped*/
neighbourOnFire = false;
/* The neighbours -looping from -1 -> 1 to get index of each neighbour*/
for (x = -1; x < 2; x ) {
for (y = -1; y < 2; y ) {
/* Disregards current (middle) cell*/
if (!((x == 0) amp;amp; (y == 0))) {
/* Get indexes of the neighbour we're looking at */
neighX = i x;
neighY = j y;
/* Checks for edges*/
if (neighX >= 0 amp;amp; neighY >= 0 amp;amp; neighX < ROWLENGTH
amp;amp; neighY < COLLENGTH) {
/* Get the neighbour using the indexes above */
curreNeigh = a[neighX][neighY];
/* Test to see if the neighbour is burning */
if (curreNeigh == fire) {
neighbourOnFire = true;
}
}
}
}
}
return neighbourOnFire;
}