Пытаюсь выполнить последнее задание на квартал, сбалансировать свою работу и другие занятия. Мне бы хотелось, чтобы дополнительная пара глаз рассказывала мне, где в мире мои утверждения выходят за рамки моей функции:
Это файл реализации. Связанный заголовок не выдает ошибок.
Я получаю следующие ошибки:
1.) В файле из tests.cpp: 7: 0: GBoard.cpp: 31: 2: error: ожидаемый неквалифицированный идентификатор перед "for"
for (int r=0; r<15; r++)
2.) GBoard.cpp: 31: 14: ошибка: «r» не называет тип
for (int r=0; r<15; r++)
Но я почти уверен, что 2 - это часть моего кода, каким-то образом находящаяся вне функции.
Вот мой код, части отредактированы, поэтому я не попадаю под плагиат:
bool Gfunction::makeMove(int redacted,int redacted,char secret)
{
if (redacted >= 0 && redacted < 15 && redacted >= 0 && redacted<15)
{
if (redacted() == UNFINISHED && function[redacted][redacted] == '.')
function[redacted][redacted] = secret;
return true;
}
else
{
return false;
}
int track = 0;
for(int r=0;r<15;r++)
{
track = 0;
for(int c=0;c<15;c++)
{
if (function[r][c] == secret)
{
track++;
if (track==5)
{
if (secret == 'x')
secret squirrel stuff = X_WON;
else
secret squirrel stuff = O_WON;
return true;
}
}
else
{
track = 0;
}
}
}
for(int r=0;r<15;r++)
{
track = 0;
for(int c=0;c<15;c++)
{
if (function[r][c] == secret)
{
track++;
if (track==5)
{
if (secret == 'x')
secret squirrel stuff = X_WON;
else
secret squirrel stuff = O_WON;
return true;
}
}
else
{
track = 0;
}
}
}
int r = 0, c = 0;
for(int redacted = 0; redacted<15; redacted++)
{
r = redacted;
c = 0;
track = 0;
while(r < 15 && c < 15)
{
if (function[r][c] == secret)
{
track++;
if (track == 5)
{
if (secret == 'x')
secret squirrel stuff = X_WON;
else
secret squirrel stuff = O_WON;
return true;
}
}
else
{
track = 0;
}
r++;
c++;
}
}
for(int redacted = 0; redacted<15; redacted++)
{
r=0;
c=redacted;
track=0;
while(r<15 && c<15)
{
if (function[r][c] == secret)
{
track++;
if (track == 5)
{
if (secret == 'x')
secret squirrel stuff = X_WON;
else
secret squirrel stuff = O_WON;
return true;
}
}
else
{
track = 0;
}
r++;
c++;
}
}
for(int redacted=0; redacted<15; redacted++)
{
r=redacted;
c=15-1;
track=0;
while(r<15 && c>=0)
{
if (function[r][c] == secret)
{
track++;
if (track == 5)
{
if (secret == 'x')
secret squirrel stuff = X_WON;
else
secret squirrel stuff = O_WON;
return true;
}
}
else
{
track = 0;
}
r++;
c--;
}
}
for(int redacted=15-1;redacted>=0;redacted--)
{
r=0;
c=redacted;
track=0;
while(r<15 && c>= 0)
{
if (function[r][c] == secret)
{
track++;
if (track == 5)
{
if (secret == 'x')
secret squirrel stuff = X_WON;
else
secret squirrel stuff = O_WON;
return true;
}
}
else
{
track = 0;
}
r++;
c--;
}
}
for(int r=0;r<15;r++)
{
for(int c=0;c<15;c++)
{
if (function[r][c] == '.')
{
secret squirrel stuff = UNFINISHED;
return true;
}
}
}
secret squirrel stuff = DRAW;
return true;
}
Вот почему мы должны структурировать код как логически, так и даже физически. Между прочим, моя ставка - что-то произошло между строками 76-101. Я подозреваю, что у этого for есть несбалансированные брекеты.
Мне пришлось удалить некоторые из моих комментариев / руководств, чтобы код правильно отображался в комментарии /, чтобы меня не поразили плагиатом. Спасибо за руководство. Я уже искал закрытие}, но не смог найти, где его не хватает.
Между прочим, большая часть кода, который вы показываете, все равно никогда не запустится, поскольку вы всегда вернетесь из функции внутри первого if else.
И может случиться так, что некоторые исправления содержат проблему, что, конечно, усложняет нам задачу. И это также хороший пример того, почему никогда не следует писать большие куски кода без тестирования. Пишите немного, стройте, тестируйте. Напишите следующий фрагмент, тест сборки. И так далее ... Так будет очень легко узнать, когда и где возникла проблема.





Дважды проверьте свои самые сокровенные утверждения if. Например:
if (track == 5)
{
if (secret == 'x')
secret squirrel stuff = X_WON;
else
secret squirrel stuff = O_WON;
return true;
}
может быть
if (track == 5)
{
if (secret == 'x')
secret squirrel stuff = X_WON;
else
secret squirrel stuff = O_WON;
return true;
}
или
if (track == 5)
{
if (secret == 'x')
secret squirrel stuff = X_WON;
else{
secret squirrel stuff = O_WON;
return true;
}
}
в зависимости от вашей логики алгоритма.
Ваш отступ в коде неправильный и непоследовательный. Пожалуйста, попробуйте исправить отступ, и проблема, вероятно, будет заключаться в закрытии
}где-то слишком много (что действительно трудно проверить в настоящее время).