Lista de Exercícios Variáveis Homogêneas: Matriz

Download Report

Transcript Lista de Exercícios Variáveis Homogêneas: Matriz

UFABC
BC&T
Processamento da Informação
Nome:
Turma:
Professor(a):
Data:
Lista de Exercícios
Variáveis Homogêneas: Matriz
1. Faça um programa que leia uma matriz quadrada de ordem N, e imprima somente os elementos da
diagonal principal
2. Faça um programa que leia uma matriz quadrada de ordem N, e imprima a soma dos elementos de cada
coluna
3. Faça um programa que calcule a soma e multiplicação entre duas matrizes quadradas de ordem N
4. Escreva uma aplicação que verifique se uma matriz é simétrica. Uma matriz A é simétrica se A[i,j] = Aa[j,i]
(para todo 0<=i, j<=n-1)
5. Dada uma matriz real Amxn, verificar se existem elementos repetidos em A
6. Para uma matriz A de ordem N por N, escreva um programa em Java que verifique se esta matriz tem, ou
não, duas colunas consecutiva com a mesma soma.
7. Implemente uma classe que receba um conjunto de cinco notas de alunos numa disciplina (P1, P2, P3, P4,
FINAL) e escreva um programa para testá-la. Armazene os nomes dos alunos e suas notas num array
bidimensional. Seu programa de teste deve imprimir a relação de alunos e suas notas, a média de cada
aluno e sua situação. Deve, ainda, calcular a média geral da turma e mostrar um gráfico de barras com a
distribuição das notas
8. Crie uma matriz de 4x4 com valores reais, e crie métodos que realizem as seguintes operações:
•
•
•
•
•
Mostrar os elementos da enésima linha da matriz (N passado como parâmetro)
Mostrar os elementos da nésima coluna (N passado como parâmetro)
Retornar o índice do maior valor armazenado na matriz, e em qual posição se encontra (linhaxcoluna)
Retornar qual o valor da soma de todos os elementos da matriz
Multiplicar todos os elementos ímpares por 3, e todos os pares por 2. Informe ao usuário quantos
elementos existem de cada tipo (pares e ímpares)
9. Escreva uma classe com os seguintes métodos:
•
Um método que recebe 3 matrizes do tipo double como parâmetro, calcula a soma das duas
primeiras e guarda o resultado na terceira
• Um método que recebe 3 matrizes do tipo double como parâmetro, calcula o produto das duas
primeiras e guarda o resultado na terceira.
• Para os dois métodos anteriores, escrever uma segunda versão que recebe apenas 2 matrizes como
parâmetro e devolve o resultado através do comando return
10. Dada uma matriz quadrada de ordem N, faça um algoritmo que:
•
caso a soma dos elementos da 2º coluna seja maior que 10, imprima o produto dos elementos da
diagonal principal
• imprima a soma de todos elementos
• imprima a soma dos elementos da diagonal secundária
11. Um jogo de palavras cruzadas pode ser representado por uma matriz Amxn, onde cada posição da matriz
corresponde a um quadrado do jogo, sendo que 0 indica um quadrado branco e -1 indica um quadrado
preto. Indicar na matriz as posições que são início de palavras horizontais e/ou verticais nos quadrados
correspondentes (substituindo os zeros), considerando que uma palavra deve ter pelo menos duas letras.
Para isso, numere consecutivamente tais posições. Exemplo: Dada a matriz:
1
UFABC
BC&T
Processamento da Informação
A saída deverá ser:
12. Uma indústria produz M artigos diferentes. Para cada artigo tem-se um registro contendo as quantidades
produzidas em cada dia da semana, de domingo a sábado. Cada artigo é identificado por um número de 1
a N. Os registros não foram colocados em ordem. Faça um algoritmo que:
• armazene todos os dados na memória
• determine qual o artigo mais produzido na terça-feira
• determine o dia da semana de maior produção
13. Um quadrado latino de ordem N é uma matriz N×N preenchida com N diferentes símbolos, de tal maneira
que ocorrem no máximo uma vez em cada linha ou coluna. Por exemplo:
O nome quadrado latino teve origem com Leonhard Euler, que utilizou caracteres latinos como símbolos.
Escreva uma classe com os seguintes métodos:
•
•
imprimeMatriz(), que imprime uma matriz
estáNoArray(), que recebe como parâmetros um inteiro J e um array A de inteiros, e verifica se J
ocorre no array
• temTodos() que, usando o método anterior que recebe como parâmetros um array A com N inteiros,
verifica se em a ocorrem todos os inteiros de 1 a N
• éLatino() que, utilizando o método anterior, verifica se uma dada matriz inteira A nxn é um quadrado
latino de ordem N
14. Considere um grupo de R rapazes, onde cada rapaz é identificado por um número inteiro de 1 a R.
Considere um grupo de M moças, onde cada moça é identificada por um número de 1 a M. Cada pessoa
respondeu a um questionário de 20 questões, onde cada questão admitia uma das respostas S (sim), N
(não) e I (indiferente). Faça um algoritmo que imprima o índice de afinidade de cada rapaz com cada moça.
Obs: existe afinidade quando os dois deram a mesma resposta, ou quando um deles respondeu
indiferente. Os registros de dados não estão em ordem.
15. Escreva uma classe com um método que leia um inteiro N, e as posições de N rainhas em um tabuleiro de
xadrez, e determine se duas rainhas se atacam.
16. Imagine que uma matriz de NxM (N linhas por M colunas) representa um caminho feito por pedras que
funcionam como uma ponte entre os dois lados de um rio. Cada célula (posição) da matriz representa uma
“pedra”, que pode ser verdadeira (dá apoio quando você pisa) ou falsa (você afunda quando pisa). Para
simplificar a brincadeira, suponha que as pedras verdadeiras são pintadas de preto e as falsas de branco.
Computacionalmente falando, pedras pretas são posições com valor “1” e pedras brancas são posições
com valor “0” (ou seja, a matriz contém somente 0s e 1s). Escreva um método em Java para atravessar o
2
UFABC
BC&T
Processamento da Informação
rio pisando somente nas pedras verdadeiras, ou seja, para que saindo da coluna 0 (qualquer linha) chegue
na coluna M-1 (qualquer linha), tal que:
•
Você pode andar para cima, para baixo, para frente e em diagonal
•
Você pode pisar em uma pedra várias vezes
•
O método deve retornar “True” se existe um caminho e “False” se não existe um caminho
•
Estabeleça um critério de parada para que se não houver um caminho feito somente de “1s” o seu
algoritmo não entre em loop (pode ser um número de pedras “pisadas”)
•
A matriz deve ser gerada de forma aleatória antes do início da travessia. Use o seguinte comando:
ponte[i][j] = (int) (Math.random() + 0.5), onde ponte é uma matriz de inteiros
• Os valores de N e M são da sua escolha
17. Dizemos que uma matriz inteira Anxn é uma matriz de permutação se em cada linha e em cada coluna
houver n-1 elementos nulos e um único elemento igual a 1.
Por exemplo, a matriz abaixo é de permutação:
Observe que a matriz a seguir não é de permutação:
Dada uma matriz inteira Anxn, verificar se A é de permutação.
18. Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha,
a soma dos elementos de cada coluna e a soma dos elementos das diagonais principal e secundária são
todas iguais. A matriz a seguir é um exemplo de quadrado mágico:
Dada uma matriz quadrada Anxn , verificar se A é um quadrado mágico.
19. Deseja-se fazer a emissão da folha de pagamento de uma empresa. Para cada um dos n funcionários da
empresa são dadas as seguintes informações:
•
NOME
•
SAL (salário)
•
HED (horas extras diurnas)
•
HEN (horas extras noturnas)
•
ND (número de dependentes)
•
FAL (faltas em horas)
•
DE (descontos eventuais)
3
UFABC
BC&T
Processamento da Informação
•
REF (gastos com refeições feitas na empresa)
•
VAL (vales retirados durante o mês)
Emitir as seguintes informações:
•
nome,
•
salário,
•
horas extras = HED * SAL/160 + HEN * 1.2 * SAL/160,
•
salário família = ND * 0.05 * salário mínimo vigente,
•
salário bruto = salário + horas extras + salário família.
Descontos efetuados:
•
INAMPS = 0.08 * SAL
•
faltas = FAL * SAL/160
•
refeições
•
vales
•
descontos eventuais
•
imposto de renda = 0.08 * salário brut.
Salário líquido = salário bruto - desconto total.
20. Considere n cidades numeradas de 0 a n-1 que estão interligadas por uma série de estradas de mão única.
As ligações entre as cidades são representadas pelos elementos de uma matriz quadrada Lnxn, cujos
elementos lij assumem o valor 1 ou 0, conforme exista ou não estrada direta que saia da cidade i e chegue
à cidade j. Assim, os elementos da linha i indicam as estradas que saem da cidade i, e os elementos da
coluna j indicam as estradas que chegam à cidade j.
Por convenção lii = 1. A figura mostra um exemplo para n = 4.
Faça o que se pede:
a. Dado k, determinar quantas estradas saem e quantas chegam à cidade k.
b. A qual das cidades chega o maior número de estradas?
c. Dado k, verificar se todas as ligações diretas entre a cidade k e outras são de mão dupla.
d. Relacionar as cidades que possuem saídas diretas para a cidade k.
e. Relacionar, se existirem:
•
As cidades isoladas, isto é, as que não têm ligação com nenhuma outra
•
As cidades das quais não há saída, apesar de haver entrada
•
As cidades das quais há saída sem haver entrada
4
UFABC
BC&T
Processamento da Informação
f.
Dada uma sequência de m inteiros cujos valores estão entre 0 e n-1, verificar se é possível realizar o
roteiro correspondente. No exemplo dado, o roteiro representado pela seqüência (m=5) 2 3 2 1 0 é
impossível.
g. Dados k e p, determinar se é possível ir da cidade k para a cidade p pelas estradas existentes. Você
consegue encontrar o menor caminho entre as duas cidades?
5