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

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

Форум «Всё о Паскале» _ Задачи _ Табулирование функции

Автор: Breid 27.12.2005 21:25

Задание: Протабулировать функцию s(t). Функция s(t)=8t на отрезке от 0 до 1, s(t)=8 если 1<=t<=3, s(t)=-4t+20, если t>3. Аргумент функции t меняется от 0 до 5 с шагом 0,2.


program;
uses crt;
var x,f:real;i:integer;


function func(t:real;var f:real):boolean;
begin
func:=false;
if (t>=0) and (t<1) then
begin
f:=8*t;
func:=true;
end
else if (t>=1) and (t<=3) then
begin
f:=8;
func:=true;
end
else if (t>3) then
begin
f:=4*t+20;
func:=true;
end;

end;

BEGIN
clrscr;
writeln('x':10,'f(x)':10);
for i:=0 to 25 do begin
x:=0.2*i;
if func(x,f) then writeln(x:10 :1,f:10 :1)
else writeln(x:10 :1,'*':10);
if i=20 then begin
writeln('Press any key to continue');
readkey;
end;
end;
READLN
END.


это программа работает, ну вот только преподователю не понравилось что я использовал логический оператор "boolean", ну так собственно в этом то и вопрос, можно ли как то это дело упростить, т.е. сделать без "boolean"? подскажите плз
п.с. я в паскале новичок, поэтому просьба сильно не пинать smile.gif а эту задачу делал просто по похожему примеру...
заранее спасибо

Автор: klem4 27.12.2005 21:31

так ?

uses crt;
const
a = 0;
b = 5;
h = 0.2;
var
t : single;

function f(x : single) : single;
begin
if (x > 0) and (x < 1) then f := 8 * x
else if (x >= 1) and (x <= 3) then f := 8
else f := -4 * x + 20;
end;

begin
clrscr;
t := a;
while(t <= b + h/2) do begin
writeln('t = ',t:5:2,' f(t) = ',f(t):5:2);
t := t + h;
end;
readln
end.

Автор: volvo 27.12.2005 21:56

dry.gif Ну, и сколько раз одно и то же будет поститься? Может вообще, FAQ, Поиск и все предыдущие сообщения удалим? Будем каждый раз заново все решать... Что за тяга к изобретению велосипеда????

Элементарно зайти в поиск, набрать "табулирование", получить больше 10 ссылок, и поменять функцию на свою... НЕТ же, нужно чтоб каждому решили заново, ИМЕННО его задачу dry.gif