Você está na página 1de 4

Universidade Federal de Santa Maria

Prof. Cesar Tadeu Pozzer


Disciplina: Lgica e Algoritmo - ELC1064
17/10/2012

Exerccios de Algoritmos
1) Algoritmos abstratos
Descreva uma sequncia de passos para as seguintes atividades. Procure fazer uma verso bem simplificada
(poucos passos) e outra bem detalhada
1. tomar banho
2. atravessar a rua
3. fritar um ovo
4. medir o peso de um objeto com uma balana
5. trocar o pneu furado de um carro
6. trocar uma lmpada

2) Laos de Repetio, testes condicionais, vetores e matrizes


Faa algoritmos para a lista de problemas que seguem, os quais esto ordenados em ordem
crescente de complexidade. Para cada um deles, gerar uma entrada adequada e tambm uma sada,
bem como variveis que forem necessrias. Para cada um, utilize as seguintes notaes: Diagrama de
Nassi-Shneiderman, fluxograma e portugus estruturado (pseudocdigo). Aps, teste as solues em
algum compilador, usando linguagem C.

Exemplo 1: Programa para calcular a soma dos N primeiros nmeros inteiros


Inicio
Var: N, contador, soma
N = Ler()
contador = 0
soma = 0
Enquanto contador < N faa
soma = soma + contador
contador = contador + 1
Fim enquanto
Escrever soma
Fim.

2.1 De Aquecimento
1. Calcular a rea de um crculo
2. Calcular a mdia de duas notas

3.
4.
5.
6.
7.

Calcular a rea de um retngulo


Calcular a rea de um tringulo qualquer
Calcular o permetro de um retngulo
Calcular a razo entre rea e permetro de um retngulo
Calcular quanto % maior um nmero em relao a outro

2.2 Mais interessantes


1.
2.
3.
4.
5.
6.
7.

Escrever uma sequncia de nmeros inteiros decrescentes entre M e N


Fazer uma entrada de dados que s aceita valores superiores aos que j foram fornecidos
Gerar os nmeros pares e mpares menores que M e maiores que zero
Calcular a potncia NM usando laos de repetio
Ler valores A e B at que A<B
Dizer se um nmero lido positivo ou negativo
Ler as 3 notas de um aluno e dizer se ele deve ser aprovado (media >= 7), se deve fazer a
prova substitutiva (media >= 5) ou se est reprovado (mdia < 5).
8. Ler uma senha numrica at que o usurio acerte a senha. Aps imprimir mensagem de
acesso autorizado
9. Calcular a soma dos N menores nmeros inteiros positivos
10. Calcular o fatorial de um nmero
11. Ler um nmero e dizer se ele par ou mpar.
12. Dados N dgitos numricos, gerar um nico nmero decimal. Ex: (2,3,2,0) = 2320
13. Dividir um nmero real N por outro real K at que N seja maior que M.
14. Calcular a somatria 1/2 + 1/4 +1/8 + 1/16 ..... para N termos, sendo N grande
15. Calcular a somatria 1/2 + 1/3 +1/4 + 1/5 ..... para N termos, sendo N grande
16. Sendo A=12345 e B=12, e assumindo 3 e 7 os respectivos incrementos de A e B. Faa um
algoritmo para encontrar os valores de A e B quando a diferena entre eles mnima.
17. Dadas trs notas (prova, trabalho, teste), gerar a nota final considerando que cada uma das
notas tem peso PN associado, sendo P1 + P2 + P3 = 1 .
18. Calcular o valor anual e total de um financiamento bancrio de 20 anos, onde o valor da
prestao inicial 700,00, e com reajuste da prestao em 0.85% ao ms.
19. Explique quanto se deve usar um for e quando um while. D exemplos tericos de cada.

20. Ler dois vetores A e B com C elementos cada e dizer quantos elementos de A so maiores
que qualquer elemento de B.
21. Encontrar o maior e menor valor de 5 nmeros lidos
22. Encontrar o maior valor em um conjunto de 10 nmeros.
23. Dado um vetor de inteiros no ordenado, faa uma funo que retorne o valor mais prximo de um
nmero fornecido pelo usurio. O vetor no pode ser ordenado.
24. Assumindo-se que se tenha um vetor de inteiros randmicos com tamanho M. Implemente as
seguintes funes, sem ordenar previamente o vetor:
a. Mostrar os valores do vetor;
b. encontrar o maior valor deste vetor;
c. encontrar os dois maiores valores do vetor, com apenas uma leitura do vetor;
d. encontrar os N maiores valores do vetor, com a mesma restrio do item anterior. N
fornecido pelo usurio;
e. Funo para calcular a mdia dos valores do vetor;

f. Funo para dizer se existem dois valores iguais no vetor.


25. Fazer troca de posio de elementos de um vetor usando uma varivel auxiliar
26. Dado um vetor com nmeros ordenados de forma no decrescente, faa uma funo que imprime
somente os nmeros que no sejam repetidos.
27. Funo que altera a ordem dos elementos de um vetor de 30 posies. O primeiro elemento dever
ser o ltimo, e assim por diante. Este vetor dever ser preenchido com o uso de um lao de
repetio. Imprimir o vetor antes e depois da inverso. Usar apenas uma varivel auxiliar para fazer
a troca.
28. Dados dois vetores com um N e M valores, faa uma funo para imprimir todos os valores que
esto presentes nos dois vetores. Ex: se v1={19, 5, 2, 6} e v2={5, 0, 9, 4, 18, 56} dever ser
impresso somente o valor 5.
29. Funes para ordenar um vetor de forma que:
a. os menores elementos fiquem localizados ao centro.
b. menores elementos fiquem localizados nos extremos
c. os menores elementos fiquem localizados prximos a uma posio determinada do vetor

30. Fazer troca de linhas de uma matriz de NxM. Inicialmente, atribuir aos elementos da matriz o valor
da linha + coluna.
31. Funes para inicializar uma matriz NxN de forma que:
a. os elementos da diagonal principal tenham valor 1 e os demais devem ter valor 0.
b. cada coluna possua o mesmo valor
c. cada linha possua o mesmo valor, que dever ser o fatorial do nmero da linha.
d. cada elemento seja a soma dos ndices da linha com a coluna
e. cada elemento da coluna seja maior que o anterior. O mesmo vale para as linhas
f. elementos acima da diagonal superior sejam 1, e o resto zero
g. elementos abaixo da diagonal superior sejam 1, e o resto zero
h. os elementos do centro sejam maiores que os dos extremos (como uma funo gaussiana)
i. Aps inicializadas, chamar funo que imprime a matriz na tela de forma estruturada.
32. Funo que diz qual linha de uma matriz bidimensional possui a maior soma.
33. Funo para achar o maior e menor valor de uma matriz qualquer de inteiros
34. Dada uma matriz NxN, trocar linhas por colunas
35. Dada uma matriz NxN, trocar colunas por linhas
36. Funo para leitura, via teclado, de uma matriz de qualquer dimenso. Deve-se inicialmente
estipular as suas dimenses.
37. Simular uma matriz de N dimenses com uso de um vetor de M posies.

2.3 Bem interessantes


1. Implementar o problema da mochila. Tendo-se uma sequncia decrescente de nmeros
inteiros positivos que inicia em N, com decremento inteiro positivo K, deseja-se empacotlos em uma mochila com tamanho M, de forma que se coloque dentro dela
preferencialmente os maiores valores, at que ela esteja cheia. N e K so inteiros e devem
ser definidos pelo usurio. Implementar o problema sem usar vetores ou matrizes
temporrias. Imprimir cada um dos itens em uma linha especfica da tela:
a. Os elementos a serem colocados na mochila;
b. Os elementos que entraram na mochila;
c. Os que ficaram fora da mochila;
d. Qual a soma dos que entraram na mochila;
e. Qual a soma dos elementos que no entraram na mochila.
2. Os nmeros de Fibonacci so representados pela sequncia: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
onde cada valor calculado pela soma dos dois anteriores. Faa um programa que usa esta

3.

4.

5.
6.

definio e imprima os primeiros 1000 valores desta sequncia. Fazer outra verso
otimizada que utiliza apenas duas variveis.
Quanto deve ser o incremento INC para que a somatria A + (A+INC) + (A+INC+INC)+
.... (A+N*INC) resulte num valor M, com N passos. Resolva este problema usando um
processo iterativo, com variaes de INC no lineares, assumindo um erro mximo de 1%
de M.
Quantas iteraes so necessrias para a soma 1/2 + 1/3 +1/4 + 1/5 ..... produzir os valores
10, 20 e 40. Dica: para 40 deixe processando enquanto voc dorme, num fim de semana
enquanto voc estiver na praia ou nas frias escolares de fim de ano. Diga o tempo de
execuo para cada caso.
Apresente algumas solues para descobrir qual o valor do ltimo dgito de um nmero
inteiro de 3 dgitos.
Assuma as funes f(x) = x2 e f(x) = 2345x. Desenvolva um algoritmo iterativo para
descobrir:
a. em que valor de x as funes tm o mesmo valor. Assumir erro menor que 0.001.
Utilizar incremento de x fixo. Quanto tempo o algoritmo leva para achar este valor
supondo que o valor inicial de x 1. Caso demorar pouco tempo, aumentar o erro.
b. otimizar o algoritmo anterior para valores variados do incremento de x. Qual o
novo tempo do algoritmo. Qual o menor erro obtido com no mximo 1000 passos
com este novo algoritmo?
c. Comente as abordagens usadas nos dois algoritmos anteriores (pontos fortes e
fracos) e mostre em porque o segundo algoritmo mais eficiente que o primeiro.