Boa tarde, pessoal!
Criei uma função que retorna "0" caso o if for verdadeiro e retorna o valor de dentro de um array caso seja falso.
Como faço para a função que eu criei retornar o valor do último índice de um array que seja maior que 5 ao invés de 0?
Mas o valor retornado tem que coletar não o último índice, mas sim o último índice que atende com as condições exigidas.
Use variável estática pra manter memória entre as calls.
double Filtro(int a) { static double current = 0; double values[10] = {2,7,4,6,1,3,9,8,5,10}; if(values[a] > 5) current = values[a]; return current; }
Boa tarde, pessoal!
Criei uma função que retorna "0" caso o if for verdadeiro e retorna o valor de dentro de um array caso seja falso.
Como faço para a função que eu criei retornar o valor do último índice de um array que seja maior que 5 ao invés de 0?
Mas o valor retornado tem que coletar não o último índice, mas sim o último índice que atende com as condições exigidas.
Você está violando vários princípios elementares de Funções.
- O Nome de uma função tem que ter um propósito EXATO e Inteligível, sem gerar dúvidas. "Filtro". Filtro de quê? Para quê?
- Jamais se fixa um vetor no interior de uma função, a menos que ele seja REALMENTE único e imutável na longa vida prevista para seu sistema/aplicativo. Do contrário declaramos um vetor fora do escopo da função e o passamos a ela. A função terá que ter a capacidade ler qualquer vetor, não importando seu tamanho.
- Você está violando o conceito básico de Lógica Booleana. "0" para Falso e "algo" para verdadeiro??
- E para seu dilema final, dadas as sugestões acima, você deve usar um loop FOR... para resolver esse algorítmo.
Você está violando vários princípios elementares de Funções.
- O Nome de uma função tem que ter um propósito EXATO e Inteligível, sem gerar dúvidas. "Filtro". Filtro de quê? Para quê?
- Jamais se fixa um vetor no interior de uma função, a menos que ele seja REALMENTE único e imutável na longa vida prevista para seu sistema/aplicativo. Do contrário declaramos um vetor fora do escopo da função e o passamos a ela. A função terá que ter a capacidade ler qualquer vetor, não importando seu tamanho.
- Você está violando o conceito básico de Lógica Booleana. "0" para Falso e "algo" para verdadeiro??
- E para seu dilema final, dadas as sugestões acima, você deve usar um loop FOR... para resolver esse algorítmo.
1. O nome da função era apenas para um exemplo.
2. Entendo que não seja a forma mais nobre de se fazer, mas para o objetivo final ela funcionaria bem assim.
3. Ainda estou progredindo, mas até que funciona bem.
4. Vou testar.
Obrigado pela ajuda!
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Boa tarde, pessoal!
Criei uma função que retorna "0" caso o if for verdadeiro e retorna o valor de dentro de um array caso seja falso.
Como faço para a função que eu criei retornar o valor do último índice de um array que seja maior que 5 ao invés de 0?
Mas o valor retornado tem que coletar não o último índice, mas sim o último índice que atende com as condições exigidas.