Olá estou tentando implementar um fila estática(usando vetor), mas acabei parando em um erro matemático.
Digamos que eu tenho um vetor com 8 posições, o primeiro elemento esteja na posição 2 e minha próxima posição livre seja 6. Agora vou remover um elemento da fila, pelo que eu estudei tenho que fazer a seguinte operação da mover o ‘f’ para próxima posição:
// váriaveis.
int n =8, f = 2 ,r = 6;
// operação.
f = (f +1) % n;
mas não entendo como ‘(f+1)%n’ nesse caso vai dar 3. Já fiz as contas e não entendo.
Deixa ver se eu entendi quando eu boto %(módulo) ele é atribuido na primeira operação da divisão, certo?
então quando eu fizer e divisão 3 mod 8, que eu botar zero, o java já conta como minha primeira operação?
30 |8
-----
0,375...
(6)
quando eu descer o zero o módulo já é 3? eu não faço a divisão, é isso?
Ao completar a operação e adicionar o zero ao 3 e dividir por 8 o mod seria 6.
Quando você trabalha com módulo, você apenas trabalha com número inteiros.
Não tem aquela regrinha de “coloca zero + vírgula” no resultado, acrescenta zero (multiplica por 10) o dividendo e continua a operação.
Com módulo você pára quando não dá mais pra dividir.
Exemplo:
3 dividido por 8 = 0 e sobra/resto 3 (3 % 8 = 4)
20 dividido por 8 = 2 e sobra/resto 4 (20 % 8 = 4). (observe que após o primeiro dígito de quociente, você pára a divisão!)
Vamos pegar um número maior agora:
225 divido por 8:
Passo 1: 22 divido por 8 = 2 sobra 6
Passo 2: 65 divido por 8 = 8 sobra 1
Passo 3: 1 não dá pra dividr por 8, paro por aqui (nada de acrescentar vírgula e continuar a conta!)
Portanto: 225/8 = 28 e sobra 1
Logo: 225 % 8 = 1
Tenta fazer essas contas como se você estivesse no primário, onde ainda não sabe da existência dos números reais!