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

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

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

 
 Ответить  Открыть новую тему 
> Использование процедуры, не могу разобраться с этой темой
forMator
сообщение 29.09.2006 15:59
Сообщение #1


Новичок
*

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

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


Изучаю процедуры! Не могу понять в задании зачем используется a и b!!

U=(f(x,y)+f(x+y,x-y))/f(x^2-y,x^3),где
f(a,b)=(a+b)/|a-b|

Помогите пожалуйста!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.09.2006 16:40
Сообщение #2


Гость






Скорее всего, надо использовать функции, а не процедуры... Но это не имеет особого значения, для процедур все будет точно так же...

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 18:45
Сообщение #3


Новичок
*

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

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


Большое СПАСИБО!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
forMator
сообщение 29.09.2006 19:37
Сообщение #4


Новичок
*

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

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


Вроде написал...Но не уверен что правильно!!!ПРоверьте аожалуйста!!
Код

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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 29.09.2006 19:51
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


Цитата
Вроде написал...Но не уверен что правильно!!!ПРоверьте аожалуйста!!

Цитата
не забудь проверить знаменатель на 0

Попробуй ввести в твою прогу два одинаковых числа, например 3 и 3. Увидишь для чего надо делать проверку.


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
forMator
сообщение 1.10.2006 14:51
Сообщение #6


Новичок
*

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

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


Пытался сделать эту же задачку с помощью процедуры не выходит!!
В программе с функцией
Код

Function f(a,b:real):real;

а в процедуре
Код

Procedure f(a,b:real; Var ???)

Для чего здесь вообще Var нужен??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 1.10.2006 15:10
Сообщение #7


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


при использовании функции

X := F(a, b);


при использовании процедуры

F(a, b, X);


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 1.10.2006 15:11
Сообщение #8


Гость






Цитата
Для чего здесь вообще Var нужен?
А как ты собрался БЕЗ Var вернуть результат из процедуры?

Procedure f(a,b: real; Var res: real);
 К началу страницы 
+ Ответить 
forMator
сообщение 1.10.2006 15:29
Сообщение #9


Новичок
*

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

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


А результат res чему присваивать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 1.10.2006 15:31
Сообщение #10


Гость






Тому же, чему и в функции... Ты ж писал, что функцию сделал. Вот и переведи в процедуру...
 К началу страницы 
+ Ответить 
forMator
сообщение 3.10.2006 16:27
Сообщение #11


Новичок
*

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

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


До меня так и не дошло чему присваивать результат!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
forMator
сообщение 3.10.2006 16:57
Сообщение #12


Новичок
*

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

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


Я не знаю, но я присваиваю результат следующему:
Код

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.


А мне выдаётся ошибка!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 3.10.2006 18:47
Сообщение #13


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


фактические и формальные параметры должны быть одного типа - раз.
количество формальных и фактических параметров должно сопадать - два.

а ты обещаешь передать (real,real,real), а передаешь (integer,integer)
я бы на месте процедуры тоже такой обман не простила.

Сообщение отредактировано: мисс_граффити - 3.10.2006 18:49


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
forMator
сообщение 3.10.2006 21:16
Сообщение #14


Новичок
*

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

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


Всем БОЛЬШОЕ СПАСИБО!!!!
Хотя с процедурами я так и не разобрался!!
Код

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 - 4.10.2006 17:37
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
forMator
сообщение 5.10.2006 18:58
Сообщение #15


Новичок
*

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

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


Решил задачку!!! Разобрался!! Выкладываю код!! Может кому-нибудь пригодится!!
Код

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.

Всем СПАСИБО ЗА ПОМОЩЬ!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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