Помогите дописать прогу!! задача такова: составить программу для вычисления значений 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
12.04.2008 23:03
Так как 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
12.04.2008 23:14
даже незнаю в задании строго указано ввод только чисел pi/2 pi, 20 беда в том как это сделать. есть ли в паскале возможность перевести вводимые чила в радианах в градусы?
guf
13.04.2008 0:19
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.
Вот, но только вывод в радианах. Но ввод в радианах Времени довести до идеала нет, поэтому только так..
Ibmsystem
13.04.2008 2:35
СПАСИБО КОЛОСАЛЬНОЕ!! наконец-то я понимать начал.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.