Universidade Federal de Goiás Instituto de Informática - INF

Propaganda
Universidade Federal de Goiás
Instituto de Informática
1ª Prova de Introdução a Programação
06/04/11
Instruções:
A prova deve ser realizada individualmente e sem consultas.
As respostas deverão ser implementadas na linguagem Java.
A prova terá a duração de 90 minutos.
Considere em todas as questões que o usuário fornecerá somente
valores válidos individualmente cada um.
5. Não é necessário formatar os números de saída. Por exemplo,
100.67777 ou 100.68 são equivalentes.
1.
2.
3.
4.
Questão 1 (valor 3,0 pontos):
Uma locadora de filmes tem as seguintes regras para aluguel de fitas.
- De segunda, terça e quarta: um desconto de 30% em cima do preço normal; domingo
preço normal; e quinta, sexta e sábado: acréscimo de 20% do preço normal;
- Aluguel de fitas comuns: preço normal e aluguel de lançamentos: acréscimo de 13%
em cima do preço normal.
Desenvolva um programa em Java para ler o preço normal de aluguel da fita (em R$),
o dia ser locado (domingo, segunda, terça, … ou sábado - considerando códigos 1, 2,
3, …, 7 respectivamente) e a categoria do filme alugado (comum ou lançamento).
Calcular e imprimir o preço final que será pago pela fita. Considere que o cliente só
pode alugar uma fita por um dia.
Questão 2 (valor 3,0 pontos):
Números palíndromos são aqueles que escritos da direita para esquerda ou da
esquerda para direita tem o mesmo valor. Faça um programa em linguagem Java que
dada um número inteiro de 5 dígitos, calcule e escreva se este número é palíndromo.
Exemplos de entrada e saída:
Entrada (uma de cada vez)
Saída
19291
é um número palíndromo.
12345
não é um número palíndromo.
Questão 3 (valor 4,0 pontos):
Crie um programa em Java que avalie o resultado final de um jogo-da-velha. O jogo-da-velha consiste na marcação de um sinal – geralmente X ou O em uma grade
formada de 3x3 células, onde o vencedor é aquele que primeiro formar uma linha,
coluna ou diagonal. Suponha que cada célula será fornecida pelo usuário, de cima para
baixo e da esquerda para direita, de forma sequencial, ou seja, C1 a C9, considerando
que o valor 0 (zero) significa célula não marcada, 1 (um) célula marcada pelo jogador 1
e 1 (menos um) célula marcada pelo jogador 2. Considere que programa receberá os
nove valores válidos e depois fornecer um dos resultados: A – Jogo Inválido; B – Vitória
do Jogador 1; C - Vitória do Jogador 2; D – Empate. A seguir foram desenhados 4
casos, ilustrando as situações de A a D respectivamente:
Dica: note que a soma dos valores dos elementos de uma coluna, linha ou diagonal
determina se houve preenchimento completo na mesma por um jogador. Por exemplo,
se a soma dos valores de uma coluna totalizar -3, significa que a mesma foi fechada
pelo jogador 2.
Colinha:
Boa Prova!
Universidade Federal de Goiás
Instituto de Informática
Gabarito da 1ª Prova de Introdução a Programação
Questão 1:
Uma locadora de filmes tem as seguintes regras para aluguel de fitas.
- De segunda, terça e quarta: um desconto de 30% em cima do preço normal; domingo preço normal; e
quinta, sexta e sábado: acréscimo de 20% do preço normal;
- Aluguel de fitas comuns: preço normal e aluguel de lançamentos: acréscimo de 13% em cima do preço
normal.
Desenvolva um programa em Java para ler o preço normal de aluguel da fita (em R$), o dia ser locado
(domingo, segunda, terça, … ou sábado - considerando códigos 1, 2, 3, …, 7 respectivamente) e a
categoria do filme alugado (comum ou lançamento). Calcular e imprimir o preço final que será pago pela
fita. Considere que o cliente só pode alugar uma fita por um dia.
Resposta:
import java.util.Scanner;
public class Questao1{
public static void main(String args[]){
double preco_normal, preco, preco_pagamento;
int dia_semana;
String tipo_filme;
Scanner leitor = new Scanner(System.in);
System.out.println("Informe o tipo de filme: ");
tipo_filme = leitor.nextLine();
System.out.println("Informe o preço normal do filme: ");
preco_normal = leitor.nextDouble();
System.out.println("Informe o dia da semana da locação: ");
dia_semana = leitor.nextInt();
preco_pagamento = preco_normal;
//Verifica o dia da semana da locação
//Se é segunda, terça ou quarta desconta 30%
if(dia_semana == 2 || dia_semana == 3 || dia_semana == 4)
preco_pagamento = preco_pagamento - preco_normal*0.3;
//Se é quinta, sexta ou sábado acrescenta 20%
else if(dia_semana == 5 || dia_semana == 6 || dia_semana == 7)
preco_pagamento = preco_pagamento + preco_normal*0.2;
//Verifica se é filme comum ou lançamento
if(tipo_filme.equals("lançamento"))
preco_pagamento = preco_pagamento + preco_normal*0.13;
System.out.println("O preço a pagar é de "+preco_pagamento);
}
}
Questão 2:
Números palíndromos são aqueles que escritos da direita para esquerda ou da
esquerda para direita tem o mesmo valor. Faça um programa em linguagem Java que
dada um número inteiro de 5 dígitos, calcule e escreva se este número é palíndromo.
Exemplos de entrada e saída:
Entrada (uma de cada vez)
Saída
19291
é um número palíndromo.
12345
não é um número palíndromo.
Resposta:
import java.util.Scanner;
public class Questao2{
public static void main(String args[]){
int numero, numero1, numero2, numero3, numero4, numero5, resto;
Scanner leitor = new Scanner(System.in);
System.out.println("Informe um número com 5 dígitos: ");
numero = leitor.nextInt();
//decompõe o número
numero1 = numero / 10000;
resto
= numero % 10000;
numero2 = resto / 1000;
resto
= resto % 1000;
numero3 = resto / 100;
resto
= numero % 100;
numero4 = resto / 10;
numero5 = resto % 10;
//verifica se é palíndromo
if( (numero1 == numero5) && (numero2 == numero4) )
System.out.println("O número "+numero+" é palíndromo");
else
System.out.println("O número "+numero+" não é palíndromo");
}
}
Questão 3:
Crie um programa em Java que avalie o resultado final de um jogo-da-velha. O jogo-da-velha consiste na
marcação de um sinal – geralmente X ou O em uma grade formada de 3x3 células, onde o vencedor é
aquele que primeiro formar uma linha, coluna ou diagonal. Suponha que cada célula será fornecida pelo
usuário, de cima para baixo e da esquerda para direita, de forma sequencial, ou seja, C1 a C9,
considerando que o valor 0 (zero) significa célula não marcada, 1 (um) célula marcada pelo jogador 1 e 1 (menos um) célula marcada pelo jogador 2. Considere que programa receberá os nove valores válidos
e depois fornecer um dos resultados: A – Jogo Inválido; B – Vitória do Jogador 1; C - Vitória do Jogador
2; D – Empate. A seguir foram desenhados 4 casos, ilustrando as situações de A a D respectivamente:
Dica: note que a soma dos valores dos elementos de uma coluna, linha ou diagonal determina se houve
preenchimento completo na mesma por um jogador. Por exemplo, se a soma dos valores de uma coluna
totalizar -3, significa que a mesma foi fechada pelo jogador 2.
Resposta:
import java.util.Scanner;
public class JogoDaVelha {
public static void main(String[] args) {
int c1, c2, c3, c4, c5, c6, c7, c8, c9,
h1, h2, h3,
v1, v2, v3,
d1, d2;
boolean vit1=false, vit2=false;
Scanner sc = new Scanner(System.in);
System.out.println("Forneça os 9 valores para cada célula:");
c1 = sc.nextInt(); c2 = sc.nextInt(); c3 = sc.nextInt();
c4 = sc.nextInt(); c5 = sc.nextInt(); c6 = sc.nextInt();
c7 = sc.nextInt(); c8 = sc.nextInt(); c9 = sc.nextInt();
h1 = c1 + c2 + c3; h2 = c4 + c5 + c6; h3 = c7 + c8 + c9;
v1 = c1 + c4 + c7; v2 = c2 + c5 + c8; v3 = c3 + c6 + c9;
d1 = c1 + c5 + c9; d2 = c3 + c5 + c7;
vit1 = h1 == 3 || h2 == 3 || h3 == 3 ||
v1 == 3 || v2 == 3 || v3 == 3 ||
d1 == 3 || d2 == 3;
vit2 = h1 == -3 || h2 == -3 || h3 == -3 ||
v1 == -3 || v2 == -3 || v3 == -3 ||
d1 == -3 || d2 == -3;
if ( vit1 && vit2 )
System.out.println("Jogo inválido");
else if ( vit1 )
System.out.println("Vitória do jogador 1");
else if ( vit2 )
System.out.println("Vitória do jogador 2");
else
System.out.println("Empate");
}
}
Download