Questão FC374672
A Secretaria de Saúde da Prefeitura Municipal de Cacoal está desenvolvendo um sistema para o controle epidemiológico que necessita calcular o risco de contaminação em função de múl
Algoritmos e Lógica de Programação
Instituto Consulplan · 2024
A Secretaria de Saúde da Prefeitura Municipal de Cacoal está desenvolvendo um sistema para o controle epidemiológico que necessita calcular o risco de contaminação em função de múltiplos fatores. Uma parte desse sistema precisa determinar o número de diferentes formas em que grupos específicos de indivíduos podem ser selecionados para uma campanha de testagem, em que a ordem de escolha dos indivíduos importa. O trecho de código a seguir, implementado em Portugol Studio, é utilizado para calcular o arranjo de grupos de pessoas selecionadas de um total, considerando que a ordem de escolha é relevante. (Considere que os valores a serem lidos são: total_pessoas = 7 e pessoas_selecionadas = 4.)
programa
{
funcao inicio(){
inteiro total_pessoas, pessoas_selecionadas, resultado
escreva("Digite o número total de pessoas (total_pessoas): ")
leia(total_pessoas)
escreva("Digite o número de pessoas a serem selecionadas (pessoas_selecionadas): ")
leia(pessoas_selecionadas)
resultado = arranjo(total_pessoas, pessoas_selecionadas)
escreva("O número de arranjos de ", total_pessoas, " pessoas escolhendo ", pessoas_selecionadas, " é: ", resultado)
}
funcao inteiro arranjo(inteiro total_pessoas, inteiro pessoas_selecionadas){
se (pessoas_selecionadas == 0){
retorne 1
}
senao{
retorne total_pessoas * arranjo(total_pessoas - 1, pessoas_selecionadas - 1)
}
}
}
Com base no algoritmo, analise as afirmativas a seguir.
I. O algoritmo recursivo calcula corretamente o número de arranjos possíveis de total_pessoas escolhendo pessoas_selecionadas de cada vez, considerando a ordem de escolha.
II. O caso base do algoritmo ocorre quando pessoas_selecionadas é igual a total_pessoas, retornando 1.
III. O algoritmo faz chamadas recursivas até alcançar o caso base, que é quando pessoas_selecionadas é igual a 0.
IV. Para os valores total_pessoas = 7 e pessoas_selecionadas = 4, o resultado calculado pelo algoritmo é 210.
Está INCORRETO o que se afirma apenas em
- I e II.
- I e III.
- II e IV.
- III e IV.
Mostrar resposta e comentário
Gabarito
Certo
Comentário do professor
A afirmativa indicada no gabarito (II e IV) está incorreta por dois motivos distintos.
Casos base: o algoritmo trata pessoas_selecionadas == 0 como caso base e retorna 1. Não há condição que retorne 1 quando pessoas_selecionadas == total_pessoas. Portanto a descrição de que o caso base ocorre nessa igualdade é equivocada.
Cálculo do arranjo: a recursão implementa o produto decrescente \(total\_pessoas \times (total\_pessoas-1) \times \dots\) por \(pessoas\_selecionadas\) fatores, ou seja o arranjo \(A(n,k)=\frac{n!}{(n-k)!}\). Para \(n=7\) e \(k=4\) temos \(A(7,4)=\frac{7!}{3!}=7\cdot6\cdot5\cdot4=840\), não 210. Logo a afirmação sobre o resultado numérico também é falsa.
Conteúdo do catálogo FC Concursos · Atualizado em