2016-09-13 2 views
-1

Фатальная ошибка при попытке компиляции «до» не ожидал, нашел «еще», не могу показаться, чтобы получить, как это исправитьPascal ошибка: пока не ожидается, еще нашел

......

begin 

divisor:= 2; 
cont:= 0; 
write(i,':'); 

repeat 

    if (i mod divisor = 0) then 
    begin 
write(' divisor '); 
divisor:=succ(divisor); 
cont:=succ(cont); 
     end; 

    else 
divisor:=succ(divisor); 

until (cont = 6) or (divisor>i div 2) 

writeln(); 
    end; 
end; 
end. 
+0

Если вы правильно форматировать код, вы, возможно, видели ошибку самостоятельно. И хорошо, сообщения об ошибках обычно правильные. –

+0

Вы также можете прочитать один из моих старых [ответов] (http://stackoverflow.com/a/32933320/5043424) об одинаковой проблеме. –

ответ

5

Проблема в том, что у вас есть точка с запятой после end; до else. Это в основном завершает заявление if, поэтому else становится else до repeat (что явно недействительно). Исправление удалить точку с запятой после end;

Смотрите это для справки: http://wiki.freepascal.org/Else

Fix:

if (i mod divisor = 0) then 
    begin 
     write(' divisor '); 
     cont:=succ(cont); 
    end 
    else 
    divisor:=succ(divisor);