Выдаёт ошибку (Встречено 'else', а ожидался оператор) Что делать? Program R ; var a,b,c,x,D,x1,x2:real...

Тематика Информатика
Уровень 5 - 9 классы
x1 вычисление корней квадратное уравнение дискриминант синтаксис исправление ошибок.
0

Выдаёт ошибку (Встречено 'else', а ожидался оператор) Что делать? Program R ; var a,b,c,x,D,x1,x2:real ; begin readln (a,b,c) ; D:= a(xx)+bx+c ; if D>0 then x1:= (-b+sqrtD)/(2a) ; x2:= (-b-sqrtD)/(2a) ; else ('Корней нет') ; if D=0 then x:= (-b+sqrtD)/(2a) ; writeln ('x1=;x1) ; writeln ('x2=;x2) ; end.

avatar
задан 2 месяца назад

3 Ответа

0

Ошибка возникает из-за неправильного синтаксиса в условной конструкции. В данном случае после оператора if D>0 then x1:= (-b+sqrtD)/(2*a) необходимо использовать оператор else, а не просто указывать строку 'Корней нет'. Исправленный код должен выглядеть примерно так:

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

Теперь условия if и else стоят в правильном порядке, и код должен корректно выполняться.

avatar
ответил 2 месяца назад
0

В вашей программе на языке Pascal есть несколько ошибок, которые приводят к появлению сообщения об ошибке "Встречено 'else', а ожидался оператор". Давайте разберем их и предложим исправления.

  1. Ошибка в вычислении дискриминанта (D):

    Вы вычисляете дискриминант неправильно. Дискриминант квадратного уравнения вычисляется как D := b*b - 4*a*c;.

  2. Неправильное использование if и else:

    • После if оператора, если вы хотите использовать else, необходимо заключить оба варианта в блоки begin . end, если они содержат более одного оператора.
    • В вашем коде else используется без соответствующего if, что и вызывает ошибку.
  3. Ошибка в вычислении корней:

    • Вы используете sqrtD, но не инициализируете эту переменную. Вместо этого, используйте sqrt(D).
  4. Проблемы с выводом:

    • В writeln вы неправильно используете кавычки для вывода переменных. Должно быть writeln('x1=', x1);.

Исправленный код программы будет выглядеть следующим образом:

program R;
var
  a, b, c, x, D, x1, x2: real;
begin
  readln(a, b, c);
  D := b*b - 4*a*c;  // Исправлено вычисление дискриминанта

  if D > 0 then
  begin
    x1 := (-b + sqrt(D)) / (2*a);
    x2 := (-b - sqrt(D)) / (2*a);
    writeln('x1=', x1);
    writeln('x2=', x2);
  end
  else if D = 0 then
  begin
    x := -b / (2*a);
    writeln('x=', x);
  end
  else
    writeln('Корней нет');
end.

Объяснение исправлений:

  • Вычисление дискриминанта: Теперь дискриминант вычисляется правильно, как D := b*b - 4*a*c;.
  • Условия if-else: Добавлены блоки begin . end для условий, чтобы избежать ошибок и правильно обработать каждую ветвь.
  • Вычисление квадратного корня: Использование sqrt(D) для вычисления корней.
  • Вывод значений: Исправлен синтаксис writeln для корректного вывода значений переменных.

Эти изменения помогут избежать ошибок и правильно решить квадратное уравнение.

avatar
ответил 2 месяца назад
0

Чтобы исправить ошибку, необходимо переместить блок кода "else ('Корней нет');" внутрь блока "if D>0 then x1:= (-b+sqrtD)/(2a);" перед строкой "x2:= (-b-sqrtD)/(2a);" .

avatar
ответил 2 месяца назад

Ваш ответ

Вопросы по теме