Не думаю, что кто-нибудь будет вдаваться в подробности такого не читаемого кода, поэтому предлагаю вам решить проблему самостоятельно, открыв для себя такое чудесное слово, как "
Отладчик".
Все очень просто: поставьте
после каждого цикла
while и
for (на всякий случай) точки остановки. Запустите программу и каждую точку, на которой остановится отладчик, просто пропустите клавишей
F5. В итоге, как только программа "зациклится", вы будете знать, до какой точки вы не дошли, следовательно, виновен будет цикл, стоящий до этой точки остановки.
Ну, а потом уже ставите точку остановки перед этим циклом и клавишей
F10 по шагам разбираетесь,почему условие цикла не выполняется.
UPD:
Присмотрелся к коду:
for (i = 0; i < 81; i++) <-----
{
...
i--; <-----
while(arr1[i,0,8] > 0 && i > 0)
{
i--; <-----
}
if (i != 0)
{
i--; <-----
}
Уловили? =)