Скачать MetaTrader 5

Функция для возврата нескольких значений

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Где найти программиста? В сервисе Фриланс!
first_may
326
first_may 2011.04.13 15:13 

Здравствуйте, собственно вопрос в том, как написать функцию, что бы она возвращала несколько значений, например, если написать следующий код, то функция вернет два значения???

void Test(int a, int b)

{

a=1;

b=2

}

Олег avtomat
4894
Олег avtomat 2011.04.13 15:30  

для начала -- что возвращает такая функция -- void -- определись.

далее: возврат .... передача...

учебник...

first_may
326
first_may 2011.04.13 15:32  

Вот из учебника например:

int Gipo(int a, int b) // Пользовательская функция
{
int c2 = a*a + b*b; // Сумма квадратов катетов
int c = MathSqrt(c2); // Гипотенуза
return(c); // Оператор выхода из функции
}

Мне надо бы что бы функция возвращала несколько значений с типом double.

Alexey Subbotin
4998
Alexey Subbotin 2011.04.13 15:32  

void Test (int &a, int &b)

{

...

}

first_may
326
first_may 2011.04.13 15:36  
Да, то что надо, спасибо.
Vadim Zhunko
5227
Vadim Zhunko 2011.04.13 15:50  

Это модификация, а не возврат значения.

Возврат так:

double Test(int a, int b)
{
 a = 123;
 b = 456;
 return(1.0 * (MAX_DWORD + 1) * a + b);
} 
Комбинатор
15920
Комбинатор 2011.04.13 15:55  
Вадим, вы иногда такую муть несете... без обид, но это бред.
Роман
7939
Роман 2011.04.13 16:08  
first_may:

Здравствуйте, собственно вопрос в том, как написать функцию, что бы она возвращала несколько значений, например, если написать следующий код, то функция вернет два значения???

void Test(int a, int b)

{

a=1;

b=2

}


Обойдите этот момент, используя глобальные переменные эксперта и меняя их значения в вызываемой функции - вот и все.

Например, посмотрите вызов и работу булеановской ф-ии Lot() учебника, которая меняет глобальную переменную объема сделки Lots_New и сама принимает одно из двух значений: true или false - здесь.

Виктор
Модератор
6559
Виктор 2011.04.13 16:17  
first_may:

...собственно вопрос в том, как написать функцию, что бы она возвращала несколько значений, например, если написать следующий код, то функция вернет два значения???

Бегите скорее, они Вас заучат до смерти! :))
Потом разберетесь с хитрыми обходами, а пока сделайте две почти одинаковых функции, пусть одна возвращает а, вторая b. Через return() можно вернуть только одно значение.
Vadim Zhunko
5227
Vadim Zhunko 2011.04.13 16:23  
TheXpert:
Вадим, вы иногда такую муть несете... без обид, но это бред.

Какие обиды? :-)) Что не понравилось? Конкретнее...

То, что написал не проверял, но работает в случае применения структур. Здесь привёл пример, как в MQL4 структуру эмулировать и вернуть.

Ещё достоинство этого решения, это возможность передавать 2 значения из библиотек. Т.к. библиотеки MQL4 не позволяют модифицировать параметры.

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

Петр
6084
Петр 2011.04.13 16:47  

1. Если void - то это войд - т.е. ничего.

2. Ф-я возвращает по return объявленный в описании ф-ии тип данных.

3. Несколько значений за раз вернуть не получится - вызывайте. )))

===

Кстати, почему нет массива? ок. Урезанная версия, но все же...

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий