
Вопрос задан 01.10.2023 в 19:21.
Предмет Информатика.
Спрашивает Filippova Arina.
Что не так сделал подскажите Program Roots; Var a, b, c, d, x, x1, x2: real; begin
WriteLn('Введите коэфициенты квадратного уравнения: '); Write('a=');ReadLn(a); Write('b=');ReadLn(b); Write('c=');ReadLn(c); if a=0 then writeln('Ошибка ввода даных'); writeln('Повторите ввод'); end else begin WriteLn('Введите коэфициенты квадратного уравнения: '); Write('a=');ReadLn(a); Write('b=');ReadLn(b); Write('c=');ReadLn(c); if a>0 then if b=0 then if c=0 then WriteLn('Любое x - решение') else WriteLn('Нет решений') else begin x:=-c/b; WriteLn ('x=',x) end else begin d:=b*b-4*a*c; if d<0 then WriteLn ('Нет вещественных корней') else begin x1:=(-b+sqrt(d))/2/a; x2:=(-b-sqrt(d))/2/a; WriteLn('x1=', x1); WriteLn('x2=', x2) end end end.

Ответы на вопрос

Отвечает Попова Дарья.
Это не точно но я думаю нужно везде ";"
Объяснение:
После каждого Enter нужно писать.



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Ваш код содержит несколько ошибок:
Ваш код имеет смешанный порядок выполнения и повторяющийся код. Лучше объединить одинаковые части кода в одно место.
У вас есть лишний блок else в середине кода, который делает код менее структурированным.
Ваши условия проверки a=0 и a>0 не включают обработку случая a<0.
Вы забыли добавить символ ";" после "if a=0 then writeln('Ошибка ввода даных')".
Ошибки сравнения a>0 и d<0 - должно быть a > 0 и d < 0.
Не стоит выводить "Введите коэфициенты квадратного уравнения" дважды. Можно это сделать один раз перед проверкой a.
Исправленный код:
pascalProgram Roots; Var a, b, c, d, x1, x2: real; begin WriteLn('Введите коэфициенты квадратного уравнения: '); Write('a='); ReadLn(a); Write('b='); ReadLn(b); Write('c='); ReadLn(c); if a = 0 then begin writeln('Ошибка ввода данных'); writeln('Повторите ввод'); end else begin d := b * b - 4 * a * c; if d < 0 then WriteLn('Нет вещественных корней') else if d = 0 then begin x1 := -b / (2 * a); WriteLn('x1=', x1); end else begin x1 := (-b + sqrt(d)) / (2 * a); x2 := (-b - sqrt(d)) / (2 * a); WriteLn('x1=', x1); WriteLn('x2=', x2); end; end; end.
Теперь код структурирован лучше и корректно обрабатывает различные случаи.


Похожие вопросы
Топ вопросов за вчера в категории Информатика

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

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

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

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

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

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

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

Информатика 23
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili