Скорее всего, надо использовать функции, а не процедуры... Но это не имеет особого значения, для процедур все будет точно так же...
A и B - это так называемые формальные параметры... То есть, ты говоришь компилятору примерно следующее: "я когда-нибудь передам в эту функцию значения... Какие бы они не были, произведи над ними те же действия, что и над этими формальными параметрами..." И пишешь код:
Function F(a, b: real): real; begin F := (a + b) / abs(a - b); { <-- не забудь проверить знаменатель на 0 !!! } end;
Теперь ты должен вызвать эту функцию, но вызываешь-то ты ее с фактическими параметрами... И вот тут срабатывает то, что ты говорил компилятору: вместо формальных параметров подставляются фактические значения, и функция вычисляется именно с этими значениями...
U=(f(x,y)+f(x+y,x-y)) / f(sqr(x)-y,sqr(x)*x); { <--- Вызов функции }
forMator
29.09.2006 22:45
Большое СПАСИБО!!
forMator
29.09.2006 23:37
Вроде написал...Но не уверен что правильно!!!ПРоверьте аожалуйста!!
Код
Program primer; Var x,y:integer; u:real; Function F(a,b:real):real; begin F:=(a+b)/abs(a-b); end; begin writeln('vvod x,y'); readln(x,y); u:=(f(x,y)+f(x+y,x-y))/f(sqr(x)-y,sqr(x)*x); writeln('u=',u:3:2); readln; end.
Bokul
29.09.2006 23:51
Цитата
Вроде написал...Но не уверен что правильно!!!ПРоверьте аожалуйста!!
Цитата
не забудь проверить знаменатель на 0
Попробуй ввести в твою прогу два одинаковых числа, например 3 и 3. Увидишь для чего надо делать проверку.
forMator
1.10.2006 18:51
Пытался сделать эту же задачку с помощью процедуры не выходит!! В программе с функцией
Код
Function f(a,b:real):real;
а в процедуре
Код
Procedure f(a,b:real; Var ???)
Для чего здесь вообще Var нужен??
klem4
1.10.2006 19:10
при использовании функции
X := F(a, b);
при использовании процедуры
F(a, b, X);
volvo
1.10.2006 19:11
Цитата
Для чего здесь вообще Var нужен?
А как ты собрался БЕЗ Var вернуть результат из процедуры?
Procedure f(a,b: real; Var res: real);
forMator
1.10.2006 19:29
А результат res чему присваивать?
volvo
1.10.2006 19:31
Тому же, чему и в функции... Ты ж писал, что функцию сделал. Вот и переведи в процедуру...
forMator
3.10.2006 20:27
До меня так и не дошло чему присваивать результат!
forMator
3.10.2006 20:57
Я не знаю, но я присваиваю результат следующему:
Код
Program prod; Var x,y:integer; u:real; Procedure f(a,b:real;Var res:real); begin res:=(a+b)/abs(a-b); end; begin writeln('vvod x,y'); readln(x,y); u:=(f(x,y)+f(x+y,x-y))/f(sqr(x)-y,sqr(x)*x); writeln('u=',u:3:2); readln; end.
А мне выдаётся ошибка!
мисс_граффити
3.10.2006 22:47
фактические и формальные параметры должны быть одного типа - раз. количество формальных и фактических параметров должно сопадать - два.
а ты обещаешь передать (real,real,real), а передаешь (integer,integer) я бы на месте процедуры тоже такой обман не простила.
forMator
4.10.2006 1:16
Всем БОЛЬШОЕ СПАСИБО!!!! Хотя с процедурами я так и не разобрался!!
Код
Program primer; Var x,y,u:real; Procedure f(a,b:real;Var res:real); begin res:=(a+b)/abs(a-b); end; begin writeln('vvod x,y'); readln(x,y); u:=(f(x,y)+f(x+y,x-y))/f(sqr(x)-y,sqr(x)*x); writeln('u=',u:3:2); readln; end.
Выдаётся ошибка! TP указывает на следующее:
Код
u:=(f(x,y)+f(x+y,x-y))/f(sqr(x)-y,sqr(x)*x);
А в чём ошибка разобраться не могу!Помогите пожалуйста!
forMator
5.10.2006 22:58
Решил задачку!!! Разобрался!! Выкладываю код!! Может кому-нибудь пригодится!!
Код
Program primer; Var x,y,u,t1,t2,t3:real; Procedure f(a,b:real;Var res:real); begin res:=(a+b)/abs(a-b); end; begin writeln('vvod x,y'); readln(x,y); f(x,y,t1); f(x+y,x-y,t2); f(sqr(x)-y,sqr(x)*x,t3); u:=(t1+t2)/t3; writeln('u=',u:3:2); readln; end.
Всем СПАСИБО ЗА ПОМОЩЬ!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.