Что значит ожидался оператор в паскале


var
xa,xb,xc,xd,ya,yb,yc,yd:real;
x1,x2,x3,y1,y2,y3:real;
pt1,pt2,pt3,s:real;
procedure r15(xa,xb,xc,xd,ya,yb,yc,yd:real);x 1,x2,x3,y1,y2,y3,pt1,pt2,pt3,s:real ;
unit Lib15;
interface
begin
x1:=xa;
if x1>xb then x1:=xb;
if x1>xc then x1:=xc;
if x1>xd then x1:=xd;
end;
begin
y2:=ya;
if y2<yb then y2:=yb;
if y2<yc then y2:=yc;
if y2<yd then y2:=yd;
end;
begin
x3:=xa;
if x3<xb then x3:=xb;
if x3<xc then x3:=xc;
if x3<xd then x3:=xd;
end;
begin
if x1=xa then y1:=ya;
if x1=xb then y1:=yb;
if x1=xc then y1:=yc;
if x1=xd then y1:=yd;
end;
begin
if y2=ya then x2:=xa;
if y2=yb then x2:=xb;
if y2=yc then x2:=xc;
if y2=yd then x2:=xd;
end;
begin
if x3=xa then y3:=ya;
if x3=xb then y3:=yb;
if x3=xc then y3:=yc;
if x3=xd then y3:=yd;
end;
pt1 := ((y2+(x2*((y3-y1)/(x3-x1))))-(y1+(x1*((y3-y1)/(x3-x1)))));
pt2 := ((x3+(y3*((y3-y1)/(x3-x1))))-(x1+(y1*((y3-y1)/(x3-x1)))));
pt3 := (sqr(x1-x3))/((sqr(y1-y3))+(sqr(x1-x3)));
s := pt1*pt2*pt3;
end;
writeln(‘Площать равна = ‘, s)
end.
![]()
Всё ещё ищете ответ? Посмотрите другие вопросы с метками pascal pascalabc.net или задайте свой вопрос.
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345
Ошибка в простой задаче: пишет ожидался оператор, а встретил else
Pascal. Ошибка в простой задаче: пишет ожидался оператор, а встретил else.
Среда программирования PascalABC.NET, по моей блок-схеме все верно, разделы операторов вроде все на месте, в чем может быть ошибка? Или у меня косоглазие просто?
![]()
Перед ЭТИМ else, еще 1 end должен быть.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.13.43306
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Что значит ожидался оператор в паскале
program kvadratn;
var A,B,C,x1,x2,D:integer;
begin;
Writeln(‘Дано уравнение вида Ax^2+Bx+C=0’);
Writeln(‘Задайте коэффициент A’);
Readln(A);
Writeln(‘Задайте коэффициент B’);
Readln(B);
Writeln(‘Задайте коэффициент C’);
Readln(C);
D:=B*B-4*A*C;
Write(‘Дискриминант равен: ‘);
Writeln(D);
x1:=((-B+sqrt(D))/2*A);
x2:=((-B-sqrt(D))/2*A);
Writeln(‘Корни: ‘);
if (D>=0) then writeln(x1); Writeln(x2);
else writeln(‘Корней нет’);
end.
Написал вот такую программку которая должна вычислять корни квадратного уравнения.
Но при запуске её, выдаёт ошибку и пишет что ожидался оператор и подчёркивает строчку "else writeln(‘корней нет’)
пожалуйста подскажите в чём проблема
Здесь легко и интересно общаться. Присоединяйся!
Ошибок море.
После begin и перед else точка с занятой недопустима.
Недопустимо присвоение целочисленным переменным чисел с плавающей запятой, а извлечение квадратного корня возвращает действительное значение.
Неверно написаны формулы вычисления корней x1 и x2.
Если дискриминант меньше нуля, то всё равно будет выполняться извлечение корня из этого отрицательного значения, что вызовет runtime ошибку.
program kvadratn;
var A,B,C,x1,x2,D:real;
begin
Writeln(‘Дано уравнение вида Ax^2+Bx+C=0’);
Writeln(‘Задайте коэффициент A’);
Readln(A);
Writeln(‘Задайте коэффициент B’);
Readln(B);
Writeln(‘Задайте коэффициент C’);
Readln(C);
D:=B*B-4*A*C;
Write(‘Дискриминант равен: ‘);
Writeln(D);
if D 0 then Writeln(x2);
end;
end.
1000лет и один день не программировал на паскале!
Посмотри третью строку снизу: после тhen два writeln, это допускается? Попробуй сделать один writeln или если тебе очень надо, составной оператор.
if (D>=0) then
begin
writeln(x1); Writeln(x2);
end;
else writeln(‘Корней нет’);
if D=0 then writeln(x1)
else if D>0
begin
Writeln(x1) ;
Writeln(x2) ;
end
else writeln(‘Корней нет’);
так правильнее будет . зачем тебе при D=0 выводить оба значения (они ведь одинаковые)
Пишет вот "Program1.pas(21) : Встречено ‘else’, а ожидался оператор"
- Вопрос задан более трёх лет назад
- 2665 просмотров
Как вы определили, что не работает?
У вас не Else не работает, а грамматических ошибок полно.
Не нужно ставить точку с запятой после первого
percent := 0.95
во втором pecent := 0.08; нужно писать percent а не pecent
в строке
writeln(‘Сумма в конце срока вклады: ‘,
result:6:2, руб.’);
у вас перед руб не хватает одинарной кавычки.
![]()
В прошлом, первом уроке о паскале мы обсудили структуру программы и самые первые операторы, а также служебные слова. Сегодня я расскажу про основные операторы, с помощью которых уже можно написать первую программу.
Первым, что мы рассмотрим — это оператор присваивания. Без этого оператора мы не сможем обойтись дальше.
Его функция — это присваивания значения переменной после каких либо действий или значения другой переменной.
X-это переменная, пусть она будет равна 2, в программе это будет выглядеть так:
Я думаю, что Вы уже заметили, что на деле она выглядит, как двоеточие со знаком равно (:=).
Операторы сложения, вычитания и умножения
На второе у нас пойдут операторы сложения, вычитания и умножения.
Сложение
С помощью данного оператора мы можем сложить два числа, в программе он пишется, как "+" без кавычек:
Тут мы переменной X присвоили 11, полученное сложением 5 и 6.
Вычитание
В этом операторе тоже ничего сложного нет, он выполняет вычитание двух чисел. В программе обозначается, как "-" без кавычек:
Выше мы x присвоили 3, полученное действием вычитания чисел 7 и 4.
Умножение
Данный оператор умножает два числа друг на друга, обозначается, как "*" также без кавычек:
В примере мы нашей переменной X присвоили число 16, полученное умножением восьми на два.
Вы уже заметили, что я написал не оператор деления, а операторы. Это связано с тем, что операторов деления — три, и все они работают по разному и выполняют разные действия.
1. Простое деление
Простое деление выполняется с помощью оператора вида /, он просто делит одно число на другое. Данный оператор работает только с типом real!
В примере мы x присвоили 9,6, посредством деления 48 на 5.
2. Целочисленное деление
Данное делит число только на цело, то есть при таком способе деления невозможно получить десятичную или периодическую дробь. В программе пишется, как "div" без кавычек. Данный оператор работает только с типом integer!
В данном примере x у нас будет равно в итоге 9, а не 9,6, как это должно получиться при нормальном обычном делении.
3. Получение остатка
Данный способ позволяет получить не само число, которое должно получится, а остаток. Допустим при делении 48 на 5 мы получим 3 при таком способе деления. В программе обозначается, как "mod" без кавычек:
Теперь давайте попробуем написать простейший калькулятор, который выполняет с нашими двумя числами все действия сразу.
Итак, сегодня мы познакомились с операторами сложения, вычитания, умножения, тремя операторами деления, а также оператором присваивания. После сегодняшнего урока вы уже можете создавать свои простейшие программы на счёт.
Ожидался оператор PASCAL
program kvadratn;
var A,B,C,x1,x2,D:integer;
begin;
Writeln(‘Дано уравнение вида Ax^2+Bx+C=0’);
Writeln(‘Задайте коэффициент A’);
Readln(A);
Writeln(‘Задайте коэффициент B’);
Readln(B);
Writeln(‘Задайте коэффициент C’);
Readln(C);
D:=B*B-4*A*C;
Write(‘Дискриминант равен: ‘);
Writeln(D);
x1:=((-B+sqrt(D))/2*A);
x2:=((-B-sqrt(D))/2*A);
Writeln(‘Корни: ‘);
if (D>=0) then writeln(x1); Writeln(x2);
else writeln(‘Корней нет’);
end.
Написал вот такую программку которая должна вычислять корни квадратного уравнения.
Но при запуске её, выдаёт ошибку и пишет что ожидался оператор и подчёркивает строчку «else writeln(‘корней нет’)
пожалуйста подскажите в чём проблема

Ошибок море.
После begin и перед else точка с занятой недопустима.
Недопустимо присвоение целочисленным переменным чисел с плавающей запятой, а извлечение квадратного корня возвращает действительное значение.
Неверно написаны формулы вычисления корней x1 и x2.
Если дискриминант меньше нуля, то всё равно будет выполняться извлечение корня из этого отрицательного значения, что вызовет runtime ошибку.
program kvadratn;
var A,B,C,x1,x2,D:real;
begin
Writeln(‘Дано уравнение вида Ax^2+Bx+C=0’);
Writeln(‘Задайте коэффициент A’);
Readln(A);
Writeln(‘Задайте коэффициент B’);
Readln(B);
Writeln(‘Задайте коэффициент C’);
Readln(C);
D:=B*B-4*A*C;
Write(‘Дискриминант равен: ‘);
Writeln(D);
if D 0 then Writeln(x2);
end;
end.

if D=0 then writeln(x1)
else if D>0
begin
Writeln(x1) ;
Writeln(x2) ;
end
else writeln(‘Корней нет’);
так правильнее будет . зачем тебе при D=0 выводить оба значения (они ведь одинаковые)

if (D>=0) then
begin
writeln(x1); Writeln(x2);
end;
else writeln(‘Корней нет’);
1000лет и один день не программировал на паскале!
Посмотри третью строку снизу: после тhen два writeln, это допускается? Попробуй сделать один writeln или если тебе очень надо, составной оператор.