Здесь используется for и if. Это удовлетворяет условие?
for можно заменить на while или repeat. Это ли имеется ввиду? Program tabzx;
type typefunc = function (x,t:real):real;
var x,a,b,h,t:real;
varfunc:typefunc;
{$F+}
function z1 (x,t:real):real;
begin z1:=(ln(x)*ln(x)*ln(x)+x*x)/sqrt(x+t); end;
function z2 (x,t:real):real;
begin z2:=sqrt(x+t)+1/x; end;
function z3 (x,t:real):real;
begin z3:=cos(x)+t*sin(x)*sin(x); end;
{$F-}
procedure tabfunc (varfunc:typefunc; a,b,h,t:real);
var k,n:integer; x:real;
begin
n:=trunc ((b-a)/h);
for k:=0 to n do
begin x:=a+k*h;
if x<0.5 then varfunc:=z1
else
if x>0.5 then varfunc:=z3
else varfunc:=z2;
writeln (x:3:2,' - ',varfunc(x,t):4:3);
end;
end;
Begin
write ('enter [a,b] '); readln (a,b);
write ('enter h, t '); readln (h,t);
tabfunc (varfunc,a,b,h,t);
readln;
End.
Считает правильно, но при х<=0 не работает :[