Проблема с условным оператором «Else», кто-нибудь может помочь?
Видел, что подобных вопросов много, но всё же задам его ещё раз (Далее моя программа, место проблемы помечено комментарием):
Var Mass:array [1..10] of real; i,k:integer; a,b:real;
Begin
Readln(Mass[1],Mass[2],Mass[3],Mass[4],Mass[5],Mass[6],Mass[7],Mass[8],Mass[9],Mass[10]);
For i:=1 to 10 do
a:=a+Mass[i];
a:=a/10;
Repeat
Begin
inc(i);
If Mass[i]>Mass[i+1] then
b:=Mass[i]-a;
Mass[i]:=b;
Mass[i+1]:=Mass[i+1]+a;
inc(k);
End;
Else //Вот этот момент
Begin
b:=Mass[i+1]-a;
Mass[i+1]:=b;
Mass[i]:=Mass[i]+a;
inc(k);
End;
Until i<>10
Writeln(k);
End.
После заполнения массива выскакивает ошибка о том, что "Встречено Else, а ожидался оператор"
Если (по правилу) убрать точку с запятой перед Else, то ругаться он уже начинает на её отсутствие
К слову, такая проблема встречается не только с циклом Repeat, но и с остальными, если это конечно является полезной информацией.
Буду благодарен за помощь
Автоматическое выравнивание кода выдаёт такой результат.
Var Mass: array [1..10] Of real;
i,k: integer;
a,b: real;
Begin
Readln(Mass[1],Mass[2],Mass[3],Mass[4],Mass[5],Mass[6],Mass[7],Mass[8],Mass[9],Mass[10]);
For i:=1 To 10 Do
a := a+Mass[i];
a := a/10;
Repeat
Begin
inc(i);
If Mass[i]>Mass[i+1] Then
b := Mass[i]-a;
Mass[i] := b;
Mass[i+1] := Mass[i+1]+a;
inc(k);
End;
Else //Вот этот момент
Begin
b := Mass[i+1]-a;
Mass[i+1] := b;
Mass[i] := Mass[i]+a;
inc(k);
End;
Until i<>10
Writeln(k);
End.
MaxsimMix, ещё после Repeat уберите Begin. насколько я понял, тот End что перед Else должен относиться к Begin после If. Корректное форматирование кода помогает быстро найти проблему