Top.Mail.Ru
Ответы

Помогите пожалуйста с паскалем

Ребят, кто понимает, помогите пожалуйста с программой в паскале



+ еще условие, что значения x и y должны выводиться по 10 штук через enter
Вот, что я написал:
program labor;
uses crt;
var a,b,x,y:real;
label 1;
begin
clrscr;
x:= -12;
a:=0;
writeln(x);
while x<=6 do
begin

if x<-10
then y:=(52/cos(x))*sin(x)/cos(x)/x/x
else
if (x>=-10) and (x<=-4)
then goto 1
else
if (x>=-4) and (x<4)
then y:=(2/cos(2*x))*(63/17)
else y:=(cos(x)/exp(ln(exp(1))*x)) * (exp(ln(x)*0.1*x))/x;

writeln('x= ',x:5:5,' y= ',y:5:5);
if (x>= -10) and (x<= -4) then
begin
1:writeln('x= ',

x:5:5,' ”функция не определена­ ');
end;
if a=9 then begin
readln;
a:=0;
end;
x:=x+0.1;
a:=a+1;
end;

readln
end.

И дело в том, что на фрипаскале программа выполняется некорректно, а именно: пи значении -10 программа считает y, а по идее должна писать, что функция не определена. При значении -4 пишет, что функция не определна, хотя должен высчитываться y. И это происходит на фри паскале, но эту же программу я запустил в турбо паскале и все получается правильно, то есть пишет, что при -10 функция не определна, а при -4 выводит значение y.
Помогите мне пожалуйста. Мне нужно, чтобы программа работала правильно на фри паскале, т. к. проверяться она будет на нем.))

По дате
По рейтингу
Аватар пользователя
Новичок
11лет

Научи код писать

Источник: Оооо
Аватар пользователя
Мудрец
11лет

Как минимум - убери goto, плохой стиль, оно не для этого используется..

Аватар пользователя
Профи
11лет

Фри паскаля нету.. . набросал на АВСшке.... вроде работает.. . может что возьмешь себе:

function Resh(x: real): real;
begin
if x < -10
then Resh := (52 / cos(x)) * (tan(x) / (x * x))
else if x < -4 then Resh := ln(x) / cos(2 * x) + 72
else if x < 4 then Resh := (2 / cos(2 * x)) * (63 / 17)
else Resh := (cos(x) / exp(x)) * (exp(ln(x) / (0.1 * x)) / x)
end;

var
j, k: real;

begin
j := -12;
k := 6;
while j <= k do
begin
writeln(Resh(j));
j := j + 0.1;
end;
end.

Аватар пользователя
Оракул
11лет

вместо x:= -12; напиши x:= -12+1e-8;