Você está na página 1de 3

Universidade de So Paulo  USP

Instituto de Cincias Matemticas e de Computao  ICMC


Departamento de Cincias de Computao  SCC
SCC-0202  Algoritmos e Estruturas de Dados I
Responsvel: Prof. Dr. Fernando V. Paulovich
PAE: Glenda Botelho
Lista de Exerccios (Lgica de Programao)

Para a resoluo desses exerccios busque encontrar solues cujo custo computacional (nmeros de
testes, multiplicaes, etc.) seja o menor possvel. A maioria tem solues muito mais rpidas que o
trivial.
1. Escreva uma funo que faa a multiplicao de dois nmeros inteiros usando somas e subtraes.
2. Escreva uma funo que faa a diviso de dois nmeros inteiros usando somas e subtraes.
3. Escreva uma funo que calcule a potncia de um nmero inteiro xy usando multiplicaes.
4. Escreva uma funo que receba um nmero inteiro e retorne o inverso desse nmero. Por exemplo,
se a funo receber 123456 deve retornar 654321.
5. Escreva uma funo que receba um nmero inteiro e retorne 1 se esse for primo e 0 caso contrrio.
6. Escreva uma funo que receba um nmero inteiro e retorne seu fatorial.
7. Escreva uma funo que receba uma string (cadeia de caracteres) e retorne 1 se essa for um palndromo e 0 caso contrrio. Um palndromo uma palavra ou frase que se l da mesma maneira nos
dois sentidos - normalmente, da esquerda para a direita ou ao contrrio, da direita para a esquerda.
Por exemplo, OVO; ARARA; SOCORRAM-ME, SUBI NO NIBUS EM MARROCOS.
8. Escreva uma funo que imprima todos os anagramas de uma palavra que contenha letras no
repetidas. Uma anagrama so todas as possveis permutaes das letras da palavra original que
forma ou no palavras reais. Por exemplo, a palavra cat, geraria os anagramas: cat, cta, atc, act,
tca, tac.
9. Escreva uma funo que receba dois argumentos, um vetor contendo valores inteiros, e um outro
argumento inteiro maior que o menor nmero contido nesse vetor. Essa funo deve imprimir quais
dos valores contidos no vetor devem ser somados para se obter o valor do segundo argumento. Por
exemplo, se a funo receber o vetor [11, 8, 7, 6, 5] e o segundo argumento 20, essa deveria imprimir
os nmeros 8, 7, 5 uma vez que 8 + 7 + 5 = 20. Se no for possvel obter o valor nal, no imprima
nada.
10. Escreva uma funo que dados dois nmeros inteiros x e y , com x < y , determine quantos nmeros
primos existem entre esses.
11. Escreva uma funo que dados dois nmeros inteiros x e y , com x < y , determine quantas vezes
um determinado algoritmo z aparece em todos os nmeros denidos no intervalo entre x e y .
12. Escreva uma funo que receba um vetor de nmeros inteiros e retorne o MMC desses.
13. Faa um programa para receber dois nmeros do usurio e calcular o seu MDC utilizando o mtodo
de Euclides. O programa deve continuar pedindo dois nmeros at que 0 e 0 sejam fornecidos.
14. Escreva uma funo que receba um nmero inteiro e imprima seus fatores primos.
15. Escreva uma funo que dado um ngulo em graus, retorne seu seno. Para isso use as sries de
MacLaurin. Quando um ngulo dado em radianos, a srie de MacLaurin para seno :

sin =

5
7
2n+1
3
+

+ . . . + (1)n
3!
5!
7!
(2n + 1)!
radianos =
1

graus
180

16. Escreva uma funo que dado um ngulo em graus, retorne seu coseno. Para isso use as sries de
MacLaurin. Quando um ngulo dado em radianos, a srie de MacLaurin para coseno :

cos = 1 x +

x4
x2
x2n
+
+ . . . + (1)n
2!
4!
(2n)!

radianos =

graus
180

17. Escreva uma funo que recebe um inteiro e imprima esse valor em algarismos romanos. Por
exemplo, se essa funo receber 13 deve imprimir XIII .
18. Escreva uma funo que receba um nmero inteiro positivo x e retorne a soma de todos os inteiros
positivos entre 1 e x.
19. Escreva uma funo que receba um nmero positivo e imprima sua representao binria.
20. Escreva uma funo que receba duas matrizes e seus respectivos tamanhos de linhas e colunas e
imprima, quando possvel, o resultado da multiplicao dessas.
21. Escreva uma funo que receba trs valores inteiros e retorne 0 se esses no forma um tringulo, 1
se o tringulo equiltero, 2 se issceles e 3 se escaleno.
22. Escreva uma funo que receba um nmero e retorne o menor inteiro positivo cujo quadrado
superior ao valor dado.
23. Escreva uma funo que receba dois nmeros x e y , com x < y , e imprima quais nmeros nesse
intervalo que divididos por 13 do um resto igual a 5.
24. Escreva uma funo que receba dois nmeros inteiros n e r e retorne o nmero de combinaes de
n objetos tomados r de cada vez. O nmero de combinaes dado pela frmula:

c=

n!
r! (n r)!

25. A famosa conjectura de Goldbach diz que todo inteiro par maior que 2 a soma de dois nmeros
primos (voc aceita isso?). Testes foram feitos sem contudo encontrar um contra-exemplo. Escreva
um programa mostrando que a armao verdadeira para todo nmero par entre 700 e 1100. O
programa deve imprimir cada nmero e seus correspondentes primos.
26. Escreva uma funo recursiva que retorne a representao binria de um nmero inteiro.
27. Seja N um nmero quadrado perfeito. Se somarmos os nmeros mpares consecutivos (1 + 3 + 5 +
7 + 9 + ...) at que esta soma seja igual a N , o nmero M de termos somados ser igual a raiz
quadrada de N . Exemplo: N = 1616 = 1 + 3 + 5 + 7M = 4 termos. Logo, a raiz quadrada de 16
4. Fazer um programa em C para ler um nmero inteiro e positivo N e responder se N quadrado
perfeito.
28. Escreva uma funo que calcule a srie de Fibonacci. Observao: Uma seqncia dita de Fibonacci quando os dois primeiros termos forem 0 e 1 e todos os termos consecutivos tenham valor
igual soma dos dois termos anteriores.
Exemplo: 011235813213455...
29. O elemento minimax de uma matriz o menor elemento da linha que contm o maior elemento da
matriz. Desenvolva um algoritmo para encontrar o elemento minimax.
30. Dados os vetores ordenados M e N desenvolva um algoritmo que devolva o k -simo menor elemento
de N + M .
31. Crie um funo que faa a ordenao de um vetor.
32. A converso de graus Farenheit para Celsius obtida por C = 5(F 32)/9. Fazer um algoritmo
que calcule e escreva uma tabela de graus Celsius em funo de graus Farenheit, variando um a um
de 50 a 150 graus Farenheit.
2

33. Faa uma funo que calcule todos os divisores de um nmero.


34. Crie um programa para mostrar todos os nmeros perfeitos entre 1 e 100.
35. Implemente funes que faam o mesmo que as funes do C:
strlen( ) - retorna o tamanho da string.
strcmp( ) - diz se as duas strings so iguais ou no.
strcnpy( ) - copia os

n primeiros caracteres para a string destino.

strcat( ) - concatena duas strings.


strnd( ) - procura todas as ocorrncia de uma string dentro de outra. Deve informar todas
as posies iniciais onde ela encontrou.
36. Torre de Hani: considerando 3 torres, o objetivo transferir 3 discos que esto na torre A para
a torre C, usando uma torre B como auxiliar. Somente o ltimo disco de cima de uma pilha pode
ser deslocado para outra, e um disco maior nunca pode ser colocado sobre um menor. Implementar
uma funo recursiva que mostra a seqncia de movimentos para resolver o problema da Torre de
Hani.
37. Escreva um programa que leia uma matriz nxm do usurio e a transforme em um vetor unidimensional de n.m posies.
38. Um dos sistemas de encriptao mais antigos atribudo a Jlio Csar: se uma letra a ser encriptada
a letra de nmero N do alfabeto, substitua-a com a letra (N + K), onde K um nmero inteiro
constante (Csar utilizava K = 3). Usualmente consideramos o espao como zero e todos os clculos
so realizados com mdulo-27. Dessa forma, para K = 1 a mensagem Ataque ao amanhecer se torna
bubrfabpabnboifdfs. Faa um programa que receba como entrada uma mensagem e um valor de K
e retorne a mensagem criptografada pelo cdigo de Csar. Fraquezas: apenas 26 chaves possveis.
39. Calcular a soma dos elementos de uma matriz numrica quadrada qualquer dada, que esto acima
da diagonal principal.
40. Escreva um programa fazendo o uso de struct. Voc dever criar uma struct chamada Ponto,
contendo apenas a posio x e y (inteiros) do ponto. Declare 2 pontos, leia a posio (coordenadas
x e y ) de cada um e calcule a distncia entre eles. Apresente no nal a distncia entre os dois
pontos.

Você também pode gostar