Ошибка паскаль встречено else а ожидался оператор

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

Встречено ‘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.5k12 золотых знаков43 серебряных знака72 бронзовых знака

задан 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.5k12 золотых знаков43 серебряных знака72 бронзовых знака

Студворк — интернет-сервис помощи студентам

Написал программу:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
program klxz3;
var
x,y,z1,z2:real;
begin
writeln('Введите x и y');
readln(x,y);
if (sqr(x)-y<-2) and (x>0) then
z1:=sqrt(exp(x))-5;
z2:=sin(sqr(x)-y)-sqr(y);
writeln(z1,z2);
else 
z1:=(2/3*ln(x))-exp(y*ln((abs(sin(x)))));
writeln('z1=',z1:2:3);
end.

Только вот ошибку выдаёт «Встречено else а ожидался оператор».Посмотрел темы форума, так и не нашёл решения.Погуглил-пишут что надо перед else удалить «;» , но я их удалил и тогда выдаётся ошибка «Встречено Else, а ожидалось ;».
Если закомментировать часть кода с блоком Else то программа работает,правда не совсем как надо. Если закомментировать после if последние две строчки-тоже работает, но опять же не так как надо.В чём дело так и не могу понять.

Пишет вот «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.

почему?


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

    более трёх лет назад

  • 4420 просмотров

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

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

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

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

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

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

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

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


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

07 июн. 2023, в 11:58

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

07 июн. 2023, в 11:45

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

07 июн. 2023, в 10:19

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

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

Выдаёт ошибку (Встречено ‘else’, а ожидался оператор) Что делать?

Program R ; var a, b, c, x, D, x1, x2 : real ; begin readln (a, b, c) ; D : = a * (x * x) + b * x + c ; if D> ; 0 then x1 : = ( — b + sqrtD) / (2 * a) ; x2 : = ( — b — sqrtD) / (2 * a) ; else (‘Корней нет’) ; if D = 0 then x : = ( — b + sqrtD) / (2 * a) ; writeln (‘x1 = ; x1) ; writeln (‘x2 = ; x2) ; end.

На этой странице находится вопрос Выдаёт ошибку (Встречено ‘else’, а ожидался оператор) Что делать?, относящийся к категории
Информатика. По уровню сложности данный вопрос соответствует знаниям
учащихся 5 — 9 классов. Здесь вы найдете правильный ответ, сможете
обсудить и сверить свой вариант ответа с мнениями пользователями сайта. С
помощью автоматического поиска на этой же странице можно найти похожие
вопросы и ответы на них в категории Информатика. Если ответы вызывают
сомнение, сформулируйте вопрос иначе. Для этого нажмите кнопку вверху.


Главная



  • 0




Встречено ‘else’, а ожидался оператор(в чём ошибка)
var a: integer;
begin
Writeln (‘Введите число’);
readln(a);
if a mod 2=0
then
Writeln(‘Число чётное’);
else
Writeln(‘Число нечётное’);
readln;
end.




Лев Симинеев


Вопрос задан 7 августа 2019 в


1 — 4 классы,  

Информатика.

  • Комментариев (0)

Добавить

Отмена


  • 1
    Ответ (-а, -ов)

    • По голосам
    • По дате



    • 0


    Как и говорил, убираем «;» после последнего оператора до else

    var a: integer;

    begin

    Writeln (‘Введите число’);

    readln(a);

    if a mod 2=0

    then

    Writeln(‘Число чётное’)

    else

    Writeln(‘Число нечётное’);

    readln;

    end.

    Отмена




    Олеся Биджнева


    Отвечено 7 августа 2019

    • Комментариев (0)

    Добавить

    Отмена

  • Ваш ответ

    Понравилась статья? Поделить с друзьями:
  • Ошибка папки ftp не удается передать элемент
  • Ошибка парсинга что это такое
  • Ошибка пароварка миле f11
  • Ошибка папки ftp 550
  • Ошибка парктроников киа оптима