Вход

Просмотр полной версии : Задачка на Pascal


LASS0
11.03.2009, 17:04
Помогите пожалуйста решить задачку двумя способами, через цикл repeat until
и через for

--------------------------------------------------
Дано a=2.8 , b=-0.3 , c=4
Вычислить и напечатать значение функции:

y=(a+b*x)/sqrt(x*x+4) ,если x<1.4
y=a*(x*x)+b*x+c ,если x=1.4
y=a/x+exp(a*b) ,ecли x>1.4

где x изменяется в интервале от 0.8 до 2.8 с шагом 0.2
--------------------------------------------------

Через while do смог написать, а через repeat until
и через for незнаю :(




Program z1;
uses crt;
var a,b,c,x,y:real;

begin
a:=2.8;
b:=-0.3;
c:=4;
x:=0.8;
while x<2.8 do
begin if x<1.4 then
y:=(a+b*x)/sqrt(x*x+4)
else
if x=1.4 then
y:=a*(x*x)+b*x+c
else
y:=a/x+exp(a*b);
writeln ('x=',x:8:2,' y=',y:8:2);
x:=x+0.2;
end;
readkey;
end.

eLWAux
11.03.2009, 17:20
через while:
program _while;
uses crt;
const a = 2.8;
b = -0.3;
c = 4;
x0 = 0.8;
xE = 2.8;
h = 0.2;
var
x,y:double;

begin
x:=x0;
clrscr;
while x<xE do begin
if x<1.4 then y:=-1 else
if x=1.4 then y:=0 else
if x>1.4 then y:=1;
writeln('x =',x:3:3,', y =',y:3:3);
x:=x+h;
end;

readln;
end.

eLWAux
11.03.2009, 17:21
через repeat..until:
program _for;
uses crt;
const a = 2.8;
b = -0.3;
c = 4;
x0 = 0.8;
xE = 2.8;
h = 0.2;
var
x,y:double;
begin
x:=x0;
clrscr;
repeat
if x<1.4 then y:=-1 else
if x=1.4 then y:=0 else
if x>1.4 then y:=1;
writeln('x =',x:3:3,', y =',y:3:3);
x:=x+h;
until x>xE;

readln;
end.

RedAlert
11.03.2009, 17:21
eLWAux опередил :)