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

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

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

 
 Ответить  Открыть новую тему 
> Использование процедуры, не могу разобраться с этой темой
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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); { <--- Вызов функции }
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Большое СПАСИБО!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

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

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


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

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

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


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


Новичок
*

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

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


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

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

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

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

Для чего здесь вообще Var нужен??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






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

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


Новичок
*

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

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


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


Гость






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


Новичок
*

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

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


До меня так и не дошло чему присваивать результат!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


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

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

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


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

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

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


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

 




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