Buscar

Lista1 2012.2 P1-SI

Prévia do material em texto

1ª Lista de Exercícios de Programação 1 
Professor: Roberto Souto Maior de Barros
Email da monitoria: monitoria-
if968@googlegroups.com 
CIn-UFPE-2012.2
Disponível desde: 05/02/2013
Entrega: 27/02/2013
1. Pedra, Papel, Tesoura, Lagarto e Spock
O jogo pedra,papel,tesoura,lagarto e spock é uma variação do famoso jogo pedra,papel e tesoura. 
Faça um programa que receba do usuário dois chars, representando a opção de dois 
jogadores ,faça a comparação para saber quem é o vencedor e imprima o resultado na tela.
As regras do jogo são as seguintes:
- Tesoura corta papel
- Papel cobre pedra
- Pedra esmaga lagarto
- Lagarto envenena spock
- Spock dobra tesoura
- Tesoura decapita lagarto
- Lagarto come papel
- Papel desqualifica spock
- Spock vaporiza pedra
- Pedra esmaga tesoura
As letras que representam cada uma das opções são:
- Pedra (R)
- Papel (P)
- Tesoura(T)
- Lagarto (L)
- Spock(S)
Obs: O uso de switch é obrigatório nessa questão.
2. Palíndromos
Um palíndromo é uma seqüência de caracteres que é lida da esquerda para a direita ou da direita 
para a esquerda e a sequência(ordem) lida é a mesma. Escreva um programa que leia várias 
Strings e determine se cada uma delas é ou não um palíndromo. A lista de Strings a serem 
testadas terminará com a string FIM como entrada. O programa deve conter uma subrotina que 
determinará se a String passada é ou não um palíndromo.
Exemplos:
Digite uma sequência: aba
É palíndromo
Digite uma sequência: 1234
Não é palíndromo
Digite uma sequência: FIM
Fim do programa!
3. Equação de Segundo Grau
Uma equação do segundo grau é da forma ax² + bx + c.
Escreva um programa tal que um usuário possa digitar os valores de a, b e c, e você dê as raízes 
da equação.
Lembre-se que as raízes podem ser:
○ Duas raízes reais e diferentes;
○ Duas raízes reais e iguais;
○ Nenhuma raiz real.
4. Classe Bugada
A classe abaixo está com erros de lógica. Seu trabalho será corrigi-los e deixar no código um 
comentário dizendo tudo que alterou e porque alterou para consertar a classe.
import java.util.Scanner;
public class ClasseBugada {
private int tamanho;
private String[] nomes;
public ClasseBugada(int tamanho) {
this.tamanho = tamanho;
this.nomes = new String[this.tamanho];
}
public int getTamanho() {
return this.tamanho;
}
public void inserirFinal(String nome) {
int i = 0;
while (nomes[i] != null) {
i++;
}
nomes[i] = nome;
}
public void removerComeco() {
for (int i = 0; i < this.getTamanho(); i++) {
this.nomes[i] = this.nomes[i + 1]; 
}
}
public String buscarElemento(int pos) {
return this.nomes[pos];
}
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
ClasseBugada demo = new ClasseBugada(10);
demo.removerComeco();
demo.buscarElemento(0).toString();
for (int i = 0; i <= demo.getTamanho(); i++) {
System.out.println("Insira uma string:\n");
String input = console.next();
demo.inserirFinal(input);
}
}
}
5. Conjuntos
Leia dois conjuntos de números dados pelo usuário. Dê as seguintes opções de escolha de 
operações que serão realizadas entre os 2 conjuntos recebidos:
1 - calcular intersecção entre os conjuntos;
2 - calcular a união entre os conjuntos;
3 - calcular a diferença entre os conjuntos;
4 - Digitar novos conjuntos;
5 - Terminar o Programa.
Devem ser utilizadas subrotinas para cada uma dessas operações. O usuário pode fazer operações 
quantas vezes quiser até escolher a opção 5.
Exemplo:
 Digite a cardinalidade do Conjunto A: 3
 Digite 3 elemento(s): 180 150 160
 Digite a cardinalidade do Conjunto B: 5
 Digite 5 elemento(s): 10 70 40 15 180
 Escolha uma opção:
 1 - calcular intersecção entre os conjuntos;
 2 - calcular a união entre os conjuntos;
 3 - calcular a diferença entre os conjuntos(A-B);
 4 - Digitar novos conjuntos;
 5 - Terminar o Programa.
1
a intersecção é: {180}
 Escolha uma opção:
 1 - calcular intersecção entre os conjuntos;
 2 - calcular a união entre os conjuntos;
 3 - calcular a diferença entre os conjuntos(A-B);
 4 - Digitar novos conjuntos;
 5 - Terminar o Programa.
2
A união é: {180, 150, 160, 10, 70, 40, 15}
Escolha uma opção:
 1 - calcular intersecção entre os conjuntos;
 2 - calcular a união entre os conjuntos;
 3 - calcular a diferença entre os conjuntos(A-B);
 4 - Digitar novos conjuntos;
 5 - Terminar o Programa.
3
A diferença é: {150, 160}
Escolha uma opção:
 1 - calcular intersecção entre os conjuntos;
 2 - calcular a união entre os conjuntos;
 3 - calcular a diferença entre os conjuntos(A-B);
 4 - Digitar novos conjuntos;
 5 - Terminar o Programa.
4
Digite a cardinalidade do Conjunto A: 3
 Digite 3 elemento(s): 180 150 160
 Digite a cardinalidade do Conjunto B: 5
 Digite 5 elemento(s): 10 70 40 15 180
Escolha uma opção:
 1 - calcular intersecção entre os conjuntos;
 2 - calcular a união entre os conjuntos;
 3 - calcular a diferença entre os conjuntos(A-B);
 4 - Digitar novos conjuntos;
 5 - Terminar o Programa.
5
Fim do Programa!
6. Adivinhação
É necessário o uso de array para essa questão. 
O jogo da forca é basicamente um jogo de adivinhação onde se deve descobrir uma palavra 
oculta, que vai sendo revelada à medida que o jogador propõe letras, se ele acertar a letra ela é 
revelada na palavra oculta, sempre imprima a palavra oculta (usando ‘=’ no lugar das letras não 
reveladas) a cada entrada do programa conforme no exemplo. O programa deve receber como 
entrada uma String que será a palavra, depois o usuário deve entrar com os “chutes” de letras ou 
com a palavra em si. Se ele acertar, as letras devem ser reveladas nas posições originais, se errar, 
o jogador perde uma tentativa. Cada jogador tem no máximo 6 tentativas. O programa termina 
quando o jogador perder ou ganhar
Exemplo:
Informe a palavra: testando
========
Digite uma letra ou palavra: a
====a===
Digite uma letra ou palavra: t
t==ta===
Digite uma letra ou palavra: z
A palavra não contém essa letra! 5 tentativas restantes
t==ta===
Digite uma letra ou palavra: testando
testando
Parabéns, você venceu.

Continue navegando