// PascalABC.NET 3.1, сборка 1214 от 09.04.2016 function f(x:real):=3+x*(4+x*(5+x*6));
begin var a:=-1.0; var b:=0.0; var eps:=1e-6; var fa:=f(a); var x,fx:real; if abs(fa)<=eps then Writeln('x=',a,',y=',fa) else begin var fb:=f(b); if abs(fb)<=eps then Writeln('x=',b,',y=',fb) else if fa*fb>0 then Writeln('На указанном интервале корней нет') else repeat x:=(a + b)/2; fx:=f(x); if abs(fx)<=eps then Writeln('x=', x, ', y=', fx) else if fa*fx>0 then a:=x else b:=x; until abs(fx)<=eps end end.
Результат выполнения программы: x=-0.790308952331543, y=-6.74849237825015E-07
Не понравилась реализация, переделал, специально сохранив основу предыдущего решения.
const legal = ['0'..'9', 'A'..'F', 'a'..'f'];
var s: string; i: integer; IsHex: Boolean;
begin writeln('Введите строку: '); readln(s); i := 1; IsHex := True; while (i <= length(s)) and IsHex do begin if not (s[i] in legal) then IsHex := False; i := i + 1 end; if isHex then writeln('Введенная строка является шестнадцатиричным числом.') else writeln('Введенная строка не является шестнадцатиричным числом.'); end.
Тестовое решение:
Введите строку: 58bfa Введенная строка является шестнадцатиричным числом. Введите строку: 1054Acg Введенная строка не является шестнадцатиричным числом.
function f(x:real):=3+x*(4+x*(5+x*6));
begin
var a:=-1.0;
var b:=0.0;
var eps:=1e-6;
var fa:=f(a);
var x,fx:real;
if abs(fa)<=eps then Writeln('x=',a,',y=',fa)
else begin
var fb:=f(b);
if abs(fb)<=eps then Writeln('x=',b,',y=',fb)
else
if fa*fb>0 then Writeln('На указанном интервале корней нет')
else
repeat
x:=(a + b)/2;
fx:=f(x);
if abs(fx)<=eps then Writeln('x=', x, ', y=', fx)
else
if fa*fx>0 then a:=x else b:=x;
until abs(fx)<=eps
end
end.
Результат выполнения программы:
x=-0.790308952331543, y=-6.74849237825015E-07