Buscar

ALGORITIMO E LOGICA DE PROGRAMAÇÃO

Prévia do material em texto

M.A.P.A
 Material de Avaliação Prática de Aprendizagem 
 
 Acadêmico: Thiago dos Santos Pitanga
 RA: 19116626-5
Disciplina: ALGORÍTIMO E LÓGICA DE PROGRAMAÇÃO I 
A Sociedade Brasileira de Computação (SBC) promove, anualmente, a maratona de programação. Nesse evento, competidores de toda a América Latina competem em um desafio onde o raciocínio matemático e a capacidade de trabalhar sob pressão são avaliados a níveis extremos.
Em uma de suas edições, a SBC incluiu um exercício que faz referência ao jogo “Dois ou Um” (também conhecido como “Dois ou Um”, em algumas localidades do país). O jogo funciona como descrito a seguir.
“Cada jogador escolhe um valor entre dois ou um; ao som de um comando (geralmente um dos competidores anuncia em voz alta “Dois ou... Um! ”), todos os participantes mostram o valor escolhido, utilizando uma das mãos: se o valor escolhido foi um, o competidor mostra o dedo indicador estendido; se o valor escolhido foi dois, mostra a mão com exatos dois dedos estendidos. O ganhador é aquele que tiver escolhido um valor diferente de todos os outros; se não há um jogador com valor diferente de todos os outros (por exemplo todos os jogadores escolhem dois, ou um grupo de jogadores escolhe dois e outro grupo escolhe um), não há ganhador. ”
André, Carlos e Pietro são grandes amigos e jogam Dois ou Um a toda hora: para determinar quem será o motorista da rodada, quem vai pagar a conta, etc. Jogam tanto que resolveram fazer um aplicativo de celular para jogar. Como não sabem programar, dividiram as tarefas entre amigos que sabem, inclusive você. Dados os três valores escolhidos por André, Carlos e Pietro, cada valor dois ou um, escreva um algoritmo que determina se há um ganhador, e nesse caso determina quem é o ganhador.
O algoritmo deve receber como entrada, três valores inteiros que serão armazenados nas variáveis A, C e P indicando os valores escolhidos por André, Carlos e Pietro, respectivamente.
O algoritmo deverá produzir uma única saída, imprimindo apenas um caractere. Se o vencedor for André, deve-se imprimir a letra “A”, na tela; se o vencedor for Carlos, é preciso mostrar o caractere “C”, na tela; se Pietro for o ganhador, então deve-se imprimir “P”; por fim, se não houver vencedor, deve-se imprimir um asterisco, “X”, na tela.
Deve-se considerar que o usuário é leigo, e nem sempre irá digitar ou o número dois (2) ou o número um (1). É preciso que o algoritmo trate as entradas que não estiverem dentro do padrão de dois ou um, solicitando ao usuário que insira um novo valor, caso ele não insira um dado válido (número 2 ou número 1). Considere que o usuário tem acesso apenas ao teclado numérico, sendo impossível inserir caracteres alfabéticos, acentos ou qualquer outro dado diferente de números.
Somente após validados os dados informados pelo usuário, o algoritmo deve apresentar o resultado e, consequentemente, quem foi vitorioso, de acordo com a seguinte tabela de exemplos de entradas e saídas:
 
	Caso
de
Teste
	Entradas
	Saída Correspondente
	
	A
(André)
	C
(Carlos)
	P
(Pietro)
	Ganhador:
	1º
	1
	1
	1
	“X”
	2º
	1
	1
	2
	“P”
	3º
	1
	2
	1
	“C”
	4º
	1
	2
	2
	“A”
	5º
	2
	1
	1
	“A”
	6º
	2
	1
	2
	“C”
	7º
	2
	2
	1
	“P”
	8º
	2
	2
	2
	“X”
 
O algoritmo deve ser escrito em pseudocódigo (portugol) e submetido para correção em formato txt (documento de texto – notepad) ou doc (documento do Microsoft Word). Algoritmos sem indentação terão desconto em pontuação. Serão avaliadas a corretude semântica e sintática, bem como a eficiência do código.
Sociedade Brasileira de Computação. Caderno de Problemas - Maratona de Programação da SBC – ACM ICPC. 2013. Disponível em <https://maratona.ime.usp.br/hist/2013/primeira-fase/prim-fase2013/maratona.pdf>, acessado em 09/03/2018.
Var
// Seção de Declarações das variáveis 
a : inteiro
c : inteiro
p : inteiro
Inicio
// Inicia as variáveis com valor nulo
a <- 0
c <- 0
p <- 0
// Valida a entrada de André
enquanto nao((a = 1) ou (a = 2)) faca
 escreva("André informe sua jogada: ")
 leia(a)
fimenquanto
// Valida a entrada de Carlos
enquanto nao((c = 1) ou (c = 2)) faca
 escreva("Carlos! Informe sua jogada: ")
 leia(c)
fimenquanto
// Valida a entrada de Pietro
enquanto nao((p = 1) ou (p = 2)) faca
 escreva("Pietro! Informe sua jogada: ")
 leia(p)
fimenquanto
// Verifica o resultado
se ((a = 2) e (c = 1) e (p = 1)) ou ((a = 1) e (c = 2) e (p = 2)) entao
 escreva("A")
senao
 se ((a = 1) e (c = 2) e (p = 1)) ou ((a = 2) e (c = 1) e (p = 2)) entao
 escreva("C")
 senao
 se ((a = 1) e (c = 1) e (p = 2)) ou ((a = 2) e (c = 2) e (p = 1)) entao
 escreva("P")
 senao
 escreva("X")
 fimse
 fimse
fimse
Fimalgoritmo

Continue navegando