Вопрос задан 26.10.2023 в 02:05. Предмет Информатика. Спрашивает Старых Даниил.

Нужно применить функцию, упростить код в Паскале program p1;var a, b, c, eps: real; fa, fc: real;

begin a:=0.0; b:=10.0; eps:=0.001; c:=(a+b)/2.0; fc:=c*c-4.0; while (abs(fc)>eps) do begin fa:=a*a-4.0; if ((fa>0.0) and (fc>0.0)) or ((fa<=0.0) and (fc<=p. 0.0)) then a:=c else b:=c; c:=(a+b)/2; fc:=c*c-4.0; end; writeln(c); end.​
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Бузмаков Ваня.

function f(x: real): real;

begin

   f := x * x - 4.0;

end;

var

   a, b, c, eps: real;

begin

   a := 0.0;

   b := 10.0;

   eps := 0.001;

   repeat

       c := (a + b) / 2.0;

       if f(a) * f(c) >= 0 then a := c else b := c

   until abs(f(c)) < eps;

   writeln(c);

end.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Ваш код выглядит как попытка использования метода бисекции для нахождения корня уравнения x24=0x^2 - 4 = 0. Однако есть несколько ошибок в условиях ветвлений. Вот исправленный вариант:

pascal
program p1; var a, b, c, eps: real; fa, fc: real; begin a := 0.0; b := 10.0; eps := 0.001; c := (a + b) / 2.0; fc := c * c - 4.0; while abs(fc) > eps do begin fa := a * a - 4.0; if ((fa > 0.0) and (fc > 0.0)) or ((fa <= 0.0) and (fc <= 0.0)) then a := c else b := c; c := (a + b) / 2; fc := c * c - 4.0; end; writeln(c); end.

Исправления включают в себя замену p.0 на 0.0 и изменение условия в строке if ((fa > 0.0) and (fc > 0.0)) or ((fa <= 0.0) and (fc <= 0.0)) для правильного определения, в какой половине интервала следует продолжить поиск корня.

0 0

Похожие вопросы

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

Последние заданные вопросы в категории Информатика

Задать вопрос