Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Соединить воедино две программы

Автор: romaric 12.06.2015 15:29

Есть программа отделяющая корни уравнений:

uses crt;
var
a,b,x1,x2,y1,y2,h,w,y,e:real;
n,k:integer;


function f(x:real):real;
begin
f:=Sqr(x)-(0.1*exp(x))-5;
end;

begin
a:=-3;
b:=7;
h:=0.5;
clrscr;
k:=0; x1:=a; x2:=x1+h; y1:=f(x1); y2:=f(x2);
while x2<b do

begin y2:=f(x2);
if y1*y2<0 then
begin inc (k);
writeln(k,'-й корень[',x1:4:1,';',x2:4:1,']')
end;
x1:=x2; x2:=x1+h; y1:=y2;
end;

repeat until keypressed


end.



Есть еще кусок кода, уточняющий корни:

repeat
writeLn('Введите точность в пределах от 0 до 1 eps=');
readln(eps);
until (eps >0) and (eps <1);
clrscr;
{n := 0;}
repeat
c:=(f(b)*a-f(a)*b)/(f(b)-f(a));
if f(a)*f© > 0 then a := c
else b := c;
{Inc(n)}
until abs((f(b)*a-f(a)*b)/(f(b)-f(a))-c)<eps;
x := c;
writeLn('Корень уравнения x=', x:10:7);
write('Для выхода нажмите Enter');
{writeLn('Количество итераций = ',n);}



Никак не могу слепить их воедино, чтобы программа сначала отделяла корни, а потом их уточняла.

По одиночке они работают, когда соединяю их прога зависает, видимо получается бесконечный цикл.