Departamento de Ciência da Computação
Universidade de Brasília
Computação Básica – 2004.1
Professor Jorge H. C. Fernandes
Lista de Exercícios 3 – Programação Básica em Java
Resolva os exercícios abaixo usando a Linguagem Java. Dica: para facilitar a compreensão do
programa utilize comentários digitando dois sinais de barra (//) numa linha qualquer, o que permite
que o texto até o final da linha seja ignorado pelo compilador. A figura abaixo mostra um exemplo
de um programa em Java que apresenta na saída o produto de dois números recebidos como
entrada..
class Multiplica { // declara classe de nome Multiplica
public static void main(String[] args) { // declara método main
IO.println("Informe o primeiro numero"); // solicita entrada de dados
int a = IO.readInt();
// lê numero 1
IO.println("Informe o segundo numero"); // solicita entrada de dados
int b = IO.readInt();
// lê numero 2
int produto = a * b;
// calcula produto
IO.println(a+" * "+b+" = "+produto);
}
}
O programa abaixo lê uma lista de números inteiros positivos terminada por –1 e imprime o resto
da divisão do maior deles dividido pelo menor deles.
class RestosMenoresMaiores {
public static void main(String[] args) {
int n;
n = IO.readInt();
if (n <= 0) return;
int menor, maior;
menor = n;
maior = n;
while ((n = IO.readInt()) > 0) {
if (n > maior) maior = n;
if (n < menor) menor = n;
}
int resto = maior % menor;
IO.println(resto);
}
}
Exercício 0 – Quadrados.java - Crie um programa que recebe uma lista de pares de números
inteiros positivos, terminada por –1, e, para cada par de números n1 e n2, imprime a potência de
n1 elevada a n2.
Exemplo:
Entrada // Comentários
Saída // Comentários
2 // n1 base
32 // 2 à quinta potência
5 // n2 expoente
225 // 15 ao quadrado
15 // n1 base
2 // n2 expoente
-1 // fim da lista
Exercício 01 – DecimalParaBinario.java - Crie um programa que recebe uma lista de numerais
inteiros positivos decimais (0-9)*, terminada por –1, e, para cada numeral n, imprime a seqüência
de 0s e 1s que formam os bits (do menos significativo para o mais significativo) deste numeral
representado em binário, a seqüência de bits deve ser apresentada na mesma linha e concluída
por “\n”. Use o método print para imprimir cada um dos bits, e o método println para pular de linha.
Exemplo:
Entrada // Comentários
Saída // Comentários
2 // converte o numeral decimal 2
01 // 2 decimal
5 // converte o numeral decimal 5
101 // 5 decimal
15 // converte o numeral decimal 15
1111 // 15 decimal
259 // converte o numeral decimal 259
110000001 // 259 decimal
-1 // fim de execução
Exercício 02 – DecimalParaBinario2.java - Crie um programa que recebe uma lista de números
inteiros positivos decimais (0-9)*, terminada por –1, e imprime para cada número n a seqüência de
0s e 1s que formam os bits (do mais significativo para o menos significativo) deste número
representado em binário, a seqüência de bits deve ser apresentada na mesma linha e concluída
por “\n”. Use o método print para imprimir cada um dos bits, e o método println para pular de linha.
Exemplo:
Entrada
Saída
2
10
5
101
15
1111
259
100000011
-1
Exercício 03 – DecimalParaOctal.java. Crie um programa que recebe uma lista de números inteiros
positivos decimais (0-9)* terminada por –1. e imprime uma seqüência de algarismos octais (0-7)*
(do menos significativo para o mais significativo) que representam cada número. Os algarismos
octais de cada número devem estar na mesma linha, encerrados pelo algarismo “0” e pelo final de
linha (“\n”)
Exemplo:
Entrada
Saída
2
20
5
50
15
710
259
3040
560
06010
-1
Exercício 04 – DecimalParaHexa.java. Crie um programa que recebe uma lista de números inteiros
positivos decimais terminada por –1. e imprime uma seqüência de algarismos hexadecimais (0-F)*
(do menos significativo para o mais significativo) que representam cada número. Os algarismos
hexadecimais de cada número devem estar na mesma linha, e encerrados por “0x\n”.
Exemplo:
Entrada
Saída
2
20x
5
50x
15
F0x
259
3010x
560
0320x
-1
Quesito 05 - A média aritmética de uma série de números é igual ao somatório dos números
dividido pela quantidade de números somados. O desvio quadrado de uma série de números é
igual à soma dos quadrados da diferença entre cada número e a média aritmética dos números. A
variância de uma série de números é igual ao desvio quadrado dos números da série dividido pela
quantidade de números que a compõem, subtraída de um. O desvio padrão de uma série de
valores numéricos é igual à raiz quadrada da variância da série. As fórmulas abaixo descrevem
matematicamente:
Média(v1, v2, ..., vn) = (v1 + v2 + ... + vn)/n
DesvioQuadrado(v1, v2, ..., vn) =
2
2
2
(v1 - Média(v1, v2, ..., vn)) + (v2 - Média(v1, v2, ..., vn)) + ... + (vn - Média(v1, v2, ..., vn))
Variância(v1, v2, ..., vn) = DesvioQuadrado(v1, v2, ..., vn) / (n-1)
DesvioPadrão (v1, v2, ..., vn) = RaizQuadrada (Variância (v1, v2, ..., vn))
Implemente os métodos de uma classe chamada Estatistica, conforme o código abaixo, que é
responsável por calcular cada uma das medidas descritas acima (desvio padrão, variância, desvio
quadrado e média aritmética). Cada um dos métodos recebe a série de valores através de array de
ponto flutuante (float) e ret orna um float contendo a medida adequada. Observação: para calculo
da raiz quadrada utilize o método static float sqrt(float f) da classe Math, que recebe um número em
ponto flutuante e retorna a raiz quadrada do número recebido. O método main na classe Estatistica
recebe como argumentos de linha de comando uma lista de numerais de ponto flutuante e faz
alguns testes com o uso das funções, como mostrado abaixo.
class Estatistica {
static float desvioPadrao(float[] serie) { return 0f;}
static float variancia(float[] serie) { return 0f;}
static float desvioQuadrado(float[] serie) { return 0f;}
static float mediaAritmetica(float[] serie) { return 0f;}
public static void main(String[] args) {
// converte os valores digitados na linha de comando
float[] serie = new float[args.length];
for (int i = 0; i < args.length; i++) {
serie[i] = Float.parseFloat(args[i]);
}
IO.println("Media["+mediaAritmetica(serie)+"]");
IO.println("Desvio Quadrado["+desvioQuadrado(serie)+"]");
IO.println("Variancia["+variancia(serie)+"]");
IO.println("Desvio Padrao["+desvioPadrao(serie)+"]");
}
}
Exercício 06 – EhPrimo.java. Escreva um programa java que lê uma lista de números inteiros
positivos, terminada por –1, e para cada número da lista, imprime 0 ou 1, caso o número seja ou
não primo.
Exemplos:
Entrada
Saída
1
0
3
1
2
1
4
0
6
0
78
0
5
1
4
0
3
1
21
0
3
1
4
0
56
0
76
0
8
0
9
0
554
0
2
1
-1
1
0
Exercício 07 – NEsimoPrimo.java. Escreva um programa java que lê uma lista de números inteiros
positivos, terminada por –1, e para cada número n da lista, imprime o n-esimo número primo.
NEsimoPrimo pode usar o código da classe EhPrimo se for possível. Por definição 2 é o 1-ésimo
número primo, 3 é o 2-ésimo número primo, 5 é o 3-ésimo número primo, etc.
Exemplos:
Entrada
Saída
1
2
2
3
3
5
4
7
5
11
6
13
-1
Exercício 08 – DifPrimos.java - Escreva um programa que lê uma lista de pares de números
inteiros positivos x e y, menores do que 100, onde x é menor que y, e imprima a diferença entre Xésimo e o Y-ésimo números primos. A lista de números é terminada quando o primeiro número do
par for–1. Por definição 2 é o 1-ésimo número primo, 3 é o 2-ésimo número primo, 5 é o 3-ésimo
número primo, etc. Busque os números primos na faixa de 1 a 1000000. DifPrimos pode usar o
código da classe NEsimoPrimo se for possível.
Exemplos:
Entrada
Saída
1
3
3
4
2
538
4
0
2
100
1
1
-1
Exercício 9 – ConversorBinarioOctalDecimalHexa.java. Crie um programa que converte a
representação de números entre qualquer base. A sintaxe EntradaSaída (E/S) de dados do
programa apresenta o seguinte formato:
ES ::= E[CódBase] E[CódBase] (E[Numeral] S[Numeral])* E[-1].
CódBase ::= “b” | “0” | “d” | “x”
Numero ::= [0-F]*
Os códigos de bases “b”, “0”, “d” e “x” representam, respectivamente as bases binário, octal,
decimal e hexadecimal.
Exemplo de Execução onde se deseja converter de binário para decimal:
Entrada
Saída
b // numerais serão digitados em binário
0 // 0 binário convertido para decimal
d // numerais serão impressos em decimal
2 // 10 binário convertido para decimal
0 // converte
14 // 1100 binário convertido para decimal
10
127 // 1111111 binário convertido para decimal
1110
1111111
-1
d // numerais serão digitados em decimal
x // numerais serão impressos em hexadecimal
2
5
15
259
560
-1
D // numerais serão digitados em decimal
B // numerais serão impressos em binário
2
5
15
259
-1
2 // 2 decimal convertido para hexa
5 // 5 decimal convertido para hexa
F // 15 decimal convertido para hexa
C2 // 259 decimal convertido para hexa
181 // 560 decimal convertido para hexa
01
101
1111
110000001
Exercício 10 – ComplementoA2.java - Complemento a dois. Escreva um programa que lê um
número N, inteiro positivo decimal, entre 0 e 127, e imprime a seqüência de 0s e 1s que formam os
bits (do menos significativo para o mais significativo) do número –N, representado em formato de
complemento a dois, ocupando um espaço de 8 bits.
Exemplo:
Entrada
25
1
1
1
0
0
1
1
1
120
0
0
0
1
0
0
0
1
Exercício 11 – InverteString.java - Invertido. Escreva um programa que lê uma lista de Strings N,
terminada por um string vazio e imprime cada um dos strings da lista com seus caracteres
invertidos. Dica: use uma pilha para inverter os algarismos.
Exemplo
Entrada
Saída
1234
4321
1000
0001
Java
avaJ
Ola Pessoal
laosseP alO
Download

Lista de Exercícios 3 - Java - Programas diversos