Насколько я помню, в паскале невозможно реализовать бесконечный цикл, поэтому решение будет слегка притянуто за уши. Например если вы введете число из 9001 символа, программа будет работать неккоректно. Для выхода из цикла используется 'метка'.
a, counter, Summa : integer; Label Transfer; Begin writeln('Введите число'); readln(a); counter := 1; counterTw0 := counterTwo + 1; while counter < 9000 Do begin counter := counter +1; if (a div counter) < 0 then Transfer else counterTwo := counterTwo + 1; else; Goto Transfer;
//Узнали, что в числе counterTwo символов
while counter < counterTwo Do Summa := Summa + ((a div counter) mod 10);
Function F(x: real): real; begin F := 3 * sin(x) + 2 * sqr(x) - 1; end;
var a, b, h, x, Fa, Fx: real;
begin Write('Введите через пробел начало интервала, конец и шаг: '); Readln(a, b, h); x := a; Fa := F(a); repeat Fx := F(x); if Fx = 0 then Writeln('Найден корень ', x:0:3) else if Fx * Fa < 0 then Writeln('Найден интервал изоляции корня (', a:0:3, ';', x:0:3, ')'); a := x; Fa := Fx; x := x + h until x > b; end.
Тестовое решение:
Введите через пробел начало интервала, конец и шаг: 0 1.95 0.15 Найден интервал изоляции корня (0.150;0.300)
Введите через пробел начало интервала, конец и шаг: -5 5 0.1 Найден интервал изоляции корня (-1.500;-1.400) Найден интервал изоляции корня (0.200;0.300)
Насколько я помню, в паскале невозможно реализовать бесконечный цикл, поэтому решение будет слегка притянуто за уши. Например если вы введете число из 9001 символа, программа будет работать неккоректно. Для выхода из цикла используется 'метка'.
a, counter, Summa : integer;
Label Transfer;
Begin
writeln('Введите число');
readln(a);
counter := 1;
counterTw0 := counterTwo + 1;
while counter < 9000 Do
begin
counter := counter +1;
if (a div counter) < 0 then Transfer
else counterTwo := counterTwo + 1;
else;
Goto Transfer;
//Узнали, что в числе counterTwo символов
while counter < counterTwo Do
Summa := Summa + ((a div counter) mod 10);
Summa := Summa + (a mod 10);
writeln(Summa);
end.
begin
F := 3 * sin(x) + 2 * sqr(x) - 1;
end;
var
a, b, h, x, Fa, Fx: real;
begin
Write('Введите через пробел начало интервала, конец и шаг: ');
Readln(a, b, h);
x := a; Fa := F(a);
repeat
Fx := F(x);
if Fx = 0 then Writeln('Найден корень ', x:0:3)
else
if Fx * Fa < 0 then
Writeln('Найден интервал изоляции корня (', a:0:3, ';', x:0:3, ')');
a := x; Fa := Fx; x := x + h
until x > b;
end.
Тестовое решение:
Введите через пробел начало интервала, конец и шаг: 0 1.95 0.15
Найден интервал изоляции корня (0.150;0.300)
Введите через пробел начало интервала, конец и шаг: -5 5 0.1
Найден интервал изоляции корня (-1.500;-1.400)
Найден интервал изоляции корня (0.200;0.300)