Dúvida fila estática

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.

Agradeço a paciencia.

f = 2
f + 1 = 3
3 % 8 = 3 (dividir 3 por 8 vai dar zero, com resto 3)

Então f vai ficar com o valor 3.

Dê uma revisada em módulos.

Você está tentando fazer isso:

f = f +1 % 3

O % é o símbolo de mod (módulo). O módulo é o resto de uma divisão.

Substituindo os seus valores, temos:

f = (2 + 1) mod 8
f = 3 mod 8

3 divido por 8 dá zero. O resto é 3. Neste caso, só trabalhamos com inteiros.
Então o resultado é 3 mesmo.

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.

grato.

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! :slight_smile:

obrigado loiane, entendi agora. Eu estava errando porque continuava a dividir depois da virgula e não entendia como ficava ‘3’ : ), obrigado de novo!