Паскаль абс ошибка ожидался оператор

Выдает ошибку, что поставить?

Встречено ‘else’, а ожидался оператор (строка 19)

var a, b, c, d, x1, x2: real;
begin
  writeln ('ax2+bx+c=0');
  write ('a=');
  readln (a);
  write ('b=');
  readln (b);
  write ('c=');
  readln (c);
  d := (b*b)+(4*a*c);
  if (a = 0) then
    write ('Уравнение не является квадратным.')
  else
    if (d > 0) then
      d:= sqrt(d);
      x1 := (-b+d)/2;
      x2 := (-b-d)/2;
      write ('x1=', x1, 'x2=', x2);
    else
      if (d = 0) then
        x1 := (-b-d)/2
        write ('Единственный x=', x1)
      else
        write ('Корней нет');
end.

Kromster's user avatar

Kromster

13.6k12 золотых знаков43 серебряных знака73 бронзовых знака

задан 17 янв 2019 в 18:10

Eloren's user avatar

1

Простые условия должны записываться в виде

if .. then
  одна строчка кода
else
  одна строчка кода

Если же вам нужно выполнить несколько строк или блоков кода по условию, то следует обернуть их в begin .. end вот так:

if .. then
begin
  ..
  несколько строк кода
  ..
end
else
begin
  ..
  несколько строк кода
  ..
end

Для вашего случая:

if (d > 0) then
begin                         <<-- тут нужно начать блок
  d:= sqrt(d);
  x1 := (-b+d)/2;
  x2 := (-b-d)/2;
  write ('x1=', x1, 'x2=', x2);
end                           <<-- тут нужно закончить блок
else
                              <<-- тут блок begin-ом начинать не нужно, т.к. if это уже блок
  if (d = 0) then
  begin                       <<-- тут нужно начать блок
    x1 := (-b-d)/2
    write ('Единственный x=', x1)
  end                         <<-- тут нужно закончить блок
  else
    write ('Корней нет');

ответ дан 18 янв 2019 в 4:32

Kromster's user avatar

KromsterKromster

13.6k12 золотых знаков43 серебряных знака73 бронзовых знака

Пишет вот «Program1.pas(21) : Встречено ‘else’, а ожидался оператор»

program test;

var
  sum: real;
  percent: real;
  period: integer;
  
  profit: real;
  result: real;
begin
  writeln('Вычисление дохода по в кладу в банке');
  writeln;
  
  write('Сумма (руб.) ->');
  readln(sum);
  write('Срок вклада (дней) ->');
  readln(period);
  
  if sum > 5000 then
         percent := 0.95;
      else
         pecent := 0.08;
  profit := sum * percent/365 * period;
  result := sum +profit;
  
  writeln('Сумма в конце срока вклады: ',
           result:6:2, руб.');
  writeln('Доход: ', profit:6:2, ' руб.');
  write('Для завершения работы нажмите <Enter>');
  readln;
end.

почему?


  • Вопрос задан

  • 4454 просмотра

Пригласить эксперта

Как вы определили, что не работает?

У вас не Else не работает, а грамматических ошибок полно.
Не нужно ставить точку с запятой после первого
percent := 0.95

во втором pecent := 0.08; нужно писать percent а не pecent

в строке
writeln(‘Сумма в конце срока вклады: ‘,
result:6:2, руб.’);

у вас перед руб не хватает одинарной кавычки.

Неужели так сложно внимательнее быть?

if sum > 5000 then
percent := 0.95;
else
перед ‘else’ ‘;’ не ставится


  • Показать ещё
    Загружается…

22 сент. 2023, в 23:30

6500 руб./за проект

22 сент. 2023, в 23:29

10000 руб./за проект

22 сент. 2023, в 23:14

8000 руб./за проект

Минуточку внимания

Ошибка Паскаль: ожидался оператор

При работе с языком программирования Паскаль, существует одна из самых распространенных ошибок — «ожидался оператор». Она возникает из-за неправильной структуры кода.

Причины возникновения ошибки

Ошибка «ожидался оператор» возникает тогда, когда компилятор ожидает оператор (команду, инструкцию) после определенного символа, однако находит что-то другое, например, переменную или константу. Наиболее распространенными причинами возникновения этой ошибки являются:

  • Неправильная последовательность инструкций. Например, когда оператор присваивания идет после условного оператора, который закончился словом «end», а не «;».
  • Отсутствие точки с запятой в конце оператора, что приводит к тому, что компилятор ожидает следующий оператор, а его нет.
  • Неправильное написание синтаксиса, когда вместо оператора указывается что-то другое, например, переменная или константа.

Решение проблемы

Для решения ошибки «ожидался оператор» необходимо проанализировать код и определить, где отсутствует оператор. Для этого можно проверить правильность написания синтаксиса и последовательности инструкций. При изменении кода следует не забывать ставить точки с запятой в конце операторов, а также следить за корректным использованием скобок и условных операторов.

Еще одним важным моментом при решении проблемы «ожидался оператор» является использование отладчика. Он позволяет пошагово выполнять код, исследовать значения переменных и выявлять места ошибок.

Заключение

Ошибка «ожидался оператор» является одной из наиболее распространенных при работе с языком программирования Паскаль. Она может быть вызвана различными причинами, такими как неправильное написание синтаксиса или последовательности инструкций. Решить проблему можно путем анализа кода, использования отладчика и следования правилам языка программирования.

  • Кто управляет вашими мыслями?
  • Помогите! Не могу найти когда появилась первая ОС для интернет сервера и её название?
  • Хочу забрать свою девушку к себе как сделать? ей 16 лет
  • А у вас после пьянки возникает желание бросить пить навсегда?
  • Жить или притворяться, что живешь?
  • Что ждет меня в течение недели?
  • Черный перезаряжаемый вибратор типа «Rabbit» J2 — 23 см.
  • Как использовать карту e-cadastre.ru

Ожидался оператор 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 выводить оба значения (они ведь одинаковые)

Cutie

if (D>=0) then
begin
writeln(x1); Writeln(x2);
end;
else writeln(‘Корней нет’);

1000лет и один день не программировал на паскале!
Посмотри третью строку снизу: после тhen два writeln, это допускается? Попробуй сделать один writeln или если тебе очень надо, составной оператор.

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

Помогите пожалуйста не могу разобраться почему когда я добавила 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
программа пишет «ожидался оператор»

var
xa,xb,xc,xd,ya,yb,yc,yd:real;
x1,x2,x3,y1,y2,y3:real;
pt1,pt2,pt3,s:real;

begin
write(‘Введите координаты точки А: ‘);
Readln(xa,ya);
write(‘Введите координаты точки B ‘);
Readln(xb,yb);
write(‘Введите координаты точки C ‘);
Readln(xc,yc);
write(‘Введите координаты точки D ‘);
Readln(xd,yd);

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.

Ошибка в простой задаче: пишет ожидался оператор, а встретил else

Pascal. Ошибка в простой задаче: пишет ожидался оператор, а встретил else.

Среда программирования PascalABC.NET, по моей блок-схеме все верно, разделы операторов вроде все на месте, в чем может быть ошибка? Или у меня косоглазие просто?

user avatar

Перед ЭТИМ else, еще 1 end должен быть.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками pascal pascalabc.net или задайте свой вопрос.

Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345

Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Ошибка в pascal (Встречен конец файла, а ожидался оператор) Помогите, что нужно дописать чтобы ошибка исчезла?

Функция : function sqrt1 (a, b, c : real) : real ; begin if (2 * a + b — c) < ; 0 then writeln (‘ complex number ‘) — проверка на комплексные числа else sqrt1 : = sqrt(2 * a + b — c) ; end ;

Если вам необходимо получить ответ на вопрос Ошибка в pascal (Встречен конец файла, а ожидался оператор) Помогите, что нужно дописать чтобы ошибка исчезла?, относящийся
к уровню подготовки учащихся 5 — 9 классов, вы открыли нужную страницу.
В категории Информатика вы также найдете ответы на похожие вопросы по
интересующей теме, с помощью автоматического «умного» поиска. Если после
ознакомления со всеми вариантами ответа у вас остались сомнения, или
полученная информация не полностью освещает тематику, создайте свой вопрос с
помощью кнопки, которая находится вверху страницы, или обсудите вопрос с
посетителями этой страницы.

Понравилась статья? Поделить с друзьями:
  • Паскаль x a 3 sqrt9 какая ошибка допущена
  • Паронимы это речевая или грамматическая ошибка
  • Паскаль clrscr ошибка
  • Паронимы это лексическая ошибка
  • Парцелляция речевая ошибка