Recomendações Importantes
Um vírus apocalíptico chegou à terra fazendo com que os seres humanos passassem a viver sentados alimentando-se somente de biscoitos com refrigerante, o que lhes proporciona uma vida de no máximo 40 anos e preguiça para estudar.
Devido a isto, nossos amigos e supremos seres de Beeblebrox (chamados inocentemente de ETs) vieram à terra para tentar salvar a espécie humana do declínio atual. Guilhermino, ultimo humano com bons hábitos e um eximio programador,
foi escolhido por eles para (re)transmitir os conhecimentos da humanidade para todos da terra. Para esta tarefa ele ganhou um 'Constelactus W9K', um robô que cabe dentro do ouvido e consegue armazenar todo o conhecimento do universo e transmitir
para a mente de quaisquer outra pessoa, contanto que Guilhermino cadastre os conhecimentos antes.
Guilhermino está encarregado de gerenciar os dados do 'Constelactus W9K' - ele quem cadastra e apaga itens do robô.
Mas, como nem tudo são flores, os Beeblebrox esqueceram o código-fonte do 'Constelactus W9K'. Então, você esta encarregado de programar o 'Constelactus W9K'. Ele terá as seguintes funções:
:add "Conhecimento" "Área" //Adiciona um conhecimento à área escolhida
:remove "Conhecimento" "Área" //Remove o conhecimento da área escolhida
:show "*" //Exibe todos os conhecimentos adicionados
:show "área" //Exibe os conhecimentos da área escolhida
:quit //Encerra o programa
Atenção: O método de busca deve ser implementado recursivamente.
As áreas de conhecimento são:
Exemplo de uso:
:add "A matemática é a mãe das ciências" "Exatas" // Entrada do usuário
Conhecimento adicionado à 'Exatas' // Saída
:add "A água é formada por moléculas de H2O" "Natureza" // Entrada do usuário
Conhecimento adicionado à 'Natureza' // Saída
:remove "A matemática é a mãe das ciências" "Exatas" // Entrada do usuário
Conhecimento removido de 'Exatas' // Saída
:show "*" // Entrada do usuário
1 - A água é formada por moléculas de H2O // Saída
:quit // Fim do programa
Após uma longa jornada levando os saberes da humanidade para os humanos perdidos em biscoitos e refrigerante, Guilhermino chega na cidade de Itaquimongo. As lendas sobre a cidade são reais, além da doença nos humanos, a cidade está cheia de Lobicodes, monstros que danificam os códigos ao tocarem em seu código-fonte. Isto quer dizer que, se tocarem no 'Constelactus W9K', este ficará com defeito - e Itaquimongo não será salva.
Sua tarefa é chegar no primeiro humano que conseguir sem tocar em um Lobicodes- se tocar em algum, perderá a missão. Para isto, você terá de criar um mapa de tamanho 6x6 com uma chance de 20% de aparecer um humano ('H') em cada posição e de 10% de aparecer um Lobicodes('L') em cada posição. "_" indica caminho livre (sem humano e sem Lobicodes). Guilhermino deve sempre iniciar no canto inferior direito do mapa.
Exemplo de mapa:
_ L _ _ H _
L _ _ H _ L
_ _ _ _ _ _
_ _ _ _ _ _
L _ _ H _ _
H _ _ _ L G
OBS.:
W - Anda para cima
S - Anda para baixo
A - Anda para a esquerda
D - Anda para a Direita
Bem vindo a Itaquimongo
Salve a cidade, chegue até um humano
_ L _ _ H _
L _ _ H _ L
_ _ _ _ _ _
_ _ _ _ _ _
L _ _ H _ _
H _ _ _ L G
a
\\Entrada
_ L _ _ H _
L _ _ H _ L
_ _ _ _ _ _
_ _ _ _ _ _
L _ _ H _ _
H _ _ _ X _
Que pena, você encontrou um Lobicode. A missão falhou! //Saída
//Fim do programa
Eduardo, um grande desenvolvedor de jogos lhe convidou para desenvolver seu novo jogo: Epaminondas World. Como a grande empresa de Eduardo estava com o prazo atrasado, ele lhe alocou na área de desenvolvimento do sistema de players e equipamentos.
Esta é a sua tarefa:
Crie a classe arma com: nome, nível e poder.
Crie a classe armadura com: nome, nível e vida
Crie a classe jogador com: nome, nível, arma, armadura, ataque e vida
Crie um main que será um simulador de criação do personagem.
Deve ser possível a criação de armas, armaduras, e personagens equipados com esses equipamentos, logo em seguida o sistema deve imprimir todas as informações sobre o personagem para o usuário.
O que deseja fazer?
1- Criar um jogador
2- Criar arma
3- Criar armadura
4- Sair //mensagem do sistema
2 //entrada do usuario
Digite o nome da arma: //sistema
Dragon Power
Digite o nível da arma //sistema
3 //entrada do usuario
Digite o poder da arma //sistema
15 //entrada do usuario
O que deseja fazer?
1- criar um jogador
2- criar arma
3- criar armadura
4- sair //mensagem do sistema
1 //entrada do usuario
Digite o nome do jogador //sistema
Epaminondas //usuario
Digite o nivel do jogador //sistema
5 //usuario
Deseja equipar alguma arma? //sistema
Sim //usuario
Digite o nome da arma //sistema
Power Dragon //usuario
Deseja equipar alguma armadura? //sistema
Nao //usuario
Nome: Epaminondas
Nivel: 5
Arma: Power Dragon (Nivel: 3, Poder: 15)
Armadura: vazio
Ataque: 50
Vida: 50
//sistema
//volta pro menu
//O programa só encerra quando o usuário escolher a opção de sair
Pinho um jogador de dota muito habilidoso resolveu formar um time competitivo, porém após alguns desempenhos negativos ele resolveu criar um sistema onde ele pudesse cadastrar seus jogos passados para evitar de cometer os mesmo erros.
Implemente um sistema onde seja possível cadastrar uma partida, essa partida deve conter o nome dos dois times que participaram, um ID(numérico), a duração da partida, 5 personagens(heróis) de cada time e também os scores dos dois times(eliminações totais de heróis, gold adquirido de cada time).
Um personagem deve conter o nome do mesmo, seu level, sua função no jogo, número de eliminações, número de mortes, número de assistências, quantidades de creeps(unidades) eliminadas e creeps negadas, e a partir desses dados deve se calcular o valor estimado de gold desse personagem no fim da partida e seu gold por minuto(também se deve armazenar esse valor).
OBS: O valor médio adquirido ao se eliminar um creep é de 45 gold, caso se elimine um herói o gold adquirido será de aproximadamente 250 gold, desconsidere a perda de gold.
Sua parte no desenvolvimento desse programa é criar as classes necessárias para o desenvolvimento da questão, criando uma classe main onde essas classes possam ser testadas ou seja, onde se possa cadastrar uma partida e visualizar todos os dados da mesma.
Exemplo:
Olá cadastre sua partida:
Digite o ID desta partida:
144551//entrada
Qual foi a duração deste jogo?//inserir apenas o número
45//entrada
Informe o nome de um dos times:
PinhoTeam//entrada
Cadastre os personagens membros deste time:
Personagem 1 : qual o nome deste personagem?
void//entrada
Qual a função deste personagem?
carry//entrada
Qual level ele alcançou ao fim do jogo?
23//entrada
informe quantos inimigos(herois) ele abateu
15//entrada
Quantas vezes ele foi tirado de combate(morto)?
5//entrada
Quantas vezes ele contribui em eliminações(Assistências)?
20//entrada
Quantas unidades inimigas ele eliminou(creeps)?
250//entrada
Quantas unidades aliadas ele negou(creeps negadas)?
50//entrada
Personagem 2 : qual o nome deste personagem?
//repetir processo de cadastro até se complete os 5 membros do time
...
--PinhoTeam cadastrado com sucesso--//mensagem do sistema
Informe o nome do outro time:
PinhoEnemies//entrada
//repita o processo de cadastro da mesma maneira que ocorreu com o primeiro time.
...
--PinhoEnemies cadastrado com sucesso--//mensagem do sistema
PinhoTeam x PinhoEnemies - xxx ID
duração: minutos
PinhoTeam - xx eliminações- xx.xxx gold
-membros-
--- Void -Carry - level xx - eliminações xx - mortes xx - assistências xx - eliminações creeps xx - creeps negadas xx- gold total xxxxx - gold por minuto xxx
--- Chen - Suporte - level xx - eliminações xx - mortes xx - assistências xx - eliminações creeps xx - creeps negadas xx- gold total xxxxx - gold por minuto xxx
--- Pudge - Ganker - level xx - eliminações xx - mortes xx - assistências xx - eliminações creeps xx - creeps negadas xx- gold total xxxxx - gold por minuto xxx
--- DarkSeer - Offlaner- level xx - eliminações xx - mortes xx - assistências xx - eliminações creeps xx - creeps negadas xx- gold total xxxxx - gold por minuto xxx
--- Mirana - Semi -Carry - level xx - eliminações xx - mortes xx - assistências xx - eliminações creeps xx - creeps negadas xx- gold total xxxxx - gold por minuto xxx
PinhoEnemis - xx eliminações- xx.xxx gold
-membros-
--- Spectre - Carry - level xx - eliminações xx - mortes xx - assistências xx - eliminações creeps xx - creeps negadas xx- gold total xxxxx - gold por minuto xxx
--- Lion - Suporte - level xx - eliminações xx - mortes xx - assistências xx - eliminações creeps xx - creeps negadas xx- gold total xxxxx - gold por minuto xxx
--- Queen of Pain - Ganker - level xx - eliminações xx - mortes xx - assistências xx - eliminações creeps xx - creeps negadas xx- gold total xxxxx - gold por minuto xxx
--- Clock - Offlaner- level xx - eliminações xx - mortes xx - assistências xx - eliminações creeps xx - creeps negadas xx- gold total xxxxx - gold por minuto xxx
--- Tuskar - Semi -Carry - level xx - eliminações xx - mortes xx - assistências xx - eliminações creeps xx - creeps negadas xx- gold total xxxxx - gold por minuto xxx
Pinho era um menino muito atrevido que resolveu se aventurar nas floresta de Peruño Annos. Infelizmente ele não imaginava os perigos que essa floresta escondia!! Após ser capturado pela bruxa Daniela, Pinho foi escravizado e
forçado a trabalhar cuidando dos monstros que Daniela capturava.
Pinho que alem de atrevido era desorganizado está precisando da sua ajuda, pois ele não está conseguindo catalogar todos os monstros no tempo certo e se ele continuar assim a bruxa vai mandar-lo para os "cuidados" de Eduardo, o lenhador. Eduardo gosta muito de lutas e por isso a bruxa Daniela patrocina um evento de UFC com seus monstros para ver Eduardo ficar feliz e tentar ganhar sua atenção.
Crie a classe monstro com: nome, idade, peso, especie, HP, MP, força e inteligencia.
Crie o main com as opções:
1 - Adicionar monstro //adiciona um novo monstro
2 - Procurar monstro //retorna todas as informações (nome, idade, peso...)
3 - Listar monstros
//lista todos os monstros cadastrados no sistema até o momento
4 - Modificar monstro //modifica um monstro existente
5 - Remover monstro
//remove um monstro existente
6 - Promover luta //promove uma luta
7 - Sair //encerra o programa
Observações:
No modo de promover luta o usuário deve escolher 2 monstros registrados para que eles lutem entre si. (o usuário vai procurar o monstro pelo nome)
A luta é organizada em turnos, ou seja, só se executa uma ação por vez:
Ações:
Descrições:
Sobre a luta:
Estudando Matemática Discreta Dave aprendeu que pelo pequeno teorema de Fermat a^(p-1) == 1 (mod p) se p é primo e a e p são coprimos.
Dave é esperto e ele sabe que se: a == b (mod p) então a*x == b*x (mod p). Com esse conhecimento, Dave percebeu que ele poderia calcular o inverso modular de a mod p, sendo p primo e a e p coprimos, usando o pequeno teorema de Fermat.
a^(p-1) == 1 (mod p)
a^(p-1) * a^-1 == a^-1 (mod p)
a^(p-2) == a^-1 (mod p)
Ou seja, o inverso modular de a mod p é apenas a^(p-2) mod p sendo p um número primo e a e b coprimos.
O usuário deve dar entrada em 2 números separados por uma virgula, o primeiro sendo o A e o segundo sendo o P.
O programa só encerra quando o usuário digita sair.
Para cada caso:
Dica: Utilize o fato que (a*b)%m é igual a ((a%m)*(b%m))%m. a%b é o resto de a divido por b.
Exemplo
7, 100 //entrada do usuario
Muito difícil //saida do sistema
19, 101 //entrada do usuario
16 //saida do sistema
1000, 29 //entrada do usuario
23 //saida do sistema
9, 3 //entrada do usuario
Muito difícil //saida do sistema
Sair //entrada do usuario
//encerra programa