Você está na página 1de 3

LISTA DE EXERCCIOS 03

Parte 1: Algoritmos de Classificao e Busca.


1. Dados dois vetores de tamanho 30 contendo nmeros reais, suponha estes estarem ordenados e que no haja
nenhum nmero repetido. Implementar um algoritmo capaz de, a partir dos vetores dados, montar um vetor S
contendo todos os elementos dos vetores originais, de forma que S tambm esteja ordenado.
Dica: pesquise os algoritmos de classificao por intercalao.
Variao: Generalizar o exerccio anterior de modo que o algoritmo possa tratar agora de vetores com valores
possivelmente repetidos, embora j ordenados.
2. Implementar o algoritmo de classificao de insero.
3. Implementar um algoritmo para ordenar um vetor de N nmeros reais pelo mtodo de seleo. Dica: pesquise nos
livros indicados.
4. Implementar um algoritmo capaz de cadastrar 50 pessoas atravs de seus nomes. Uma vez cadastradas, deve-se
poder pesquisar um nome dentre os cadastrados atravs do mtodo de Busca Binria, informando o nmero de
cadastro (posio) se encontrado ou a mensagem "No encontrado" caso contrrio.
Dica: use um vetor de strings para cadastrar os nomes, lembrando-se de mant-los sempre ordenados. Lembre-se
de classificar (ou ordenar) os dados antes de tentar procur-los.
5. Tremblay, Jean Paul; "Cincia dos Computadores"
(OBS.: faa uma verso dos algoritmos em C, testando as respostas)
a) pg 151 - implementar o algoritmo de intercalao simples.
Use vetores de inteiros.
Faa uma verso usando vetores de strings.
b) pg 184 - ex 5

Parte 2: Procedimentos e funes.


1.

Escreva um subprograma capaz de calcular a mdia aritmtica de trs parmetros passados.

2.

Escreva um subprograma capaz de calcular a rea de qualquer figura geomtrica do tipo circunferncia.
Lembre-se:

Area CIRC Raio2

x n en.ln( x )

3.

Escreva um subprograma que execute a operao de potenciao expressa por


que isso vlido? Pergunte !!!)

(voc sabe por

4.

Escreva um subprograma capaz de trocar o contedo de 2 variveis inteiras passadas como parmetro. Dica:
use passagem de parmetros POR REFERNCIA.

5.

Modifique o exerccio que calcula a mdia de trs nmeros para que seja calculada a mdia aritmtica de um
vetor inteiro passado como parmetro. Dica: passe tambm como parmetro a quantidade de elementos a
serem considerados.

6.

Faa um subprograma que calcule o seno de um nmero passado como parmetro. Use o algoritmo
representado no exerccio 1 dos desafios da Lista de Exerccios 2.

7.

Escrever um subprograma que receba como parmetro uma string de at 80 caracteres e a devolva ordenada
em ordem ascendente. Use passagem de parmetro por referncia.

8.

Escreva um subprograma que, recebendo duas strings como parmetro, seja capaz de verificar se a primeira
existe dentro da segunda.

9.

Nmeros palndromos so aqueles que escritos da direita para a esquerda tm o mesmo valor. Ex. 929, 545,
97379. Escrever um subprograma que, recebendo um nmero inteiro como parmetro, retorne o mesmo escrito
ao contrrio.

10. Usando o subprograma que calcula nmeros invertidos, escrever um programa que calcule todos os palndromos
entre 1 e 1000.
11. Escrever um subprograma que retorne se uma palavra existe ou no dentro de um vetor de 1000 posies de
strings de tamanho 30. Aplique o mtodo de busca binria, considerando que este vetor est ordenado pelo valor
das strings.
12. Escrever um subprograma que ordene o vetor de strings do exerccio nmero 7. Use qualquer algoritmo que
voc tenha conhecimento ("Bubble", Seleao, etc.).
13. Escrever um subprograma que, recebendo como parmetros uma matriz (por referncia) e um inteiro (por valor),
multiplique a matriz pelo inteiro.
14. Escrever um subprograma capaz de multiplicar duas matrizes A e B, passadas por referncia.
15. Escreva um subprograma que devolva o valor numrico 1 (um) caso uma matriz passada como parmetro seja
simtrica e 0 (zero) caso contrrio. Os parmetros devem incluir as dimenses da matriz.
16. escreva um subprograma capaz de calcular a rea de uma figura geomtrica do tipo Circunferncia, Tringulo
ou uma figura de 4 lados (quadrado, trapzio, paralelogramo). As frmulas para clculo das reas so as que
seguem:

Area CIRC Raio 2


Base Altura
Area TRIANG
2
BASE base Altura
Area PARALELOG
2
17.Tremblay, Jean Paul; "Cincia dos Computadores"
a) pg 238 - ex 1, 7, 4
b) pg 249 - ex 3, 4, 5, 6
c) pg 269 - ex 2, 3
-------------------------*- DESAFIOS -*------------------------1.

Implemente o algoritmo do QuickSort, que usa subprogramas e recurso. Compare-o aos outros algoritmos que
voc conhece de ordenao ("Bubble-sort" ou bolha, seleo, intercalao) em relao ao nmero de
operaes de troca efetuadas.

2.

Implemente o algoritmo de classificao por Intercalao Mltipla (Tremblay, pg. 155) usando os conceitos de
subprogramas.

3.

Implemente o algoritmo de Diagramao (Tremblay, pg 219).

4.

Altere o exerccio 1 de forma que este opere com strings.

5.

Os ns do grafo, apresentado abaixo, representam cidades, e os arcos, a presena de uma estrada ligando
estas duas cidades. Os nmeros ao lado dos arcos representam a distncia medida em quilmetros:

180

2
100

4
101

200
40

45

15

120
90

Pode-se representar este grafo atravs de uma varivel composta bidimensional (uma matriz) D, na qual a existncia
de conexo entre duas cidades i,j indicada pelo elemento D[i,j] diferente de 0. Assim:

1
1

0 100 15

2 100 0

40 180 200 0

15 40

0 180 45

0 101

0 200 90

0 120

45 90

Matriz de Distncias D

0 101 120 0

O problema todo consiste, ento, em se descobrir qual o menor caminho entre duas cidades quaisquer. Este
problema foi resolvido pelo matemtico Dijkstra em 1971 e tem aplicaes marcantes em diversos problemas de
otimizao, como planejamento de vo, linhas de nibus, percursos de trens de carga, colocao de semforos etc.
Pesquise e implemente o algoritmo de Dijkstra para a soluo deste problema.

Você também pode gostar