Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2012, 17:19   #1
vale4ka_1989
 
Регистрация: 29.03.2012
Сообщений: 6
По умолчанию Вызов подпрограммы (C++Builder 6)

Подскажите, пожалуйста, как произвести вызов подпрограммы? Я читала в книге, там написано просто написать название подпрограммы, но у меня не считывает данные от туда.
vale4ka_1989 вне форума Ответить с цитированием
Старый 11.04.2012, 17:25   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А конкретнее? Покажите код.
Цитата:
просто написать название подпрограммы
и передать аргументы если она их требует.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.04.2012, 17:32   #3
vale4ka_1989
 
Регистрация: 29.03.2012
Сообщений: 6
По умолчанию

IKRON(B,EE,D,H,B2,P,R) - название подпрограммы, B,EE,D,H,B2 - константы, Р - результирующее значение в подпрограмме, которое используется в самой программе и оно почему-то получается равным нулю.
vale4ka_1989 вне форума Ответить с цитированием
Старый 11.04.2012, 17:34   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Покажите весь код. Пока среди нас нету экстрасенсов, которые видят, что происходит в вашей подпрограмме.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.04.2012, 17:39   #5
vale4ka_1989
 
Регистрация: 29.03.2012
Сообщений: 6
По умолчанию

Код:
void IKRON(double B, double EE, double D, double H, double AA, double P, double R) {
double U[9], V[9], BB[9], E1, S1, Z1, BT, EP, AT, ET, S2,S3, EF, ZZ, XX, YY, AX, Q, W=2, QQ,X;
boolean T;
U[0]=0.011719874;
U[1]=0.069431844;
U[2]=0.179856891;
U[3]=0.330009478;
U[4]=0.5;
U[5]=0.669990521;
U[6]=0.820143108;
U[7]=0.930568155;
U[8]=0.988280125;
V[0]=0;
V[1]=0.173927422;
V[2]=0;
V[3]=0.326072577;
V[4]=0;
V[5]=0.326072577;
V[6]=0;
V[7]=V[1];
V[8]=0;
BB[0]=0.031488686;
BB[1]=0.085026802;
BB[2]=0.13339917;
BB[3]=0.163474594;
BB[4]=0.17322149;
BB[5]=0.163474594;
BB[6]=0.13339917;
BB[7]=0.085026802;
BB[8]=BB[0];
T=FALSE;
E1=0.0;
S1=0.0;
Z1=H;
BT=AA;
EP=EE/(B-AA);
while (BT!=B){
	AT=BT;
	do {
		BT=AT+Z1;
		if (BT<B){
			Z1=B-AT;
			BT=B;
		}
		ET=EP*Z1;
		S2=0;
		S3=0;
		for (K=0; K<=8.0; K++){
		     	X=AT+Z1*U[K];
			QQ=QI(X,R);
                        S2=S2+QQ*V[K];
			S3=S3+QQ*BB[K];
		}
		S2=S2*Z1;
		S3=S3*Z1;
		EF=fabs(S3-S2);

		if (EF<=EF){break;}
		ZZ=Z1/W;
		if(ZZ<=D){
			XX=EE-E1-EF;
			if (XX>0){
				YY=B-BT;
				if (YY>0){
					EP=XX/YY;
				}
				else {
					EP=0;
				}
			}
			break;
		}
		Z1=Z1/W;
	} while (1==1);
	E1=E1+EF;

	if ((T==1)&&(EF<ET)) {
		Z1=Z1*W;
	}
	if (AX>0){
		T=1;
	}
	else {
		T=0;
	}
	S1=S1+S3;
}
P=S1;


}
vale4ka_1989 вне форума Ответить с цитированием
Старый 11.04.2012, 17:42   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Потому что в подпрограмме используется копия Р, а не то, которые в основной программе. Надо использовать ссылку или указатель.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.04.2012, 17:47   #7
LiuLiuJons
Форумчанин
 
Регистрация: 28.12.2011
Сообщений: 124
По умолчанию

Цитата:
Сообщение от vale4ka_1989 Посмотреть сообщение
IKRON(B,EE,D,H,B2,P,R) - название подпрограммы, B,EE,D,H,B2 - константы, Р - результирующее значение в подпрограмме, которое используется в самой программе и оно почему-то получается равным нулю.
Чтобы у вас было результирующее значение того, что вы называете "подпрограммой", а на самом деле функции, надо прописать возвращаемый тип, например вот так:

Код:
double IKRON(double B, double EE, double D, double H, double AA, double P, double R) {...
P=S1;
return P;}
Или же другой вариант: если вам надо изменять P в процессе работы этой функции (IKRON), то вызывайте её по адресу:
Код:
void IKRON(double B, double EE, double D, double H, double AA, double& P, double R)
"Думай не о задаче, а о решении" (с)
LiuLiuJons вне форума Ответить с цитированием
Старый 11.04.2012, 17:57   #8
vale4ka_1989
 
Регистрация: 29.03.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Потому что в подпрограмме используется копия Р, а не то, которые в основной программе. Надо использовать ссылку или указатель.
А как это? Напишите, пожалуйста.
vale4ka_1989 вне форума Ответить с цитированием
Старый 11.04.2012, 17:59   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Погуглите лучше или в учебнике поищите.
double& P если коротко.
Да, или лучше с помощью возвращаемого значения
т.е. объявить подпрограмму как double IKRON и в ней return в конце, а в самой програме
Код:
переменная_в_которой_нужен_результат = IKRON(аргументы);
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 11.04.2012 в 18:08.
Alex11223 вне форума Ответить с цитированием
Старый 11.04.2012, 18:01   #10
vale4ka_1989
 
Регистрация: 29.03.2012
Сообщений: 6
По умолчанию

Alex11223 и LiuLiuJons, спасибо!
vale4ka_1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CodeGear C++ Builder 2007 Lite не может откомпилировать исходники C++ Builder 6 Ecosasha C++ Builder 2 22.11.2013 15:02
Вызов подпрограммы (C++Builder 6) vale4ka_1989 Помощь студентам 0 29.03.2012 13:09
Вызов из FastReport моей функции из C++Builder gibbon Помощь студентам 0 08.03.2011 12:22
Подпрограммы-процедуры, подпрограммы-функции в Pascal rishikesh Помощь студентам 19 18.05.2010 23:05
Вызов рисующих методов сцены из подпрограммы. jojahti Общие вопросы C/C++ 6 20.08.2009 11:50