Informática, perguntado por dani2930, 1 ano atrás

Na informática, a fila é uma estrutura onde os dados são inseridos no início e removidos do início. São estruturas conhecidas como First In, First Out (FIFO), que pode ser traduzido por Primeiro a Entrar, Primeiro a Sair.

Dado o trecho de código com a função fila_sair e a estrutura de dado fila.

void fila_sair() {
if (fila.ini == fila.fim) {
printf(“\nA fila está vazia, não há nada para remover!\n\n”);
system(“pause”);
} else {
int i;
for (i = 0; i < tamanho; i++) {
fila.dados[i] = fila.dados[i+1];
}
fila.dados[fila.fim] = 0;
fila.fim--;
}
}

Índice = 0 1 2 3 4 5 6 7 8 9
Dados = 5 2 1 8 4 6 0 0 0 0

Qual das alternativas a seguir corresponde ao vetor fila.dados corretamente após a execução do código a seguir:

fila_sair();
fila_sair();

Alternativas

Alternativa 1:
Índice = 0 1 2 3 4 5 6 7 8 9
Dados = 0 0 1 8 4 6 0 0 0 0

Alternativa 2:
Índice = 0 1 2 3 4 5 6 7 8 9
Dados = 5 2 1 8 4 6 0 0 0 0

Alternativa 3:
Índice = 0 1 2 3 4 5 6 7 8 9
Dados = 1 8 4 6 0 0 0 0 0 0

Alternativa 4:
Índice = 0 1 2 3 4 5 6 7 8 9
Dados = 1 8 1 8 4 6 0 0 0 0

Alternativa 5:

Índice = 0 1 2 3 4 5 6 7 8 9
Dados = 0 8 1 8 4 6 0 0 0 0

Soluções para a tarefa

Respondido por jvsilvictorox7rfj
1
for (i = 0; i < tamanho; i++)
{
        fila.dados[i] = fila.dados[i+1];  //Desloca cada elemento  pra frente
}

fila.dados[fila.fim] = 0;  //Zera a posição que sobrou
fila.fim--;
}


O código desloca todos os elementos para frente na fila . Ou seja, quando você remove um elemento da fila, os restantes assumem um índice uma unidade menor do que antes.  Se estava em 3, vai para 2. Se estava em 2, vai para 1...   Os espaços vazios no final são preenchidos com 0.



O comando "fila_sair()" é executado duas vezes:


ANTES DE EXECUTAR:

Índice = 0 1 2 3 4 5 6 7 8 9
Dados = 5 2 1 8 4 6 0 0 0 0



EXECUTADO NA 1ª VEZ:
Índice =  0 1 2 3 4 5 6 7 8 9
Dados = 2 1 8 4 6 0 0 0 0 0


EXECUTADO NA 2ª VEZ:
Índice =  0 1 2 3 4 5 6 7 8 9
Dados = 1 8 4 6 0 0 0 0 0 0



>>RESPOSTA:  Alternativa 3.


Perguntas interessantes