Sie sind auf Seite 1von 2

UFG - Instituto de Informática Estruturas de Dados I

Bacharelado em Ciências da Computação Prof. Humberto Longo1

1ª Lista de Exercícios – 2012.2


1. Dado M (i, j), (i = 1, . . . , 10; j = 1, . . . , 10) representado por um objeto do tipo array[0. . . 99]
de tipo real, escreva um procedimento para listar os elementos da diagonal principal: M (1, 1),
M (2, 2), . . . , M (10, 10).

2. Uma matriz tridiagonal tem entradas aij que são zero, exceto quando |i − j| ≤ 1, 1 ≤ i, j ≤ n.
Escreva uma função de alocação da forma ` = f (i, j) = a0 + a1i + a2j , |i − j| ≤ 1, que represente
todos os elementos relevantes de uma matriz tridiagonal em (3n − 2) posições consecutivas.
Solução:

• i − 1 : número de linhas antes da linha i;


• 3 · (i − 1) − 1 = 3 · i − 4 : número de elementos da antes da linha i;
• j − i + 1 : número de elementos antes do elemento j na linha i.

Logo, ` = b + (3 · i − 4) + (j − i + 1) = (b − 3) + 2 · i + j.

3. Em uma matriz tridiagonal inversa M , de dimensão m × n, todas as entradas aij são zero, exceto
quando k − 2 ≤ i + j ≤ k, onde k é o máximo entre m e n. Construa uma função de alocação
que represente todos os elementos relevantes da matriz tridiagonal inversa em (3 · r − 2) posições
consecutivas, onde r é o mínimo entre n e m.

4. Suponha que você tem um matriz de ordem m × n. Os únicos elementos relevantes para você são
aqueles que se encontram abaixo da diagonal secundária da matriz. Mostre como representar tais
elementos em um vetor de dimensão apropriada e como recuperá-los, ou seja, como usar os índices
da matriz para calcular o índice do vetor.

5. Explique como é a representação linear de uma matriz n-dimensional M (i1 , . . . , in ), (i1 = c1 , . . . , f1 ;


. . . ; in = cn , . . . , fn ).

6. Sugira uma estrutura de dados para o armazenamento dos elementos de uma matriz m × n. A
sua estrutura deve permitir que uma linha i1 seja trocada de posição com uma linha i2 sem que
os elementos das duas linhas sejam individualmente mudados de posição. Escreva um trecho de
programa em C para ler os dados da matriz e depois inverter a posição da primeira com a penúltima
linha da mesma.

7. Suponha que você esteja construindo um programa em C e deseja alocar dinamicamente uma matriz
de elementos do tipo inteiro e de dimensão n × n. Contudo, o seu sistema computacional já está
sobrecarregado e a memória disponível encontra-se muito fragmentada. Sabendo-se que existem pelo
menos n blocos de memória de tamanhos suficientes para representar de n a 2 · n − 1 elementos do
tipo inteiro, escreva um trecho de programa em C para alocar espaço para tal matriz. (A referência
a um elemento de tal matriz deverá ser feita por alguma coisa da forma M [i, j] ou M [k], onde k é o
endereço adequado, sem controles adicionais).

8. Um quadrado mágico é uma matriz n×n dos números inteiros de 1 até n2 , onde a soma dos elementos
em cada linha, coluna ou diagonal é a mesma. Por exemplo, se n = 3 a soma comum é 15:

6 1 8
7 5 3
2 9 4
1
e-mail: longo@inf.ufg.br
Considere o seguinte algoritmo para geração de quadrados mágicos, quando n é impar: A posição
inicial é a coluna do meio da linha superior. A partir desta posição ande sempre para uma coluna à
esquerda e uma linha superior, atribuindo os números na ordem crescente (a partir de 1) nas posições
vazias. Se cair em uma posição fora do quadrado, imagine o mesmo como um cilindro e continue
na linha (coluna) na extremidade oposta. Caso atinja uma posição já preenchida com um número
inteiro, desloque-se na mesma coluna uma linha para baixo e continue com o mesmo procedimento.
Escreva um programa em C que implemente este algoritmo para gerar quadrados mágicos n × n,
para n ímpar.

9. Na figura abaixo tem-se um quadrado mágico, ou seja, uma quadrado em que a soma dos elementos
em cada linha, coluna ou diagonal é a mesma. Encontre valores válidos para A, B, C e D.

9
A 2
−2,5

1
B 2
C
7
2
D 1,5

Das könnte Ihnen auch gefallen