Скачать MetaTrader 5

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

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

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

void Test(int a, int b)

{

a=1;

b=2

}

Олег avtomat
6044
Олег avtomat  

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

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

учебник...

first_may
331
first_may  

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

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

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

Alexey Subbotin
4998
Alexey Subbotin  

void Test (int &a, int &b)

{

...

}

first_may
331
first_may  
Да, то что надо, спасибо.
Vadim Zhunko
5226
Vadim Zhunko  

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

Возврат так:

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

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

void Test(int a, int b)

{

a=1;

b=2

}


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

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

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

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

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

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

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

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

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

Петр
6086
Петр  

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

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

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

===

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

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