Помощь - Поиск - Пользователи - Календарь
Полная версия: Функция
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Ibmsystem
Помогите дописать прогу!!
задача такова:
составить программу для вычисления значений F(x)= tg(x/2)+cos(x) на отрезке (а,b) в точках Х[i]=a+h[i]
,где h = (a-b)/m , НЕОБХОДИМО ИСПОЛЬЗОВАТЬ ФУНКЦИЮ ДЛЯ ВЫЧИСЛЕНИЯ ЗНАЧЕНИЙ, ПРОЦЕДУРУ ДЛЯ ВЫВОДА РЕЗУЛЬТАТОВ НА ПЕЧАТЬ.
a,b,h,m(целое) НЕОБХОДИМО ИСПОЛЬЗХОВАТЬ КАК ПЕРЕМЕННЫЕ, но при этом вводить или еще както задавать значения надо а=PI/2, b= Pi, m=20.
вот сопсна чяво надоти
а вот сопсна чаво есть:

program lab;
uses crt;
Func= function (x:Real): Real;
var i,m:integer; x,a,b,h;
begin
readln (a);readln (b);readln (m);
h := (b-a)/m;
x:=a
for i=1 to m do
begin Func= (sin(x/2)/cos(x/2))+cos(x);
writeln (x,Func);
x:=x+h
end;
readln;
end.
главная проблема Invalid nymeric format - короче беда с числом пи
2 пр непойму куда вставить и как написать процедуру вывода результатов, а так же с функцией мне кажеться чет нето.
ЕСЛИ НеВЛОМ непросто напишите а please чуть чуть поясните что да куда.
ХОТЯ Я БУДУ РАД ЛЮБОЙ ПОМОЩИ.

или вот добавляю есчо
еще я подумал и вот
Uses CRT;

type

Func = Function (x: Real) : Real;

Procedure PrintFunc (XPos: Byte; F:Func);

var

x,a,b,h : Real; i,m : Integer;

begin {PrintFunc}

readln (a,b,m);

x:=a;

for i := 1 to m do

begin

F := (sin(x/2)/cos(x/2))+cos(x);

h:=b-a)/m

x := a+h ;

GotoXY (XPos, WhereY) ;

WriteLn (x:5:3, F(x):18:5);

end

end.
Да что нетак?
guf
Так как A,B вещественного типа, то PI в любом случае не будет восприниматься в операторе Readln как вещественное. Можно конечно вводить не Pi, Pi/2 , а 180, 90 тогда проблем не возникнет. Вывод можно сделать такким образом:

Program Lab;
Uses crt;
Var h,a,b:real;
m:integer;

Function Func(x:real):real;
Begin
Func:=(sin(x)/cos(x))+cos(x);
End;

Procedure PrintFunc;
var
i:integer;x:real;
begin
Write('BBEDUTE HACHALO DIAnA3OHA ');readln(a);
Write('BBEDUTE KOHEU, DIAnA3OHA ');readln(b);
Write('BBEDUTE LL|AF BbI4UC/|EHUR ');readln(m);

x:=a;
for i:= 1 to m do
begin
h:=(b-a)/m;
x:=x+h;
WriteLn (x:5:2,'___', func(x):5:2);
end;
readkey;
end;

Begin
clrscr;
PrintFunc;
end.

Ibmsystem
даже незнаю в задании строго указано ввод только чисел pi/2
pi, 20 беда в том как это сделать.
есть ли в паскале возможность перевести вводимые чила в радианах в градусы?
guf
Program Lab;
Uses crt;
Var h:real;
m:integer;

Function Func(x:real):real;
Begin
Func:=(sin(x)/cos(x))+cos(x);
End;

Function Radian(s:string):real;
Var I:byte;
Begin
for i:=1 to length(s) do
begin
if (s[i]='p') and (s[i+1]='i') then Radian:=180;
if (s[i+2]='/') and (s[i+3]='2') then Radian:=180/2;
if (s[i+2]='/') and (s[i+3]='3') then Radian:=180/3;
if (s[i+2]='/') and (s[i+3]='4') then Radian:=180/4;
if (s[i+2]='/') and (s[i+3]='5') then Radian:=180/5;
if (s[i+2]='/') and (s[i+3]='6') then Radian:=180/6;
if (s[i+2]='/') and (s[i+3]='7') then Radian:=180/7;
if (s[i+2]='/') and (s[i+3]='8') then Radian:=180/8;
if (s[i+2]='/') and (s[i+3]='9') then Radian:=180/9;
end;
End;

Procedure PrintFunc;
var
i:integer;x:real;a,b:string;
begin
Write('BBEDUTE HACHALO DIAnA3OHA ');readln(a);
Write('BBEDUTE KOHEU, DIAnA3OHA ');readln(b);
Write('BBEDUTE LL|AF BbI4UC/|EHUR ');readln(m);
radian(a);
radian(b);
x:=radian(a);
for i:= 1 to m+1 do
begin
h:=(radian(b)-radian(a))/m;
WriteLn (x:5:2,'___', func(x):5:2);
x:=x+h;
end;
readkey;
end;

Begin
clrscr;
PrintFunc;
end.



Вот, но только вывод в радианах. Но ввод в радианахsmile.gif Времени довести до идеала нет, поэтому только так..
Ibmsystem
СПАСИБО КОЛОСАЛЬНОЕ!!
наконец-то я понимать начал.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.