Samuel Nassif Postado Abril 19, 2021 em 19:28 Compartilhar Postado Abril 19, 2021 em 19:28 Olá pessoal, preciso de uma ajuda imensa. Só sei o básico do básico em C e preciso de um algoritmo que me retorne o valor de quantas vezes uma outra variável alterou seu valor durante uma determinada condição. Eu tenho as variáveis A e B do tipo Int; B está sempre alterando seu valor; Quando A for verdadeira começo a contar quantas vezes B muda de valor; Por exemplo: Suponhamos que o valor inicial de B é 10.; Quando A torna-se verdadeiro eu começo a contar quantas vezes B muda de valor. Se por exemplo, B alterar seu valor para 9,8,7,6,5 deverei saber que foram 5 mudanças. Quando A for falso devo zerar esse contador. Alguma idéia? Desde já agradeço a ajuda. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Felipe.Silva Postado Abril 20, 2021 em 11:15 Compartilhar Postado Abril 20, 2021 em 11:15 Na programação orientada a objetos existe o conceito de encapsulamento, que resumidamente é o conceito de não alterar uma variável diretamente mas sim usando uma função. Isso faz com que a variável fique "encapsulada" dentro do objeto e permite que qualquer lógica seja aplicada na alteração daquela variável. E é exatamente o que você quer fazer... Toda vez que as variáveis A e B são alteradas existe uma certa lógica ocorrendo com elas, não é? Então eu sugeriria você colocar tudo dentro de uma struct e implementar funções para modificar os valores de A e B. Tipo assim: struct var { bool mode; // A int value; // B int counter; }; void var_mode(struct var *variable, bool mode) { // etc... } void var_value(struct var *variable, int value) { // etc... } 1 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Samuel Nassif Postado Abril 20, 2021 em 11:53 Autor Compartilhar Postado Abril 20, 2021 em 11:53 Obrigado pela dica Felipe. No meu caso essa variável B seria a posição de TAP de um transformador, que sempre está alterando o seu valor. Não sei que tipo de função usar para monitorar quantas vezes esse TAP mudou de valor. Citar Link para o comentário Compartilhar em outros sites More sharing options...
mayco souza berghetti Postado Maio 3, 2021 em 19:56 Compartilhar Postado Maio 3, 2021 em 19:56 (editado) Poderia ser algo assim. extern int a, b; int old, counter; old = b; counter = 0; if (a && b != old) { counter++; old = b; } Editado Maio 4, 2021 em 13:27 por mayco souza berghetti Citar Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.