Estou em uma aplicação onde tem uma função que nao sei se é um operador...


movavg_i = (movavg_i + 1) % MOVAVG_SIZE;



O que exatamente faz este "%"?

Exibições: 2404

Responder esta

Respostas a este tópico

esse é o comando retorna o resto de divisão

Ola. % Retorna o resto da divisão.

Um uso interessante é por exemplo para saber se um numero é divisivel por 2, assim : if(x%2==0) // comando ou multiplo de 10 (x%10==0), sempre vejo esse uso para %.

Espero ter ajudado,

Jota

Olá, Jota. boa tarde!

Obrigado pela resposta.!!

Entendi!! Valeu pela resposta, mas aqui nesse caso eu nao consegui entender....


Olhe como está:

Esse movavg_i é uma variavel int que vai somando apenas (movavg_i = movavg_i +1)
E esse MOVAVG_SIZE é uma variavel const long com valor de 70;

movavg_i = (movavg_i + 1) % MOVAVG_SIZE;

void PostaMedia(float val)

{
   movavg_buff[movavg_i] = val; 
   movavg_i = (movavg_i + 1) % MOVAVG_SIZE;
}

Da pra ter uma ideia com o que eu postei?

Encontrei uma descrição no reference do arduino.

Até onde ele retorna o Resto da divisão. tudo bem>> mas e quando ele é usado após uma soma?

Neste exemplo, qual o seu papel?

/* update one value in an array each time through a loop */

int values[10];
int i = 0;

void setup() {}

void loop()
{
values[i] = analogRead(0);
i = (i + 1) % 10; // modulo operator rolls over variable
}


O que esse %10 faz após a sima do i = i+1?

Eh um limitador.

Equivale a algo como:

Se numero > tal entao numero = resto da divisão por tal.

No exemplo se a resposta for 10 vira 0. Assim i vai de 0 a 9.

Obrigado, Eduardo. Eu estava pra chegar a esssa conclusão e vc confirmou!

Agora faz sentido. Valeu mesmo.

Amigo pelo que entendi é mais ou menos assim:

i = 9

i = (i +1)%10

ou seja  i=(9+1)%10, // então i vai receber o valor  0 pois zero é o resto da divisão entre 10 e 10;

 

Para ficar mais facil va na calculadora de seu computador coloque-a em modo cientifico depois digite um numero qualquer em seguida digite % e depois outro numero qualquer, quando vc apertar enter você tera o valor correspondente ao resto da divisão entre os dois numeros.

outros exemplos:

x = 7 % 5;   // x agora comtém 2
x = 9 % 5;   // x agora comtém 4
x = 5 % 5;   // x agora comtém 0
x = 4 % 5;   // x agora comtém 4

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço