


Почему пишет встречено else, а ожидался оператор
var
a: array [0..255] of string;
d,b,c: array [0..255] of integer;
x, i, count: integer;
begin
writeln('Введите количество студентов в группе');
readln(x);
for i := 1 to x do
begin
writeln('Фамилия ', i, ' студента');
readln(a[i]);
writeln ('Студент увлекается спортом? Да-1/Нет-0');
readln (b[i]);
writeln ('Студент увлекается искусством? Да-1/Нет-0');
readln (c[i]);
end;
count:=0;
for i:=1 to x do
begin
if ((b[i])=1) and ((c[i])=1) then
begin
count:=count+1;
writeln (count);
end;
writeln('Студенты, увлекающиеся и спортом, и искусством:');
for i := 1 to count do
writeln(a[i]);
else
begin
writeln;
writeln ('Нет студентов, увлекающихся и спортом и исскустовм');
end;
end;
end.

Ошибка "Встречено else, а ожидался оператор" возникает из-за того, что в коде отсутствует закрывающая скобка после блока условия if ((b[i])=1) and ((c[i])=1) then. Из-за этого программа не может определить, к какому блоку относится оператор else. Чтобы исправить ошибку, нужно добавить закрывающую скобку после блока условия if ((b[i])=1) and ((c[i])=1) then и перед оператором else. Вот исправленный код:
var
a: array [0..255] of string;
d,b,c: array [0..255] of integer;
x, i, count: integer;
begin
writeln('Введите количество студентов в группе');
readln(x);
for i := 1 to x do
begin
writeln('Фамилия ', i, ' студента');
readln(a[i]);
writeln ('Студент увлекается спортом? Да-1/Нет-0');
readln (b[i]);
writeln ('Студент увлекается искусством? Да-1/Нет-0');
readln (c[i]);
end;
count:=0;
for i:=1 to x do
begin
if ((b[i])=1) and ((c[i])=1) then
begin
count:=count+1;
writeln (count);
end
else
begin
writeln;
writeln ('Нет студентов, увлекающихся и спортом и исскустовм');
end;
end;
writeln('Студенты, увлекающиеся и спортом, и искусством:');
for i := 1 to count do
writeln(a[i]);
end.
Результат программы
