Buscar

Lista de Exercícios - Matrizes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ECT1203 – 2014.2 6a Lista de Exercícios – Matrizes Prof. Caroline Rocha
Importante: considere sempre produzir um programa completo para que o usuário possa
testar o código elaborado. Seu programa sempre deverá exibir mensagens para que a utili-
zação do mesmo seja simplificada, assim como seu código-fonte deverá estar completamente
indentado.
Questão 1
Em uma excursão de uma agência de viagem existem quatro ônibus (1, 2 ,3 e 4) e cada
ônibus tem 16 cadeiras para passageiros. Faça um programa que realize as reservas dos
passageiros baseados no número do ônibus e no número da cadeira (Considere que apenas
números válidos serão inseridos). Caso o local esteja vazio, deve ser reservado; caso esteja
ocupado, exibir uma mensagem de "Cadeira Ocupada". A cada inserção (bem sucedida ou
não), o programa perguntará se usuário quer realizar uma nova reserva ou se deseja finalizar
o programa.
Questão 2
Dada uma matriz bidimensional de dimensãoM×N , calcular e imprimir a matriz transposta.
O usuário deve fornecer os tamanhos da matriz e, em seguida, os elementos da matriz.
Observação: M,N ≤ 30; M e N devem ser lidos.
Questão 3
Dadas duas matrizes AM×N e BN×K reais, encontrar e escrever uma matriz CM×K obtida
pelo produto de A por B. Observação: M ≤ 30, N ≤ 40, K ≤ 50; M,N,K devem ser lidos.
Exemplo:
[
1 0 2
−1 3 1
]
×
3 12 1
1 0
 = [ (1× 3 + 0× 2 + 2× 1) (1× 1 + 0× 1 + 2× 0)
(−1× 3 + 3× 2 + 1× 1) (−1× 1 + 3× 1 + 1× 0)
]
=
[
5 1
4 2
]
Questão 4
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. Dada uma matriz quadrada An×n, verificar se A é
um quadrado mágico. Por exemplo, a matriz abaixo é um quadrado mágico.8 0 74 5 6
3 10 2

Questão 5
(a) Escreva uma função que troca o conteúdo de duas variáveis.
(b) Escreva uma função que recebe dois inteiros, i e j, uma matriz real Am×n e troca a linha
i pela linha j. Utilize a função do item anterior.
Questão 6
Faça uma função que preencha todo um vetor recebido como parâmetro com um valor tam-
bém passado por parâmetro. Faça o mesmo para uma matriz.
Questão 7
Faça uma função somamat() que receba uma matriz como parâmetro e retorne a soma de
seus elementos.
Questão 8
(a) Faça uma função maximoMatriz() que recebe como entrada um inteiro n, uma matriz
inteira An×n e devolve dois inteiros lin e col, tais que o maior elemento de A é dado por
A[lin, col]. Exemplo:
Se A =
3 7 11 2 8
5 3 4
 , então lin = 1 e col = 2.
Se o elemento máximo ocorrer mais de uma vez, indique em lin e col qualquer uma das
possíveis posições.
(b) Faça um programa que, dado um inteiro n e uma matriz quadrada de ordem n, cu-
jos elementos são todos inteiros positivos, imprime uma tabela onde os elementos são
listados em ordem decrescente, acompanhados da indicação de linha e coluna a que
pertencem. Havendo repetições de elementos na matriz, a ordem é irrelevante. Utilize
obrigatoriamente a função da parte (a).
Questão 9
(POLI 94) Os elementos aij de uma matriz inteira An×n representam os custos de transporte
da cidade i para a cidade j. Dados uma matriz de custos An×n e m ≤ 100 itinerários, cada
um com k ≤ 30 cidades, calcular o custo total para cada itinerário. Considere n ≤ 100.
Por exemplo, dada a matriz abaixo, o custo do itinerário 0 − 3 − 1 − 3 − 3 − 2 − 1 − 0 é
a03 + a31 + a13 + a33 + a32 + a21 + a10 = 3 + 1 + 400 + 5 + 2 + 1 + 5 = 417.
4 1 2 3
5 2 1 400
2 1 3 8
7 1 2 5

Questão 10
Escreva um programa que irá indicar o itinerário que um navio deve seguir durante uma
viagem. Assuma que o itinerário passa por n portos e cada porto recebe um número entre 0
e n− 1. O valor de n será fornecido pelo usuário do programa, que também deverá fornecer
um número entre 0 e n − 1, indicando qual o primeiro porto da viagem. O itinerário deve
ser armazenado em uma matriz quadrada n× n, lida do teclado. Cada linha da matriz tem
todas as colunas, exceto uma, preenchida com zeros. A coluna que não tem valor zero indica
qual é o próximo porto da viagem. Abaixo, mostramos um exemplo de formato para entrada
e saída:
Entre com o tamanho do itinerário: 4
Entre com o porto inicial da viagem: 3
Entre com a matriz de itinerário
0 0 1 0
0 0 0 1
0 1 0 0
1 0 0 0
O itinerário passa pelos seguintes portos: 3, 0, 2, 1, 3
Considere que os dados fornecidos serão confiáveis. Isto é, somente 0s e 1s; somente um valor
1 por linha; o itinerário é de ida e volta e faz sentido. O itinerário passa por todos os portos
e volta ao inicial.
Questão 11
Considere o seguinte programa:
int main(){
int matriz[5][5];
int i, j;
for(i = 0; i < 5; i++)
for(j = 0; j < 5; j++)
cin >> matriz[i][j];
for(i = 0; i < 5; i++)
cout << matriz[i][i] << " ";
cout << endl;
for(i = 0; i < 5; i++)
cout << matriz[i][4-i] << " ";
cout << endl;
for(i = 0; i < 5; i++)
cout << matriz[i][i/2] << " ";
cout << endl;
return 0;
}
O que será impresso pelo programa se ele receber os seguintes valores de entrada?
1 2 3 4 5
10 20 30 40 50
100 200 300 400 500
1000 2000 3000 4000 5000
10000 20000 30000 40000 50000
Questão 12
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 Ln×n, 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 matriz abaixo mostra um exemplo para n = 4.
L =

1 1 1 0
0 1 1 0
1 0 1 1
0 0 1 1

Dados o valor de n ≤ 100, a matriz Ln×n e um número inteiro k, 0 ≤ k ≤ n − 1, faça um
programa para:
(a) Determinar quantas estradas saem e quantas chegam à cidade k;
(b) Verificar se todas as ligações diretas entre a cidade k e as demais são de mão dupla;
(c) Dada uma seqüência de m ≤ 20 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 2− 3− 2− 1− 0 (m = 5) é impossível.
Questão 13
Uma matriz quadrada A com zeros acima da diagonal principal e elementos não-nulos na
diagonal é chamada de matriz triangular inferior (veja exemplo abaixo). Escreva um pro-
grama que, dados uma matriz triangular inferior An×n e um vetor b de tamanho n, resolva
o sistema de equações lineares Ax = b.
L =

1 0 0 0
4 5 0 0
0 3 −2 0
1 1 2 1

Questão 14
Uma imagem pode ser representada por um conjunto de dados bidimensional, ou seja, uma
tabela retangular de números, armazenada em uma matriz de valores do tipo double. No
entanto, uma imagem pode conter ruídos. Um filtro simples para reduzir o efeito de um
ruído destes é baseado na substituição de um elemento da matriz pela média entre ele e os
seus elementos vizinhos. Os vizinhos de algumas células típicas de dados são mostrados na
figura abaixo:
Observe que o número de vizinhos de um elemento da matriz depende da sua localização:
muitos elementos possuem oito vizinhos, os elementos nas laterais possuem cinco vizinhos
e os elementos nos cantos possuem apenas três. Escreva um programa que realize uma
operação de filtragem deste tipo. Você pode realizar uma operação de filtragem da matriz
em seu lugar de origem usando apenas o espaço de memória que contém os dados originais
ou tem que criar uma segunda matriz para armazenar os dados filtrados?
Entrada: O usuário fornecerá o número de linhas m (2 ≤ m ≤ 50) e o número de colunas
n (2 ≤ n ≤ 50) da matriz. Em seguida, fornecerá os m × n valores reais da matriz, linha a
linha, com precisão de duas casas decimais.
Saída: Os dados filtradosda matriz.
Questão 15
Crie um programa no qual o usuário digitará uma matriz com dimensões M × N . Para
a matriz digitada, imprima na tela os números pares contidos nesta matriz, considerando
separá-los por linha. Veja o exemplo para uma matriz 4× 4:
1 2 3 4
5 6 7 8
10 11 23 21
1 2 3 1

A saída correspondente a esta matriz deve ser:
2 4
6 8
10
2
Questão 16
Crie um programa no qual o usuário digitará uma matriz com dimensões M × N . Para
a matriz digitada, imprima na tela os números primos de Sophie Germain contidos nesta
matriz. Lembre-se, um número primo p é um número primo de Sophie Germain se, e somente
se, 2p+ 1 é também um número primo.
Para resolver esta questão, considere implementar:
(a) Uma função que verifica se um número qualquer dado como parâmetro é um número
primo;
(b) Uma função que verifica se um número qualquer dado como parâmetro é um número
primo de Sophie Germain.
Nenhuma das funções descritas acima deverá utilizar o comando cout.
Questão 17
Uma matriz qualquer é dita matriz de permutação se atender a todos estes requisitos simul-
taneamente:
1. Só contiver elementos de valor 0 e 1;
2. A soma dos elementos de cada uma de suas linhas for igual a 1;
3. A soma dos elementos de cada uma de suas colunas for igual a 1;
Veja um exemplo de matriz de permutação:
A4×4 =

1 0 0 0
0 0 1 0
0 1 0 0
0 0 0 1

Sua tarefa é cria um programa que solicite ao usuário os valores de uma matriz M × N e
verifique se esta é uma matriz de permutação.
Questão 18
Melhore o programa desenvolvido na questão anterior de forma que nele haja:
(a) Uma função que receba como parâmetros uma matriz e um valor inteiro representando
o índice de uma de suas linhas. Esta função deverá retornar a soma dos elementos desta
linha;
(b) Uma função que receba como parâmetros uma matriz e um valor inteiro representando
o índice de uma de suas colunas. Esta função deverá retornar a soma dos elementos
desta coluna;
(c) Uma função que receba como parâmetro uma matriz. Sua função deverá retornar
verdadeiro caso a matriz só contenha elementos de valor 0 e 1, e falso caso con-
trário;
(d) Uma função que receba como parâmetro uma matriz e retorna verdadeiro caso a matriz
seja uma matriz de permutação e falso caso contrário.
Questão 19
Escreva um programa que receba como entrada uma lista de nomes de N pessoas, incluindo
o sobrenome. Seu programa deverá ordenar esta lista em ordem alfabética e exibí-la na tela.
Exiba também o nome mais extenso e o mais curto presente nesta lista.
Questão 20
O ponto de sela de uma matriz é um elemento pertencente a esta matriz que atende simul-
taneamente aos seguintes critérios:
1. É o maior elemento da linha em que está inserido;
2. É o menor elemento da coluna em que está inserido.
Escreva um programa que recebe como entrada uma matriz e mostra ao usuário em qual
linha e coluna desta matriz está o ponto de sela, se este existir. Exiba também o valor deste
elemento.
Questão 21
Melhore o programa anterior de modo que nele exista uma função que recebe como parâmetro
uma matriz e retorna em qual linha e coluna está seu ponto de sela, assim como seu valor.
Caso não exista um ponto de sela, os valores retornados deverão ser iguais a −1.
Questão 22
Dada uma matriz AN×N = [aij]N×N , seu traço pode ser calculado como:
tr(A) =
N∑
i=1
aii
Escreva uma função que calcula o traço de uma matriz qualquer.
Questão 23
Escreva um programa que verifica se um vetor x é a solução de um sistema de equações
lineares Ax = b. A, x e b deverão ser informados pelo usuário, assim como suas respectivas
dimensões.
Questão 24
Uma matriz é dita esparsa quando a maioria de seus elementos é igual a 0. Sua tarefa é
criar uma função que verifica se uma matriz dada como parâmetro é uma matriz esparsa.
Considere no seu programa que no mínimo 70% dos elementos desta matriz precisam ser
nulos para que a matriz seja considerada esparsa.
Questão 25
Escreva um programa que gera uma matriz com valores aleatórios entre 0 e 100 de forma
que não existam números repetidos.
Questão 26
Escreva uma função que ordena cada uma das linhas de uma matriz dada como parâmetro de
forma independente. Considere criar uma função que ordena um vetor como função auxiliar
para resolver este problema.

Outros materiais