Como comparar um único valor para várias opções?
Página 1 de 742 1 2 ÚltimaÚltima
Results 1 to 10 of 16

Thread: Como comparar um único valor para várias opções?

  1. #1
    Como isso pode funcionar? ... if (Minute () == (11 || 15 || 18) test = true;

    Existe uma maneira de ter um único valor comparar várias opções como acima? ou tem que ser if (Minute () == 11 || Minute () == 15 || Minute () == 18);

  2. #2

    Como isso pode funcionar? ... if (Minute () == (11 || 15 || 18) test = true; Existe uma maneira de ter um único valor comparar várias opções como acima? Ou tem que ser se (Minuto () == 11 || Minuto () == 15 || Minuto () == 18);
    Não há uma maneira fácil de verificar a associação como em python. Você precisará criar um func ... Inserted Code void OnStart () {int minutos # 91; # 93; = {1,5,15,23,35,45,53}; Imprimir (é_in (35, minutos));/true} templatelt; typename Tgt; bool is_in (T check_value, T array # 91; # 93 {para (int i = ArraySize (matriz) -1; igt; = 0; i--) if (check_value == matriz # 91; i # 93; ) retorno verdadeiro; retorna falso; }

  3. #3
    Obrigado pela resposta rápida Nicholishen .. Eu estava realmente tentando ficar longe de ter que fazer funções e ou lidar com matrizes para uma coisa tão simples .. Então eu acho que a resposta fácil (burra) é .. if (Minuto () = = 11 || Minute () == 15 || Minute () == 18) test = true;

  4. #4

    Obrigado pela resposta rápida .. Eu estava realmente tentando ficar longe de ter que fazer funções e ou lidar com matrizes para uma coisa tão simples .. Então eu acho que a resposta fácil (burra) é .. if (Minute () == 11 || Minute () == 15 || Minute () == 18) test = true;
    Isso não é ideal, já que você está chamando a função Minuto várias vezes. Primeiro, chame a função de minutos e atribua-a a uma variável e compare a variável várias vezes.

  5. #5
    Ok ... Apenas chamará a função de minutos uma vez .. Estou surpreso que você não possa comparar se (x == (y || z || w)) fazer alguma coisa;

  6. #6

    Ok ... Apenas chamará a função de minutos uma vez .. Estou surpreso que você não possa comparar se (x == (y || z || w)) fazer alguma coisa;
    A maioria das linguagens de programação não permite expressões como esta. Em python você pode fazer coisas legais como Código Inserido se x em # 91; y, z, w # 93 ;:

  7. #7

    {quote} Não há uma maneira fácil de verificar a associação como em python. Você precisará criar um func ... void OnStart () {int minutes [] = {1,5,15,23,35,45,53}; Imprimir (é_in (35, minutos));/true} templatelt; typename Tgt; bool is_in (T check_value, T array []) {para (int i = ArraySize (array) -1; igt; = 0; i--) if (check_value == matriz [i]) retorna verdadeiro; retorna falso; }
    Você está errado ... você nem sequer criou um loop ... vc usa um template só pra parecer melhor mas vc não sabe o que é um template ... qual é o ponto de procurar um array se não retornar o index ... teste seu código antes de publicar na próxima vez, está cheio de erros de compilação ... um pouco sarcástico, mas eu li alguns de seus comentários onde você estava ensinando sobre classes complexas quando você tem problemas com coisas tão simples ... seu código Inserted Code void OnStart () {int minutos # 91; # 93; = {1,5,15,23,35,45,53}; Imprimir (é_in (35, minutos));/true} templatelt; typename Tgt; bool is_in (T check_value, T array # 91; # 93 {para (int i = ArraySize (matriz) -1; igt; = 0; i--) if (check_value == matriz # 91; i # 93; ) retorno verdadeiro; retorna falso; } a maneira correta ... testado código inserido templatelt; typename Tval, typename Tarrgt; int TArraySearch (Tval val, Tarr arr # 91; # 93 {para (int i = 0; ilt; ArraySize (arr); i) {if (val == arr # 91; i # 93/return index se val found} return -1;/val not found} void OnTick () {int minutos # 91; # 93; = {1,5,15,23,35,45,53}; if (TArraySearch (Minuto (), minutos)! = - 1) teste = verdadeiro;/apenas como verificar se (OrderOpen (Symbol (), etc ...)! = - 1) ...} @mtbb se a função retorna um valor diverso de -1 você encontrou seu número e seu teste pode ser verdadeiro e seu valor é posicionado no código inserido int index = TArraySearch (Minute (), minutes);/minutos # 91, índice # 93; dá-lhe acesso total dentro e você pode modificá-lo se a matriz é definida fora da função OnTick () minutos # 91; índice # 93; = 16; ... quando você retorna verdadeiro ou falso de uma matriz você realmente não tem nenhum ideea qual é o valor encontrado e é um pouco inútil ... poderia ser 5 ou 15 ou qualquer número dentro de sua matriz. Sempre verifique o índice. Ao retornar o índice, você acessa o array. É possível usar essa função com arrays com milhares de elementos dentro da procura de valores dinâmicos a serem acessados ​​pelo seu código.

  8. #8

    {quote} eu li alguns de seus comentários onde você estava ensinando sobre classes complexas quando você tem problemas com coisas tão simples .... seu código vazio.
    Sim, mestre, eu poderia dar aulas sobre a maneira correta de usar as classes MQL - assim como estou prestes a dar uma lição sobre sua refutação mal pensada e agressiva ... Então, vamos começar.
    ... você nem criou um loop
    Não só isso é incorreto, mas o loop no meu código é mais eficiente do que o loop no seu. Quando você compara nossas funções, você está contando e chamando a função ArraySize em cada iteração (O (n)) enquanto meu loop conta de trás para frente e só chama ArraySize uma vez (O (1)). Eu claramente ganho este.
    vc usa um template só pra parecer melhor mas vc não sabe o que é um template ...
    Eu sei muito bem como criar um modelo e meu código está correto. O seu, por outro lado, tem um grande problema. Você vê, você precisa verificar (em tempo de compilação) que o lt; typegt; do valor que está sendo verificado em relação à matriz corresponde à tag lt; typegt; da matriz sendo referenciada. Você conseguiu definir dois tipos de modelos diferentes quando deveria ter definido apenas um. Isso possibilita que o seu programa permita que o código a seguir seja compilado (que é um grande bug) Código inserido string num = one; int nums # 91; # 93; = {1,2,3}; if (is_in (num, nums)) ... FALHA
    Qual é o ponto para procurar uma matriz, se não retornar o índice?
    A função is_in é uma função booleana para o teste de associação. O ponto era poder usar diretamente dentro da expressão. Você não precisa nem se preocupa com o índice porque só quer testar se o valor A é um membro da lista B. Então, para que meu código funcione, a expressão seria Código inserido se (is_in (value, list)) e seu seria Código Inserido se (is_in (valor, lista) gt; = 0) Preciso mesmo perguntar qual deles é mais limpo?
    Retornar o índice lhe dá acesso dentro do array
    Isso é completamente redundante. Você acabou de verificar se o seu valor existe ou não no array. Se isso não acontecer, nada mais precisa acontecer. Se isso acontecer, você já sabe o valor e não há necessidade de armazenar o índice de sua posição em sua lista arbitrária.

  9. #9
    {quote} Sim, mestre, eu poderia dar aulas sobre a maneira correta de usar as classes MQL - assim como estou prestes a dar uma lição sobre sua refutação mal pensada e agressiva ... Então, vamos começar. {quote} Não só isso é incorreto, mas o loop no meu código é mais eficiente do que o loop no seu. Quando você compara nossas funções, você está contando e chamando a função ArraySize em cada iteração (O (n)) enquanto meu loop conta de trás para frente e só chama ArraySize uma vez (O (1)). Eu claramente ganho este. {quote} Eu sei muito bem como criar um modelo e ...
    Eu sou um C , desenvolvedor Java e ... não há nada que você pode me ensinar.MQL é uma linguagem de alto nível super e não tem absolutamente nada a ver com C onde você precisa construir tudo do zero ... sob MQL u tem e pode jogar apenas com um monte de funções de alto nível definidas pela empresa metatrader ... C como ... mas não exatamente.Isso não lhe dá o direito de se chamar de programador ... Esta linguagem foi projetada para não programadores. .. para os comerciantes mais exatamente.Agora eu espero que você obtenha o ideea..eu u realmente quer ser um programador ir em alguns fóruns C e tentar publicar o seu código para ver algumas reações. Nunca tente comparar MQL com C ou C .... parece, mas não exatamente. C é sobre DirectX, OpenGl, Multithreading, montagem in-line, desmontagem, desvio, hooking, injeção, sniffing, descriptografia, tunelings, entradas, drivers, cross-platform, polimorfismo, etc ... Todas as funções MQL podem representar algo como 0.01% do C . Você não tem idéia do quão difícil é jogar com o DirectX a partir do zero, então ... fique calmo e respire fundo. E agora vamos corrigir seu código. seu loop é Código Inserido para (int i = ArraySize (array) -1; igt; = 0; i--) if (check_value == array # 91; i # 93 return true; retorna falso; Você é sério ??? Você perdeu até mesmo os suportes. Você retorna sempre falso.Não verifique dentro do array
    Vá compilar seu código e depois volte aqui para ensinar. Um loop se parece com o Inserted Code para (int i = 0; ilt; bullshit; i ) {este é um loop} e o template ... não pode usar o mesmo T que você tentou. Não beba nem codifique ao mesmo tempo
    .. isso não é possível. Código inserido templatelt; typename Tgt; bool is_in (T check_value, T array # 91; # 93 isso é possível Inserted Code templatelt; typename Tval, typename Tarrgt; int TArraySearch (Tval val, Tarr arr # 91; # 93 U apenas fazendo de bobo .. pelo menos não ensinar.Vamos ler alguns livros antes. Bem-vindo à minha lista de ignorados.

  10. #10
    1 Anexo (s)
    {quote} Are u serious ??? um loop parece com if (int i = 0; ilt; bullshit; i ) {isto é um loop} U errou os colchetes bro.Você retorna false sempre.U não verifica dentro do array
    Vá compilar sua besteira e depois volte aqui para ensinar ... rsrsrs ... e o modelo ... não pode usar duas vezes o mesmo que você tentou. Eu aposto que você escreve o seu código em seu sono .. bool is_in (T check_value, T array []) isso não é possível. Bem-vindo à minha lista de ignorados.
    Eu compilei meu código original e testei antes de postar ... então vamos continuar nossa lição. Na MQL, assim como em C e C , você não precisa de chaves. Se você omitir as chaves após um loop ou expressão, o fluxo de controle será passado para o próximo loop, expressão ou instrução em sucessão. Você só precisa de chaves para identificar um bloco de código com mais de uma expressão sucessiva. Portanto, esses dois blocos de código são idênticos. Código inserido templatelt; typename Tgt; bool is_in (T check_value, T array # 91; # 93 {para (int i = ArraySize (matriz) -1; igt; = 0; i--) if (check_value == matriz # 91; i # 93; ) retorno verdadeiro; retorna falso; } Código inserido templatelt; typename Tgt; bool is_in (T check_value, T array # 91; # 93 {para (int i = ArraySize (array) -1; igt; = 0; i--) {se (check_value == array # 91; i # 93 {return true; } } retorna falso; }
    bool is_in (T check_value, T array []) isso não é possível.
    Eu sugiro que você estude alguns conceitos básicos de programação antes de continuar parecendo um idiota completo. Aqui está um script que compila. Por que você não experimenta por si mesmo?
    https://www.tradingintuitivo.com/att...3696527634.mq4

Permissões de Publicação

  • Não pode publicar novos tópicos
  • Não pode publicar respostas
  • Não pode publicar anexos
  • Não pode editar as suas publicações
  •  
  • Código BB está Ativo
  • Smilies estão Ativos
  • Código [IMG] está Ativo
  • Código [VIDEO] está Ativo
  • Código HTML está Desligado
O site da tradingintuitivo utiliza cookies
O site da tradingintuitivo utiliza cookies, alguns já foram definidos. Pode ler sobre a nossa utilização de cookies aqui. Por favor, clique no botão à direita para aceitar os nossos cookies. Se continuar a usar o site da tradingintuitivo, vamos supor que aceita os nossos cookies.