Помогите найти ошибку. Срочно

0 голосов
23 просмотров

Помогите найти ошибку. Срочно


image
image

Информатика (132 баллов) | 23 просмотров
0

на фото плохо видно текст, точнее вообще не видно, можете мне в телеграм скинуть, я помогу

Дан 1 ответ
0 голосов

Во-первых - не имейте моду писать всё в одну строчку. Сейчас Вы в этом убедились, поскольку не можете найти ошибку. Объясняю, как надо:

  1. if <условие> then
  2. // оператор

Никаких if <условие> then // оператор, - забудьте про это навсегда.

Это Вам не тернарный оператор <условие> ? <оператор_при_true> : <оператор_при_false>.

Во-вторых - Вы засовываете логическую переменную в блок условия. Объясняю:

  1. if D > 0 then
  2. x1 := ... and x2 := ...

Вы не можете таким образом объявлять переменные. Каждое действие - в новой строке, а также должно оканчиваться точкой с запятой. Как должно быть написано правильно:

  1. if D > 0 then
  2. begin
  3. x1 := ...
  4. x2 := ...
  5. end // здесь точка с запятой не нужна, поскольку далее следует блок else
  6. else
  7. if D = 0 then
  8. x := ... // здесь тоже запятая не нужна
  9. else
  10. write('...');

В-третьих - обезопасьте себя и поставьте порядок операций в поиске корней дискриминанта:

  1. x1 := (-b + sqrt(D)) / (2*a) // без скобок выполнится деление на 2, а потом умножение на a

Так же стоит сделать и с x := ...

Если ошибка не пропадает - пишите в комментариях её описание (ошибки).

(5.6k баллов)
0

хороший структурированый ответ, молодец