Lista 1

Recomendações Importantes

  • A lista deve ser entregue até às 23:59:59 do dia 23/09/2015.
  • Deixe seus programas entendíveis. Imprima mensagens para auxiliar o usuário a utilizar o seu programa.
  • Seja criativo. As mensagens do seu programa não necessitam estar iguais aos exemplos, a menos que seja especificado.
  • A lista é individual, portanto não compartilhe seus códigos com outros alunos ou os coloque em locais públicos (Pastebin, Github).
  • Não copie. Se for detectado cópia da internet ou de um colega, as LISTAS envolvidas serão completamente zeradas.
  • Alguns exemplos aqui definidos podem apresentar comentários. Note que são apenas ilustrativos.
  • A correção da Questão Desafio é booleana. Ou seja: você receberá o ponto extra do desafio caso a resposta esteja 100% correta. Qualquer erro, mesmo que seja em apenas um caso, invalidará a questão.
  • Não é permitido o uso da API de Java ou bibliotecas externas, exceto quando permitido explicitamente na questão, na lista, ou autorizado por um monitor através da lista de email (Google Groups) da disciplina. Questões submetidas que violarem essa regra serão consideradas como não entregues.
  • São permitidas nessa lista, para todas as questões:
    • String
    • Scanner
    • Random

Questão 1 – Vinte e um

No filme 21, um professor universitário seleciona alguns alunos seus para formar uma equipe para jogar Blackjack em Las Vegas. Para aumentar as chances de vitória, cada membro treina contagem de cartas, que significa classificar as cartas de baralho (de ás a rei) em 3 grupos.

Ou seja, se aparecer na mesa 2 e 4, a contagem geral da rodada fica em +2. Se aparecer rei e dama, a contagem geral da rodada fica em -2.

A cada rodada do Blackjack, são expostas 11 cartas na mesa, sendo 5 pares dos jogadores e 1 carta do mesário, sendo a contagem geral a soma dos valores de cada uma das 11 cartas. Para um baralho, uma contagem de 20 ou mais significa quente e de -16 ou menos significa fria.

A equipe do professor é separada entre vários contadores e um apostador. Se uma mesa fica quente, quer dizer que aumentou a chance de vitória e o apostador vai; se a mesa ficar fria o contador sai da mesa e o apostador não vai.

O programa que você vai fazer é para os contadores. Ele vai encerrar em 3 condições:

    • se atingiu mesa quente (imprimindo em tela: fazer sinal para apostador entrar);
    • se atingiu mesa fria (imprimindo em tela: mesa fria, devo sair da mesa);
    • se já encerrou a 4ª rodada (imprimindo: vai demorar pra sair resultado, melhor tentar outra mesa).

A entrada do programa são as 11 cartas (separadas por espaço), no máximo 4 vezes (para dar 4 rodadas ou se houver resultado da mesa antes).

A saída é a impressão na tela da contagem geral, além das mensagens citadas acima.

Obs: Para cartas que não tem valor numérico, faça o mapeamento:

video da teoria da contagem filme 21: youtu.be/TKoCZnaIICY

Exemplo de entrada e saída:

insira as cartas que estão na mesa, (5 pares + 1 dealer), separada por espaços

2 3 4 5 6 7 8 9 10 11 12 // entrada do usuário

contagem geral: 2

insira as cartas que estão na mesa, (5 pares + 1 dealer), separada por espaços

10 11 12 13 14 7 8 9 6 5 12 // entrada do usuário

contagem geral: -2

insira as cartas que estão na mesa, (5 pares + 1 dealer), separada por espaços

14 14 14 14 13 13 13 13 12 12 12 // entrada do usuário

contagem geral: -13

insira as cartas que estão na mesa, (5 pares + 1 dealer), separada por espaços

2 3 4 5 6 7 8 9 10 11 12 // entrada do usuário

vai demorar pra sair resultado, melhor tentar outra mesa

contagem geral: -11

Questão 2 – Trials

Geovanna, uma assidúa frequentadora de cassinos, ouviu falar de um cassino peculiar.

Este cassino possuia prêmios muito bons, mas poucas pessoas se interessavam por ele.

Para entrar nele, era preciso passar por dois testes:

1º Resolver uma cifra cujo deslocamento sempre altera e mensagem também, e que inclui todos os tipos de caractéres.(Poucos sabem, mas a primeira palavra e as última palavras são fixadas)*O caractér de espaço é desconsiderado, e o último caractér considerado é o de ~*.

2ºConverter números de decimal pra binário e de binário pra decimal(é um cassino bem nerd).

Nos exemplos em questão, as palavras fixadas são "Bem-vindo " e "Boa sorte!". Podem utilizar quaisquer palavras na resolução.

Agora, você deve implementar um programa que elabore esses dois testes, pois você decide quem é digno de entrar neste cassino.

Exemplo de entrada e saída:

Digite quantas serão os deslocamentos:

5 // entrada do usuário

Em qual direção? L-R

L // entrada do usuário

Digite a mensagem.

OI // entrada do usuário

=`h(qdi_j JD =j\ Njmo`z

Digite um número na base decimal e positivo:

10 // entrada do usuário

1010

Digite um número na base binária

1010 // entrada do usuário

10

Exemplo de entrada e saída:

Digite quantas serгo os deslocamentos:

10 // entrada do usuário

Em qual direção? L-R

L // entrada do usuário

Digite a mensagem.

Jose // entrada do usuário

8[c#l_dZe @ei[ 8eW Iehj[u

Digite um número na base decimal e positivo:

12345 // entrada do usuário

11000000111001

Digite um número na base binária

11000000111001 // entrada do usuário

12345

Exemplo de entrada e saída:

Digite quantas serгo os deslocamentos:

3 // entrada do usuário

Em qual direção? L-R

R // entrada do usuário

Digite a mensagem.

987654321 // entrada do usuário

Ehp0ylqgr <;:987654 Erd Vruwh$

Digite um número na base decimal e positivo:

512 // entrada do usuário

1000000000

Digite um número na base binária

1000000000 // entrada do usuário

512

Exemplo de entrada e saída:

Digite quantas serгo os deslocamentos:

3 // entrada do usuário

Em qual direção? L-R

R // entrada do usuário

Digite a mensagem.

Zatchbell // entrada do usuário

Ehp0ylqgr ]dwfkehoo Erd Vruwh$

Digite um número na base decimal e positivo:

255 // entrada do usuário

11111111

Digite um número na base binária

11111111 // entrada do usuário

255

Questão 3 - Monte de Fichas

Bem, não é fácil gerenciar um casino grande, não é mesmo? Bob sabe muito bem disso, apesar de ter apenas uma tarefa relativamente simples: trocar dinheiro por fichas.

No entanto, devido à grande quantidade de clientes, ele se preocupa em conseguir fazer as trocas corretamente e em um tempo rápido. Para isso, ele teve a ideia de um programa para auxiliá-lo. Como Bob não programa, essa será sua tarefa: estabelecer o tamanho mínimo das colunas de fichas, dado uma quantia inteira N da moeda corrente.

É sabido que as fichas podem ser de 1, 5, 10, 20, 50 e 100.

Obs: O programa encerra quando a entrada tem valor -1.

123 // entrada do usuário

1

1

1 20 100

534 // entrada do usuário

100

1 100

1 100

1 100

1 10 20 100

285 // entrada do usuário

100

5 10 20 50 100

-1 // entrada do usuário

Fim de programa!

Questão 4 – Introdução ao Poker

Poker é um jogo mundialmente famoso em que a sua categoria mais famosa é o no limit texas hold'em. Sit and Go é uma ótima forma de começar a jogar, que consiste em no máximo 10 jogadores por torneio.Sua missão agora é criar as classes Jogador, que terá os atributos nome, idade e quantidadeFichas(começa com 1500); Mesa, que terá tamanhoAposta(você escolhe), dealerAtual(que é um jogador) e quantidadeJogadoresMesa(começa com 10). Faça uma classe para testar, que vai pedir o nome e a idade do jogador e depois criar um jogador, uma mesa e coloca este jogador como o dealerAtual, em seguida imprima todos os atributos de cada classe. Não esqueça do construtor e dos gets e sets.

Exemplo de programa:

Digite o nome do jogador.

Eliana // entrada do usuário

Digite a idade do jogador.

20 // entrada do usuário

Saída

Nome do jogador: Eliana. Idade do jogador:20. Quantidade de fichas do jogador:1500.

Tamanho da aposta:80. Dealer Atual:Eliana. Jogadores na mesa:10.

Questão 5 - Despoir

Uma vida de apostas não é algo seguro. Você sabe muito bem disso, já que ficou bastante endividado. Sua única escolha agora é participar do cassino flutuante Despoir, que lhe dará as chances de quitar suas dívidas e até lucrar. Este cassino possui como principal atração o Pedra-Papel-Tesoura Restrito.

Nessa versão do Pedra-Papel-Tesoura restrito, cada jogador possui: 6 cartas, sendo duas pedras, dois papeis e duas tesouras; 3 estrelas. A cada partida, é escolhida uma carta, que é gasta. Se ganhar, o jogador ganha a estrela do oponente. O objetivo final é gastar todas as cartas e terminar com pelo 3 estrelas. Se o objetivo for preenchido, o jogador ganha X para cada estrela adicional; se não for, perde X para cada estrela que falta. Obs: Se você perder todas as estrelas, o jogo é perdido.

Você só pode sair do navio quando atingir a sua meta de 1 milhão ou passar a dever pelo menos 1 milhão. Sua dívida inicial é de 100 mil, e as apostas são valores positivos de até 50 mil.

Faça um programa que simula esta situação. Admita que a escolha do oponente é aleatória e ele não possui limite de cartas/estrelas (são vários oponentes).

É permitido o uso da classe Random.

Bem-vindo ao Despoir!

Saldo atual: -100000

Insira sua aposta:

1000 // Entrada do usuário

Você possui: 3 estrelas, 2 pedras, 2 papeis, 2 tesouras.

Digite 1 para pedra, 2 para papel, 3 para tesoura.

1 // Entrada do usuário

Você ganhou!

Você possui: 4 estrelas, 1 pedras, 2 papeis, 2 tesouras.

Digite 1 para pedra, 2 para papel, 3 para tesoura.

2 // Entrada do usuário

Você ganhou!

Você possui: 5 estrelas, 1 pedras, 1 papeis, 2 tesouras.

Digite 1 para pedra, 2 para papel, 3 para tesoura.

3 // Entrada do usuário

Você ganhou!

Você possui: 6 estrelas, 1 pedras, 1 papeis, 1 tesouras.

Digite 1 para pedra, 2 para papel, 3 para tesoura.

1 // Entrada do usuário

Você perdeu!

Você possui: 5 estrelas, 0 pedras, 1 papeis, 1 tesouras.

Digite 1 para pedra, 2 para papel, 3 para tesoura.

2 // Entrada do usuário

Você ganhou!

Você possui: 6 estrelas, 0 pedras, 0 papeis, 1 tesouras.

Digite 1 para pedra, 2 para papel, 3 para tesoura.

3 // Entrada do usuário

Você ganhou!

Você terminou com 7 estrelas. Você ganhou 4000!

Saldo atual: -96000

Insira sua aposta:

Desafio - Entry Fee

Sua tarefa é simples, jovem gafanhoto. Você deve ler a entrada do usuário, identificar qual padrão de entrada é o caso, e gerar a saída correspondente. A entrada pode seguir dois padrões: NOME QUANTIA ou NOME QUANTIA TAXA. A saida deve ser “NOME entrou com uma quantia de QUANTIA e deve pagar X para jogar.”, onde X equivale a (TAXA)% da QUANTIA.

O nome não é composto.

A quantia é sempre um inteiro positivo.

A taxa é um inteiro de 1 a 100. Quando não explícito, tem valor 5.

(A entrada sempre obedecerá esses padrões, não sendo necessárias verificações quanto a isso)

O programa encerra com a entrada “fim”.

É obrigatório criar uma classe Pessoa e utilizar múltiplos construtores, não podendo os atributos do objeto, após criado, serem alterados.

Kaiji 20000000 // Entrada do usuário

Kaiji entrou com uma quantia de 20000000,00 e deve pagar 1000000,00 para jogar.

Gambit 10000 21 // Entrada do usuário

Gambit entrou com uma quantia de 10000,00 e deve pagar 2100,00 para jogar.

Scott 50 7 // Entrada do usuário

Scott entrou com uma quantia de 50,00 e deve pagar 3,50 para jogar.

John 5000 50 // Entrada do usuário

John entrou com uma quantia de 5000,00 e deve pagar 2500,00 para jogar.

Tony 123 5 // Entrada do usuário

Tony entrou com uma quantia de 123,00 e deve pagar 6,15 para jogar.

Vitor 100 // Entrada do usuário

Vitor entrou com uma quantia de 100,00 e deve pagar 5,00 para jogar.

fim // Entrada do usuário

Fim de programa!