Você está na página 1de 4

INFORMAÇÕES SOBRE A AVALIAÇÃO

AV1 AVALIAÇÃO 1 - 20 pontos

INFORMAÇÕES DOCENTE
CURSO: DISCIPLINA: MANHÃ TARDE NOITE PERÍODO/SALA:
ENGENHARIA DE SOFTWARE ALGORITMOS E ESTRUTURAS DE TURNO 1º
x
DADOS I
PROFESSOR (A): João Paulo Carneiro Aramuni

INFORMAÇÕES DISCENTE
ALUNO(A): RA:
DATA: NOTA:

INSTRUÇÕES:
1) Você poderá consultar todo o seu material construído em laboratório, bem como os seus projetos do GitHub, além do seu caderno.
2) Para programar, você poderá utilizar a IDE Eclipse, o Code::Blocks, e também qualquer compilador online que julgar necessário.
3) Não será permitido o uso de ferramentas de inteligência artificial, como ChatGPT, Copilot, Tabnine, entre outros.
4) Não será permitido acessar o GitHub de outros alunos durante a prova. Apenas o seu. Também não será permitido usar o Google.
5) Não será permitido o uso de celulares, relógios digitais ou de qualquer outro aparelho eletrônico durante a realização da prova.
6) Será eliminado do processo avaliativo, com atribuição de nota 0 (zero), o aluno que, durante a prova, utilizar meios ilícitos, como por exemplo:
comunicação com outros alunos, consulta a qualquer tipo de material extraprova e uso de aparelhos eletrônicos não autorizados.
7) O projeto da prova deverá ser disponibilizado no seu GitHub, em um repositório chamado AV1_AEDS1, e a URL deverá ser entregue pelo CANVAS.
Exemplo: github.com/joaosilva/AV1_AEDS1. Não se preocupe em fazer o upload da pasta Debug (que contém o executável), apenas da pasta SRC
(que contém o código).

Boa Prova!

[20 pts] Questão 1) O problema de Monty Hall, também conhecido por paradoxo de
Monty Hall é um problema que surgiu a partir de um concurso televiso dos Estados
Unidos chamado Let’s Make a Deal, exibido na década de 1970.

O jogo consistia no seguinte: Monty Hall, o apresentador, apresentava três portas aos
concorrentes. Atrás de uma delas estava um prêmio (um carro) e, atrás das outras duas,
dois bodes.

1
Na 1ª etapa o concorrente escolhe uma das três portas (que ainda não é aberta):

Na 2ª etapa, Monty abre uma das outras duas portas que o concorrente não escolheu,
revelando que o carro não se encontra nessa porta e revelando um dos bodes;

Na 3ª etapa, Monty pergunta ao concorrente se quer decidir permanecer com a porta


que escolheu no início do jogo ou se ele pretende mudar para a outra porta que
ainda está fechada. Agora, com duas portas apenas para escolher – pois uma delas já se
viu, na 2ª etapa, que não tinha o prêmio – e sabendo que o carro está atrás de uma das
duas restantes, o concorrente tem que tomar a decisão.

No Brasil, os apresentadores de televisão Sérgio Malandro e Ratinho fizeram suas


versões do quadro americano.

Construa um algoritmo em C para criar o jogo do Monty Hall. Você precisará utilizar a
função srand() da biblioteca <stdlib.h> para inicializar o gerador de números
pseudoaleatórios e a função rand() para gerar o número pseudoaleatório (sortear a porta
premiada). Na Dica 2 você encontrará o código para realizar este sorteio.

2
Você também precisará utilizar a função time() para auxiliar na geração do número
pseudoaleatório. A função time() retorna o número de segundos desde a época,
geralmente 1 de janeiro de 1970. Quando usada dentro da função srand(), ela fornece
uma maneira de inicializar o gerador de números pseudoaleatórios com uma semente
diferente em cada execução do programa, baseada no tempo atual. Isso garante que a
sequência de números gerada pela função rand() seja diferente em cada execução do
programa, ajudando a evitar padrões repetitivos e tornando os números aparentemente
mais aleatórios.

#include <stdlib.h>
#include <time.h> // Para auxiliar a função rand

Você precisará também de estruturas do tipo do-while e if-else. A solução final possui
aproximadamente 60 linhas de código.

Dica 1: Você terá que criar as variáveis portaPremiada, portaVazia e portaEscolhida.


Lembre-se que, caso o usuário opte por trocar de porta, você precisará atualizar a
variável portaEscolhida para a porta que foi trocada.

Dica 2: Para sortear a portaPremiada (e também encontrar a portaVazia e trocar de


porta) utilize:

// Definir a porta premiada

// Inicializa a semente para a função rand() usando o tempo atual


srand(time(NULL)); // Utilize uma única vez

// Gera um número aleatório entre 1 e 3


int portaPremiada = rand() % 3 + 1;
// printf("\nA porta premiada é: %d", portaPremiada); //comente essa
linha para ficar divertido

Dica 3: Para ler a portaEscolhida (int), utilize:


scanf("%d", &portaEscolhida);

E para ler a opção de sim ou não: s/n (char), para trocar de porta, utilize:
char opcao;
scanf(" %c", &opcao);

O espaço em branco antes de %c na função scanf() é utilizado para ignorar quaisquer


caracteres em branco (como espaços, tabulações, quebras de linha etc.) presentes no
buffer de entrada antes do caractere que está sendo lido. Caso você tenha problemas
com o buffer de entrada (stdin) ou saída (stdout) durante a leitura de algum char, utilize
a função fflush(stdin) ou fflush(stdout); logo antes da função scanf().

3
Dica 4: Lembre-se de utilizar | | para testar condições com o operador OR (ou) ou &&
para o operador AND (e).

Simulação do jogo (sem trocar de porta: n):


=> Bem-vindo ao jogo Monty Hall!
=> Escolha uma porta (1, 2 ou 3): [portaEscolhida = 1]
(Sistema sorteia a porta premiada (1, 2 ou 3): [portaPremiada = 2]
(Abrir porta vazia que não pode ser a portaEscolhida nem a portaPremiada)
=> O apresentador abriu a porta 3 que está vazia. [portaVazia = 3]
=> Você deseja trocar para a outra porta? (s/n): n
=> Você perdeu. A porta premiada era a 2.

Simulação do jogo (trocando de porta: s):


=> Bem-vindo ao jogo Monty Hall!
=> Escolha uma porta (1, 2 ou 3): [portaEscolhida = 1]
(Sistema sorteia a porta premiada (1, 2 ou 3): [portaPremiada = 2]
(Abrir porta vazia que não pode ser a portaEscolhida nem a portaPremiada)
=> O apresentador abriu a porta 3 que está vazia. [portaVazia = 3]
=> Você deseja trocar para a outra porta? (s/n): s
(Trocar de porta que não pode ser a portaEscolhida originalmente nem a portaVazia.
=> Você trocou para a porta 2.
=> Você ganhou! Parabéns!

Você também pode gostar