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

Выдает ошибку, что поставить? Встречено 'else', а ожидался оператор (строка 19) var a, b, c, d, x1, x2: real; begin writeln ('ax2+bx+c=0'); write ('a='); readln (a); write ('b='); rea...

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

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

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

Ярослав Смирнов'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.2k12 золотых знаков41 серебряный знак70 бронзовых знаков

Ожидался оператор 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.

Сообщения без ответов | Активные темы

Автор Сообщение

Turgenev1337

Заголовок сообщения: Не могу найти ошибку в программе

СообщениеДобавлено: 10 фев 2017, 10:43 

Не в сети
Начинающий


Зарегистрирован:
14 дек 2016, 21:01
Сообщений: 3
Cпасибо сказано: 1
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации

var a,b,c,d,f:integer;
begin
Writeln(‘Введите натуральное число:’);
readln(a);
b:=10;
while b<=a do begin
b:=b*10;
while (c<=10) and (d<=10) do
c:=a div 10;
d:=a div b;
f:=a mod 10;
if c-d=0 then
writeln(‘Да’);
if f-d=0 then
writeln(‘Да’); end;
else
begin
Writeln(‘Нет’);
end.

Пишет: Встречено ‘else’, а ожидался оператор

Вернуться к началу

Профиль  

Cпасибо сказано 

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Не могу найти ошибку

в форуме Дифференциальное исчисление

Veinar

10

623

20 апр 2014, 16:45

Не могу найти ошибку

в форуме Дискретная математика, Теория множеств и Логика

Th1e4

1

279

24 дек 2016, 16:00

Не могу найти ошибку в ДУ Бернулли

в форуме Дифференциальные и Интегральные уравнения

AlexOblom

3

686

17 авг 2018, 19:35

Несостыковка. не могу найти ошибку

в форуме Комбинаторика и Теория вероятностей

Vlasovn109

4

573

15 фев 2017, 22:06

Не могу найти ошибку в суждениях

в форуме Алгебра

ghsrt

6

510

16 апр 2017, 00:14

Не могу найти ошибку в модели Simulink

в форуме MATLAB

Elena1000

4

410

20 фев 2017, 14:11

Реакция опор( не могу найти ошибку)

в форуме Специальные разделы

djeak11

1

403

22 сен 2016, 23:25

Не могу найти ошибку (интегрирование иррациональных ф-ий)

в форуме Интегральное исчисление

lina_06

1

112

09 апр 2022, 04:29

Не могу найти ошибку. Дисперсия получается отрицательная

в форуме Теория вероятностей

Dushescbx

0

199

25 ноя 2017, 20:07

Не могу найти ошибку (противоречие) в своих доказательствах

в форуме Начала анализа и Другие разделы школьной математики

K_A

2

276

14 фев 2019, 19:08

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group

Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru

Русская поддержка phpBB


Главная



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

    Добавить

    Отмена

  • Ваш ответ

    Понравилась статья? Поделить с друзьями:

    Читайте также:

  • Встречено begin а ожидался идентификатор как исправить
  • Встреча на эльбе ошибка купить
  • Встраиваемая микроволновка бош ошибка е 3
  • Вставьте пропущенные буквы исправьте орфографические ошибки расставьте пропущенные знаки препинания
  • Вставьте контейнер для гущи ошибка delonghi

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии