Ошибка паскаль встречено 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.6k12 золотых знаков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.6k12 золотых знаков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.

почему?


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

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

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

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

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

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

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

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

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

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

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


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

Сбер

Ростов-на-Дону

от 170 000 ₽

25 июн. 2023, в 03:49

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

25 июн. 2023, в 03:19

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

25 июн. 2023, в 02:28

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

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


Главная



  • 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)

    Добавить

    Отмена

  • Ваш ответ

    Введение

    Паскаль — один из наиболее популярных языков программирования. Как и при любом языке, при написании программ на Паскале, могут возникнуть ошибки. В данной статье мы рассмотрим одну из самых распространенных ошибок — ошибка ‘else’.

    Ошибка ‘else’

    Ошибки с оператором ‘else’ могут произойти во время написания условий ветвления. Ветвление — это то, что происходит, когда программа принимает решение, какой код нужно выполнить в зависимости от значения переменной. Отсутствие ‘else’ или его неправильное использование может привести к непредсказуемым результатам или полной неработоспособности программы.

    Пример

    Рассмотрим пример:

    program example;
    begin
      writeln('Введите число:');
      readln(number);
      if (number > 5) then
         writeln('Число больше 5')
      else
         writeln('Число меньше или равно 5');
    end.
    

    В данном примере мы запрашиваем у пользователя число и, если оно больше 5, выводим сообщение ‘Число больше 5’. В противном случае выводится сообщение ‘Число меньше или равно 5’. Однако, если пример будет запущен при вводе числа, равного 5, то ничего не будет выведено. В данном случае, нужно добавить условие, что если число равно 5, нужно выводить сообщение об этом:

    program example;
    begin
      writeln('Введите число:');
      readln(number);
      if (number > 5) then
         writeln('Число больше 5')
      else if (number = 5) then
         writeln('Число равно 5')
      else
         writeln('Число меньше 5');
    end.
    

    Отметим, что если бы мы забыли добавить ‘else’ во втором условии (или забыли добавить само условие), то в случае, если число равно 5, программа бы завершилась с ошибкой.

    Итоги

    В Паскале условный оператор if может содержать только одно условие и один оператор. Ошибка с оператором ‘else’ часто возникает из-за неправильной формулировки условия. Если вы не добавили оператор ‘else’ или использовали его неправильно, программы не будут работать правильно. Надеюсь, данный материал поможет вам избежать этой ошибки в будущем!

  • Ошибка парковочный ассистент шкода рапид
  • Ошибка паскаль exitcode 1
  • Ошибка парковочный ассистент тигуан 2020 что делать
  • Ошибка парсинга страницы forkplayer что это
  • Ошибка парковочный ассистент тигуан 2019 что делать