IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Функция
Ibmsystem
сообщение 12.04.2008 14:02
Сообщение #1





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


Помогите дописать прогу!!
задача такова:
составить программу для вычисления значений 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.
Да что нетак?


Сообщение отредактировано: Ibmsystem - 12.04.2008 14:30
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
guf
сообщение 12.04.2008 19:03
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 28
Пол: Мужской

Репутация: -  0  +


Так как 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.



--------------------
Плагины для FL Studio и Pro Tools
Учусь на ошибках компилятора...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ibmsystem
сообщение 12.04.2008 19:14
Сообщение #3





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


даже незнаю в задании строго указано ввод только чисел pi/2
pi, 20 беда в том как это сделать.
есть ли в паскале возможность перевести вводимые чила в радианах в градусы?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
guf
сообщение 12.04.2008 20:19
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 28
Пол: Мужской

Репутация: -  0  +


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 Времени довести до идеала нет, поэтому только так..


--------------------
Плагины для FL Studio и Pro Tools
Учусь на ошибках компилятора...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ibmsystem
сообщение 12.04.2008 22:35
Сообщение #5





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


СПАСИБО КОЛОСАЛЬНОЕ!!
наконец-то я понимать начал.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 18:39
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"