Pessoal, eu preciso localicar o numero de indice de uma array por exemplo

int codigo[]={324,306,300,298}; se eu faco a busca para o numero 306 ele retorna o indice 2, isso funcionou bem mas o que me intriga e que ele funciona ate o numero 999 passou de numeros de 4 digitos ja nao funciona mais. O que estou fazendo de errado

Exibições: 577

Responder esta

Respostas a este tópico

Boa noite AMK,

anexe um arquivo com o seu sketck para que possamos entender melhor e sugerir correções.

RV

Pessoal, segue anexo o arquivo do Sketch. Vocês poderão ver que no monitor serial aparece o número de índice pesquisado corretamente, mas quando aumento para 4 digitos o valor e os dados do array (Ex.: de 1000 para cima) ele não consegue localizar, ja estei com long, float, etc. e não deu certo. Estao são códigos decimais de controle de readio frequência que chegam a 30.000 tanto positivo como negativo, estao também terei que trabalhar com números negativos.

Anexos

Vi umas coisas que me deixaram assustado e fechei o codigo... xuxa...xaxa...goto...return... || de uma string com outra.. 

Em que linha está o problema ?

Sugiro reescrever a logica acreditando que "goto" não existe. Isso já melhora bem. Alem disso verifique essa logica de string == string || string..

Deve resolver todos seus males.

Bom dia AMK,

verifiquei o seu sketch, achei bem simples, mas não consegui

identificar o problema sem rodar no arduino.

Como estou em viagem, não tenho condições de testar com arduino.

Só retorno na quarta feira, dai se ainda não tiver resolvido testarei

em um arduino.

RV.

Pessoal conseguir resolver trocando a declaração da variavel de Int para unsigned int.

Funcionou bem . Agradeço a todos!!

Huuuuuuummmmmm

Estranho, deveria funcionar normal com até 5 digitos desde que não fossem maior que 32.xxx e deveria funcionar com long.

Qdo retorna para minha casa vou fazer testes.

RV

Bom dia AMK,

como disse antes, estava achando estranho a falha que estava ocorrendo com seu sketch,

e da forma que ficou resolvida.

Como estava em viagem real, estava usando um celular para "viajar" no LdG, e assim, as vezes fica difícil

de ver todos detalhes (devido a minha idade avançada. KKKKKKK).

Ao chegar em casa resolvi verificar o que ocorria.

E minha surpresa, eu realmente estava "voando", pois deixei escapar um detalhe na definição da matriz.

Veja: você definiu a variável   

      -- > >  int cont = 6;       suponho que seja o numero de " vetores " que sua matriz iria guardar.  

em seguida você define a a variável   

        -- > >  int controle = 802;     suponho ser o valor de comparação com o valor procurado na matriz.

Ok  até aqui se os números forem de 0 até 32767 positivos e até -32767.

A linha seguinte tem equívocos:

    --- > > int codigo[controle] = {505, 322, 825, 802, 605, 515};

1o. se voce usou valores para inicializar a matriz, não precisava colocar nada ente as chaves, 

    Ex:   int codigo[] = {505, 322, 825, 802, 605, 515};  A IDE vai "criar" uma matriz de 6 "elementos".

2o. Acho que é o pior:

      Com 802 : int codigo[controle] , a IDE tentaria "criar" uma matriz de 802 "elementos".

      Com um numero tal com 45137, ela tentaria "criar" uma matriz de -20399 "elementos",

       ou seja uma matriz negativa.

Ao corrigir o seu sketch fazendo assim:

   Com  int codigo[] = {505, 322, 825, 802, 605, 515}; 

   testei com valores de 4 digits(como você citou),  de 3 0 a 9999, e rodou sem problemas

   int codigo[] = {1505, 3322, 825, 4802, 9605, 515};

RV

 

Anexos

Obrigado pelo retorno, esta rodando bem!!!!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço