Anda di halaman 1dari 26

Universidade Federal de Campina Grande

Departamento de Sistemas e Computação


Pós-Graduação em Informática

Problemas para resolução em Pascal/C

Elthon Allex da Silva Oliveira

Camilo de Lelis Gondim Medeiros

Campina Grande - 2005


Questões
Operadores e Variáveis (Entrada e Saı́da de dados)
1. Faça um programa que imprima o produto de dois números quaisquer, lidos
do teclado.
2. Faça um programa que imprima a raiz quadrada de um número qualquer
lido do teclado.
3. Faça um programa para calcular a idade de uma pessoa em dias, dado o
número de anos. O número de anos deve ser lido do teclado. Considere 1
ano = 365 dias.
4. Faça um programa para calcular a idade de uma pessoa horas, dado o
número de anos. O número de anos deve ser lido do teclado. Considere 1
ano = 365 dias e 1 dia = 24 horas.
5. Escreva um programa que solicite 3 números reais e imprima a média ar-
itmética destes números.
6. Faça um programa que tome o valor de uma conta de restaurante (valor
lido do teclado) e imprima o valor total a ser pago, considerando que o
restaurante cobra 10% para o garçom.
7. Faça um programa que peça ao usuário a quilometragem atual, a quilome-
tragem anterior, os litros consumidos e informe a taxa de consumo (quilômetros
por litro) de um automóvel.
8. Criar um programa que converta uma dada temperatura de Celsius para
Fahrenheit. Fórmula de conversão: F = 1.8*C + 32.
9. Faça um programa que tome os tamanhos dos catetos de √ um triângulo
retângulo e mostre na tela o valor de sua hipotenusa (h = b2 + c2 ).
10. Faça um programa que calcule a área (πr2 ) de um cı́rculo a partir do valor
do perı́metro (valor dado pelo usuário - 2πr). Obs.: π=3.1416
11. Faça um programa que calcule o volume de um prisma de base circular. O
usuário deve fornecer o raio da base e a altura do prisma.
12. Faça um programa que leia um valor em polegadas e apresente a mensagem:
x polegadas correspondem a y centı́metros. Obs.: 1”=2.54cm
13. Escreva um programa para ler os coeficientes de uma equação do segundo
grau (ax2 + bx + c = 0) e determinar suas raı́zes reais, caso existam.
√ √
−b + b2 − 4ac −b − b2 − 4ac
x1 = , x2 = (1)
2a 2a

1
14. Escreva um programa que leia um número natural na base binária, e o
transforme para a base decimal.

15. Escreva um programa que leia um número natural na base decimal, e o


transforme para a base binária.

16. Escreva um programa que dado x segundos fornecidos pelo usuário, transforme-
os em horas e minutos quando possı́vel. Ex.: 3670 segundos = 1h 1min
10seg; 65 segundos = 0h 1min 5seg; 43 segundos = 0h 0min 43seg.

17. Escreva um programa que transforme um dado peso em toneladas para o


seu peso em arrobas. 1 arroba equivale a 15 Kg.

Desvios Condicionais
1. Escreva um programa para ler três números reais quaisquer e imprimir estes
números em ordem numérica crescente.

2. Todos que querem aprender a jogar golfe se deparam com diversas es-
quisitices (como qualquer jogo inventado pelos britânicos). Uma dessas
esquisitices é o jeito de contar o número de tacadas que um jogador pre-
cisou para colocar a bola no buraco. Existe um “par” para cada buraco, e
praticamente todos os resultados são relativos ao par (o par é o número de
tacadas que um jogador razoável precisa para colocar a bola no buraco). Se
o jogador precisar de uma tacada a menos que o par, dizemos que fez um
birdie. Se foram duas a menos, ele fez um eagle, três a menos, ou menos
tacadas, double eagle. Além disso, as tacadas espetaculares em que o jo-
gador acerta a bolinha na primeira tacada recebem o nome de hole-in-one.
Se ele precisar de uma a mais que o par, fez um bogey, duas a mais ou mais
tacadas, double bogey. Você é o caddy do jogador (aquele que carrega os
tacos e anota os resultados) e se confunde todo com esses nomes. Assim,
você deve escrever um programa que dado o “par” para um buraco e o
número de tacadas que o jogador precisou, imprime o nome da jogada que
fez o jogador.

3. Escreva um programa para ler cinco valores inteiros aleatórios, imprimir os


valores lidos e determinar o maior dos valores lidos.

4. Escreva um programa para ler cinco valores inteiros aleatórios, imprimir


os valores lidos e determinar o menor dos valores lidos e sua posição no
conjunto.

5. Escreva um programa para ler cinco números inteiros, imprimir os números


lidos e determinar a diferença entre os dois maiores números lidos.

2
6. Escreva um programa para ler três valores inteiros, imprimir os valores lidos
e determinar o valor que não é o maior e que não é o menor dos três valores
lidos.

7. Escreva um programa para ler quatro valores reais, imprimir os valores lidos
e determinar:

(a) a média dos números positivos;


(b) a média dos números negativos;
(c) a soma de todos os valores lidos.

8. Dizemos que um número natural é triangular se ele é produto de três


números naturais consecutivos. Exemplo: 120 é triangular, pois 4*5*6 =
120. Dado n natural, verificar se n é triangular.

9. Escreva um programa para ler um número inteiro qualquer e determinar se


ele é primo.

10. Dado n inteiro positivo, dizemos que n é perfeito se for igual à soma de seus
divisores positivos diferentes de n. Exemplo: 6 é perfeito, pois 1+2+3 = 6.
Escreva um programa que verifique se um dado número inteiro positivo é
perfeito

11. Escreva um programa para determinar se um número inteiro de quatro


dı́gitos é palı́ndromo perfeito. Um número é palı́ndromo perfeito quando
pode ser lido da direita para a esquerda sem alterar seu valor, tal como
1661.

12. Escreva um programa para identificar os pares de números menores que 500
tais que o segundo seja igual a 1 mais duas vezes o primeiro. Exemplo: 3 e
7.

13. Escreva um programa para determinar um número inteiro n tal que n +


3n + 5 seja divisı́vel por 121.

14. Escreva um programa para ler dois números inteiros e determinar se eles
são primos gêmeos. Dois números são primos gêmeos se eles são primos e
existe uma diferença de dois (2) entre eles (11 e 13 são primos gêmeos).

15. Escreva um programa que leia três números naturais, e verifique se eles
podem formar os lados de um triângulo retângulo.

16. Escreva um programa que leia um número inteiro qualquer e determine se


o número que foi lido é par ou ı́mpar.

3
17. Escreva um programa para ler vinte números inteiros e determinar se cada
um desses números é par ou ı́mpar.

18. Escreva um programa para ler e imprimir 3 valores reais. O programa deve
informar se esses valores formam um triângulo e o tipo de triângulo. O
triângulo poderá ser:

(a) equilátero - quando os três lados forem iguais;


(b) isósceles - quando dois dos lados forem iguais e
(c) escaleno - quando os três lados forem distintos.

19. Escreva um programa para ler um número inteiro e um natural k. Calcular


nk .

20. Escreva um programa que leia as coordenadas (x1 , y1 ), (x2 , y2 ), e (x3 , y3 )


representando os vértices de um triângulo em um sistema de coordenadas
cartesianas, leia as coordenadas (x4 , y4 ) de um ponto qualquer e determine
se o ponto está ou não dentro do triângulo. O programa também deve
escrever todas as coordenadas na tela.

21. Escreva um programa para determinar o dia da semana referente a uma


data qualquer do Calendário Gregoriano. A data deve ser lida no formato
dia-mês-ano. O Reverendo Zeller desenvolveu o seguinte algoritmo com esse
objetivo:

(a) considerar M como sendo o mês do ano, iniciando com março com M
= 1 e janeiro e fevereiro sendo os meses 11 e 12 do ano anterior;
(b) considerar D como sendo o dia do mês;
(c) considerar A como sendo o ano do século;
(d) considerar S como sendo o século anterior. O ı́ndice do dia (Domingo
= 0, Segunda = 1, ..., Sábado = 6) é dado pelo resto da divisão de
(13M - 1)/5 + A/4 + S/4 por 7, considerando apenas a parte inteira
de cada uma das divisões.

22. Faça um programa que leia a idade de uma pessoa e informe sua classe
eleitoral: não eleitor (abaixo de 16 anos), eleitor obrigatório (entre 18 e 65
anos) e eleitor facultativo (entre 16 e 18 anos e acima dos 65 anos).

23. Escreva um programa que simule uma calculadora simples com 4 operações.
Os dados devem ser lidos na forma:

operando1 operador operando2

O programa deve imprimir o resultado da operação.

4
24. No Brasil existe o CPF (Cadastro de Pessoas Fı́sicas) que serve para iden-
tificar cada indivı́duo no paı́s. O número do CPF é composto de 11 dı́gitos,
sendo os dois últimos os dı́gitos de verificação. A fórmula para verificar a
validade do número do CPF é simples e é explicada abaixo. Vamos tomar
como exemplo o número 123.456.789-09.

Primeiro Dı́gito Verificador


Primeiro calculamos a soma da multiplicação dos 9 primeiros dı́gitos por
10, 9, 8, ... , 3, 2, respectivamente. Ou seja: Soma = (1*10) + (2*9) +
... + (8*3) + (9*2). Em seguida, dividimos e multiplicamos por 11 (ao
multiplicarmos utilizamos o valor inteiro da divisão): Valor = (Soma/11)
* 11. Por fim, subtraı́mos Valor de Soma: Resultado = Soma - Valor.
Note que acabamos de realizar o módulo de Soma e 11. As duas operações
anteriores podem ser substituı́das por Resultado = Soma módulo 11. Agora
analisamos Resultado:

• Se Resultado for igual à 1 ou à 0, então o 1o dı́gito verificador é 0;


• Caso contrário, o 1o dı́gito verificador é o resultado da subtração de
Resultado de 11.

Segundo Dı́gito Verificador


Primeiro calculamos a soma da multiplicação dos 9 primeiros dı́gitos por 11,
10, 9, ... , 4, 3, respectivamente e em seguida somamos com (Digito1 *2),
sendo que Digito1 é o valor encontrado para o 1o dı́gito verificador. Ou seja:
Soma = (1*11) + (2*10) + ... + (8*4) + (9*3) + (Digito1*2). O resto
é semelhante ao que foi feito anteriormente. Dividimos e multiplicamos
por 11 (ao multiplicarmos utilizamos o valor inteiro da divisão): Valor =
(Soma/11) * 11. Por fim, subtraı́mos Valor de Soma: Resultado = Soma
- Valor. Agora analisamos Resultado:

• Se Resultado for igual à 1 ou à 0, então o 2o dı́gito verificador é 0;


• Caso contrário, o 2o dı́gito verificador é o resultado da subtração de
Resultado de 11.

No nosso exemplo (123.456.789-09) o número é válido. Escreva um pro-


grama que dado um número de CPF, verificar se o dı́gito verificador é
válido ou não.

25. Uma pessoa aplicou um capital de x reais a juros mensais de z durante um


ano. Escreva um programa que determine o montante ao final do ano.

26. Escreva um programa que leia um ponto (x,y) do plano cartesiano e diga
se o mesmo está dentro da circunferência de raio 3 e centro no ponto (0,0).

5
27. Escreva um programa que leia um ponto (x,y) do plano cartesiano e diga se
o mesmo está dentro da circunferência de raio a ser fornecido pelo usuário
e centro no ponto (0,0).

28. Escreva um programa para ler um número inteiro com até 6 dı́gitos e de-
terminar seu correspondente em algarismos romanos.

29. Escreva um programa para ler um número em algarismos romanos e deter-


minar seu correspondente em algarismos arábicos.

Laços
1. Escreva um programa para ler um número inteiro n e imprimir o valor lido
e os n primeiros números ı́mpares positivos.

2. Escreva um programa para ler um número inteiro n e outro m. O programa


deve imprimir os n primeiros números múltiplos de m.

3. Escreva um programa para ler um número inteiro n e outro m. O pro-


grama deve imprimir os n primeiros números múltiplos de m, excluindo-se
os múltiplos de 3.

4. Escreva um programa para ler um número inteiro n e imprimir os n primeiros


números pares positivos.

5. Escreva um programa para ler um número inteiro k e imprimir os k primeiros


números ı́mpares positivos e sua soma.

6. Escreva um programa para ler um número inteiro k e imprimir os k primeiros


números pares positivos e sua soma.

7. Escreva um programa para ler vinte números inteiros e determinar se cada


um desses números é par ou ı́mpar.

8. Escreva um programa que calcule a média de uma seqüência de números


reais positivos inseridos pelo usuário. A entrada de dados termina quando
o número digitado for negativo.

9. Escreva um programa para ler vários pares de números, um n inteiro e um


natural k. A cada par lido deve-se calcular e mostrar nk .A leitura deve ser
encerrado quando k for menor que zero.

10. Escreva um programa para determinar todos os números palı́ndromos per-


feitos do intervalo [1000, 9999]. Um número é palı́ndromo perfeito quando
pode ser lido da direita para a esquerda sem alterar seu valor, tal como
1661.

6
11. Escreva um programa para ler os coeficientes de várias equações do se-
gundo grau e determinar, para cada uma das equações, suas raı́zes reais,
caso existam. Quando a equação não possuir raı́zes reais, o programa deve
informar esta ocorrência. O processamento deve ser encerrado quando o
primeiro valor lido, de uma determinada equação, for nulo, sem considerar
este grupo de valores nos cálculos.

12. Escreva um programa para ler dois números inteiros m e n e, a seguir,


imprimir os números pares existentes no intervalo [m, n].

13. Escreva um programa para ler seguidamente valores inteiros até que seja
lido um valor negativo. Para cada valor lido, exceto o último, o programa
deve determinar seu fatorial.

14. Escreva um programa que imprima os seis primeiros pares de primos gêmeos.
Dois números são primos gêmeos se eles são primos e existe uma diferença
de dois (2) entre eles (11 e 13 são primos gêmeos).

15. Escreva um programa para ler um número inteiro qualquer e determinar


todos os seus divisores exatos.

16. Escreva um programa para determinar todos os pares de primos gêmeos


menores que n, sendo n um valor lido do teclado.

17. Para n alunos de uma determinada classe são dadas as 3 notas das provas.
Calcular a média aritmética das provas de cada aluno, a média da classe,
o número de aprovados e o número de reprovados (critério de aprovação:
média maior ou igual a cinco).

18. Escreva um programa para ler dez grupos de três valores inteiros cada,
imprimir os valores lidos identificando o valor que não é o maior e que não
é o menor para cada um dos grupos de três valores.

19. Escreva um programa para determinar todos os números perfeitos existentes


entre 2 e 1000. Um número é perfeito quando a soma de seus divisores,
excetuando-se o próprio número, for igual ao número.

20. Escreva um programa para ler três números inteiros e imprimir todos os
múltiplos do primeiro que estejam compreendidos entre o segundo e o ter-
ceiro, inclusive. Assuma que primeiro ≤ segundo ≤ terceiro.

21. Escreva um programa para ler vinte valores inteiros e imprimir cada um
dos valores acompanhados de todos os seus divisores exatos.

22. Escreva um programa para ler quinze pares de valores inteiros e determinar
o Máximo Divisor Comum para cada um dos quinze pares de valores.

7
23. Escreva um programa que leia um número inteiro qualquer e determine se
esse número é perfeito ou não. Um número é perfeito quando a soma de
seus divisores, excetuando-se o próprio número, for igual ao número.

24. Escreva um programa para determinar o número de combinações de n ob-


jetos tomados p a p, a partir de valores de n e p lidos da unidade padrão
de entrada.
n!
Cpn = (2)
p!(n − p)!
25. Escreva um programa para ler dois números inteiros e determinar se eles
são primos relativos. Dois números são primos relativos (ou primos entre
si) quando eles não têm nenhum divisor comum (excetuando-se a unidade).

26. Escreva um programa para cálculo do Mı́nimo Múltiplo Comum entre dois
números inteiros lidos da unidade padrão de entrada.

27. Escreva um programa para ler um número inteiro n e a seguir ler n pares
de valores inteiros. Para cada um dos n pares de valores o programa deve
determinar seu Mı́nimo Múltiplo Comum.

28. Escreva um programa para ler vários grupos de dois valores inteiros até
encontrar dois valores iguais. O programa deve imprimir cada par de valores
acompanhado de seu Mı́nimo Múltiplo Comum.

29. Escreva um programa para ler vários grupos de três valores inteiros e de-
terminar o valor que não é o maior e que não é o menor para cada um dos
grupos. O processamento deve ser encerrado quando um dos três valores
for negativo.

30. Faça um programa para o “jogo de adivinhar um número”. O computa-


dor deve sortear um número entre 0 e 100 e pedir para o usuário tentar
adivinhar este número. O usuário vai dizer o seu palpite, e o computador
deve responder, se ele é maior ou menor que o número que ele sorteou.
O programa termina somente quando o usuário acertar exatamente qual o
número que o computador tinha sorteado, escrevendo uma mensagem de
felicitações para o nosso usuário e indicando o número total de tentativas
feitas. Dica: para gerar um número qualquer entre 0 e 100, use um co-
mando como o deste exemplo indicado logo a seguir.
Exemplo: numero sorteado := random (100); { 0 ≤ numero sorteado <
100 } 1

31. Escreva um programa que leia dois valores inteiros a e b (a sempre par e
menor que b), calcule o produtório dos números pares compreendidos entre
1
Exemplo em código Pascal.

8
a e b, inclusive. O programa deve imprimir o produtório e a quantidade de
elementos que compõem o produtório.
32. Escreva um programa para identificar os números amigáveis menores que
2000. Dois números são amigáveis quando cada um é igual à soma dos
divisores do outro número (excluindo apenas o próprio número). Exemplo:
220 e 284 são números amigáveis pois a soma dos divisores de 220 (1, 2, 4,
5, 10, 11, 20, 22, 44, 55, 110) é igual a 284 e a soma dos divisores de 284
(1, 2, 4, 71, 142) é igual a 220.
33. Criar um algoritmo que imprima a tabela de conversão Celsius-Fahrenheit,
em intervalos de 1 grau, numa faixa de temperaturas especificada pelo
usuário. O algoritmo deve solicitar ao usuário o limite inferior e o lim-
ite superior da faixa de temperaturas (em graus Celsius). O valor fornecido
pelo usuário será um inteiro. Fórmula de conversão: F = 1.8*C + 32. Ex-
emplo: valores lidos: 50 52
saı́da:
50 122
51 123.8
52 125.6
34. Escreva um programa para ler um valor inteiro k e calcular a média ar-
itmética de k valores reais lidos da unidade padrão de entrada. O programa
deve imprimir os valores lidos e a sua média aritmética.
35. Escreva um programa para ler um valor inteiro k e calcular a média ar-
itmética de k valores reais lidos da unidade padrão de entrada. O programa
deve imprimir o fatorial de cada número par positivo fornecido.
36. Escreva um programa para ler um número inteiro k, e a seguir ler k números
inteiros, imprimir os valores lidos e determinar a média aritmética dos val-
ores ı́mpares e a média aritmética dos valores pares existentes entre os
valores lidos.
37. Escreva um programa para determinar todos os números de 3 algarismos,
cujas somas dos cubos dos algarismos sejam iguais ao próprio número. Ex-
emplo: 153 = 1 + 5 + 3 .
38. Escreva um programa para determinar todos os números de 4 algarismos
que possam ser separados em dois números de dois algarismos que somados
e elevando-se a soma ao quadrado obtenha-se o próprio número. Exemplo:
3025 = (30 + 25) = 55.
39. Escreva um programa para ler e imprimir a idade de um grupo de 20 pes-
soas. Ao final, o programa deve determinar a pessoa mais idosa, a mais
jovem, e a média das idades do grupo de pessoas.

9
40. Dado n e dois números naturais i e j diferentes de 0, imprimir em ordem
crescente os n primeiros naturais que são múltiplos de i ou de j ou de ambos.
Exemplo: Para n = 6 , i = 2 e j = 3 a saı́da deverá ser : 0,2,3,4,6,8

41. Escreva um programa que leia dois inteiros m e n, imprima os valores lidos
e determine os n primeiros múltiplos de m.

42. Escreva um programa para ler um número inteiro n e imprimir os n primeiros


números primos.

43. Escreva um programa para determinar os números primos do intervalo [501,


1500].

44. Escreva um programa para determinar os números primos do intervalo [m,


n], onde m e n são valores lidos da unidade padrão de entrada.

45. Escreva um programa para ler um número inteiro qualquer e verificar se


o número lido é primo. Em caso afirmativo, o programa deve imprimir o
fatorial do número. Caso o número não seja primo, imprimir todos os seus
divisores.

46. Escreva um programa para ler seguidamente vários valores inteiros até en-
contrar um valor negativo ou nulo. Para cada um dos valores lidos, exceto
o último, o programa deve informar se o valor é primo ou não.

47. Dada uma seqüencia de n números inteiros, determinar a soma dos números
pares.

48. Uma loja de discos anota diariamente durante o mês de março a quantidade
de discos vendidos. Determinar em que dia desse mês ocorreu a maior venda
e qual foi a quantidade de discos vendida nesse dia.

49. Escreva um programa que leia um conjunto de pontos (x,y) do plano carte-
siano e diga se os mesmos estão ou não dentro da circunferência de raio a
ser fornecido pelo usuário e centro no ponto (0,0).

50. Dada uma seqüencia de n números inteiros, determinar a quantidade de


números múltiplos de 3.

51. Escreva um programa para ler um número inteiro qualquer e determinar


seu fatorial.

52. Escreva um programa que leia 10 pares de números inteiros (m, n) e para
cada par de valores:

(a) imprima os valores lidos;


(b) imprima os n primeiros múltiplos de m.

10
53. Escreva um programa para determinar o fatorial de dez números inteiros
quaisquer, lidos do teclado.

54. Escreva um programa para imprimir uma tabela de temperaturas em graus


Célsius e equivalentes em Fahrenheit, de 0 C a 100 C.

55. Escreva um programa para ler dez grupos de valores para A, B e C (variáveis
do tipo REAL). Para cada grupo de valores o programa deve imprimir os
valores lidos e as raı́zes da equação Ax2 + Bx + C = 0.

56. Escreva um programa para ler quatro valores reais, imprimir o maior dos
quatro valores e os valores lidos na seqüência em que foram fornecidos.

57. Escreva um programa para calcular uma aproximação para Pi. A aprox-
imação pode ser obtida de Pi = 4 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11 + ...
O programa deve encerrar o processamento quando a variação no valor
calculado for inferior a 0.0001.

58. Escreva programas para cálculo da soma 1 - 1/2 + 1/3 - 1/4 + ... + 1/9999
- 1/10000 por adição dos termos: da esquerda para a direita; da direita para
a esquerda; positivos e dos termos negativos, separadamente, da esquerda
para a direita; positivos e dos termos negativos, separadamente, da direita
para a esquerda. O resultado com dez casas decimais é 0.6930971830.

59. Escreva um programa para calcular uma aproximação para cosseno(x), onde
x é um valor inteiro lido da unidade padrão de entrada. A aproximação
pode ser obtida de cos(x) = 1 - x/2! + x/4! - x/6! ... O programa deve
encerrar o processamento quando a variação no valor calculado for inferior
a 0.001.

60. Escreva um programa para calcular uma aproximação para seno(x), onde x
é um valor inteiro lido da unidade padrão de entrada. A aproximação pode
ser obtida de: sen(x) = x - x/3! + x/5! - x/7! + ... O programa deve
encerrar o processamento quando a variação no valor calculado for inferior
a 0.001.

61. Escreva um programa para calcular uma aproximação para exp(x), onde x
é um número qualquer lido da unidade padrão de entrada. A aproximação
pode ser obtida de: exp(x) = 1 + x + x/2! + ... + x/i!. O programa deve
encerrar o processamento quando a variação no valor calculado for inferior
a 0.0001.

62. Dado um paı́s A, com x milhões de habitantes e uma taxa de natalidade


de 1% ao ano, e um paı́s B, com y milhões de habitantes e uma taxa de
natalidade de 1,25% ao ano, calcular e imprimir o tempo necessário para
que a população do paı́s B ultrapasse a população do paı́s A. Suponha que

11
o usuário digita um valor inicial de x maior que o valor inicial de y. Caso
isto não aconteça, solicitar novos valores ao usuário até que a condição seja
satisfeita.
63. Escreva um programa que imprima a tabela abaixo:

Número Quadrado Cubo Raiz Quadrada Raiz Cúbica


1.5 2.25 3.375 1.2247 1.1447
2.5 6.25 15.625 1.5811 1.3572
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
99.5 9900.25 985074.875 9.9749 4.6338

64. Qualquer número natural de quatro algarismos pode ser dividido em duas
dezenas formadas pelos seus dois primeiros e dois últimos dı́gitos. Exemp-
los: 1297: 12 e 97; 5314: 53 e 14. Escreva um programa que imprime todos
os milhares (4 algarismos) cuja raiz quadrada seja a soma das dezenas for-
madas pela divisão acima. Exemplo: raiz de 9801 = 99 = 98 + 01. Portanto
9801 é um dos números a ser impresso.
65. Escreva um programa que leia um número inteiro n e imprima n vezes as
informações do seu cartão pessoal.
66. Escreva um programa para gerar os cinqüenta primeiros termos da série: 1,
1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, ...
67. Escreva um programa para gerar os cinqüenta primeiros termos da série: 2,
4, 4, 16, 6, 36, 8, 64, ..., e determinar a sua soma.
68. Escreva um programa para gerar os cinqüenta primeiros termos da série: 1,
2, 4, 7, 11, 16, 22, ...
69. Escreva um programa para gerar os cinqüenta primeiros termos da série: 1
+ n, 2 * n, 3 + n, 4 * n, ..., onde n é um valor lido da unidade padrão de
entrada.
70. Escreva um programa para gerar os quinze primeiros termos da série de
FIBONACCI: 1, 1, 2, 3, 5, 8, 13, ...
71. Escreva um programa para imprimir os termos da série de FIBONACCI
menores que 10000.
72. Escreva um programa para ler um número desconhecido de valores reais e
imprimir todos os valores lidos, a soma dos valores lidos e a média aritmética
dos valores. O processamento encerra quando um mesmo valor for lido duas
vezes consecutivas, sem considerar uma destas leituras no processamento.

12
73. Escreva um programa para ler um número inteiro n e, a seguir, gerar os n
primeiros termos da série de FIBONACCI com auxı́lio da fórmula:

ci (1 + 5)
f i = round( √ ), onde c = (3)
5 2

74. Escreva um programa para imprimir os termos da série de FIBONACCI


menores que n e maiores que m, ambos os valores lidos do teclado.

75. Dado um natural n, escreva um programa que determine o número harmônico


Hn definido por:
Xn
1
Hn = (4)
k=1 k

76. Dado um número natural n, escreva um programa que determine os n


primeiros números harmônicos maiores que 2 (dois).

77. Dado dois naturais m e n, escreva um programa que determine todos os


números harmônicos entre os dois.

Vetores (Arrays)
1. Dada uma seqüência de n números, imprimi-la na ordem inversa à da
leitura.

2. Dada uma seqüência x0 + x1 ,...,+ xk−1 de números inteiros, determi-


nar uma subseqüência crescente de comprimento máximo. Exemplo: na
seqüência 5, 2, 7, 1, 4, 11, 6, 9 a subseqüência sublinhada é máxima e tem
comprimento 4.

3. Faça um programa que leia um conjunto de 100 elementos numéricos e os


armazene em um vetor. Em seguida, o programa deverá verificar se existem
elementos iguais a 30 no vetor e imprimir o ı́ndice das posições em que eles
foram encontrados.

4. Deseja-se publicar o número de acertos de cada aluno em uma prova em


forma de testes. A prova consta de 30 questões, cada uma com cinco alter-
nativas identificadas por A, B, C, D e E. Para isso são dados:

(a) cartão gabarito;


(b) número de alunos da turma;
(c) cartão de respostas para cada aluno, contendo o seu número e suas
respostas.

13
5. Dados dois vetores x e y, ambos com n elementos, determinar o produto
escalar desses vetores.

6. Faça um programa para resolver o seguinte problema: São dadas as coorde-


nadas reais x e y de um ponto, um número natural n, e as coordenadas reais
de n pontos (1 < n < 100). Deseja-se calcular e imprimir sem repetição
os raios das circunferências centradas no ponto (x,y) que passam por pelo
menos um dos n pontos dados. Exemplo : (x,y) = (1.0, 1.0) ; n = 5. Pontos
: (-1.0, 1.2) , (1.5, 2.0) , (0.0, -2.0) , (0.0, 0.5) , (4.0, 2.0). Nesse caso há
três circunferências de raios: 1.12, 2.01 e 3.162. Observações:
q
(a) Distância entre os pontos (a,b) e (c,d) é (a − c)2 + (b − d)2
(b) Dois pontos estão na mesma circunferência se estão à mesma distância
do centro.

7. Escreva um programa para ler vinte valores reais aleatórios, imprimir os


valores lidos e determinar o menor dos valores lidos e a posição em que
o mesmo foi digitado no conjunto de dados de entrada. Observe que o
conjunto pode ou não, a depender do momento, ter valores repetidos e que
o programa deve estar preparado para tratar esta situação adequadamente.

8. Escreva um programa para ler cinqüenta valores inteiros aleatórios, im-


primir os valores lidos e determinar o maior dos valores lidos.

9. Escreva um programa para ler um número inteiro k, e a seguir ler k números


inteiros, imprimir os valores lidos e determinar a média aritmética dos val-
ores ı́mpares e a média aritmética dos valores pares existentes entre os
valores lidos.

10. Escreva um programa para ler um valor inteiro k e calcular a média ar-
itmética de k valores reais lidos da unidade padrão de entrada. O programa
deve imprimir os valores lidos e a sua média aritmética.

11. Escreva um programa para ler um valor inteiro k e calcular a média ar-
itmética de k valores reais lidos da unidade padrão de entrada. O programa
deve imprimir o fatorial de cada número par positivo fornecido.

12. Escreva um programa para ler quatro valores reais, imprimir o maior dos
quatro valores e os valores lidos na seqüência em que foram fornecidos.

13. Escreva um programa para ler oito valores reais, imprimir os valores lidos
e determinar:

(a) a média dos números positivos;


(b) a média dos números negativos;

14
(c) a soma de todos os valores lidos.

14. Escreva um programa para ler cinqüenta valores inteiros aleatórios, im-
primir os valores lidos e determinar o maior dos valores lidos.

15. Escreva um programa para ler cinqüenta valores inteiros aleatórios, im-
primir os valores lidos e determinar o menor dos valores lidos e sua posição
no conjunto.

16. Escreva um programa para ler um número n e a seguir ler n valores inteiros,
imprimir os valores lidos e determinar o maior e o menor dos n valores.

17. Escreva um programa para ler n números inteiros, imprimir os números


lidos e determinar a diferença entre os dois maiores números lidos.

18. Escreva um programa para leitura de um grupo de 10 valores inteiros


aleatórios e impressão dos valores em ordem crescente.

19. Escreva um programa para leitura de um grupo de 10 valores inteiros


aleatórios e impressão dos valores em ordem crescente.

20. Escreva um programa para ler um grupo de 50 valores reais. O programa


deve imprimir o maior valor, o menor valor e os valores lidos, nesta ordem.

21. Escreva um programa para ler um grupo de 50 valores reais. O programa


deve imprimir os números pares.

22. Escreva um programa para ler um grupo de 50 valores reais. O programa


deve imprimir os números ı́mpares e seus fatoriais.

23. Escreva um programa para ler um grupo de 50 valores reais. O programa


deve imprimir os números primos e suas raı́zes quadradas.

24. Escreva um programa para ler um grupo de 40 valores reais, imprimir os


valores lidos e determinar o menor valor existente entre os 20 primeiros e o
maior valor existente entre os 20 últimos.

25. Escreva um programa que leia dois vetores A e B de 10 componentes inteiros


cada um, escreva os vetores lidos e em seguida substitua A e B pelos vetores
A + B e A - B, respectivamente, imprimindo-os novamente. O programa
deve utilizar apenas dois arrays e imprimir os valores calculados para A e
B.

26. Escreva um programa para gerar um calendário para um mês qualquer, lido
do teclado, de um ano localizado entre 1900 e 2200, inclusive. O programa
lê apenas o ano e o mês que o usuário deseja visualizar na tela e gera o
calendário armazenando-o em array de duas dimensões antes de exibi-lo.

15
27. Escreva um programa para ler dois vetores de 15 componentes inteiros cada
e determinar o conjunto união para os conjuntos lidos.

28. Escreva um programa para ler dois vetores de 15 componentes inteiros dis-
tintos cada e determinar o conjunto intersecção para os conjuntos lidos.

29. Escreva um programa em para ler dois vetores de 15 componentes inteiros


distintos cada e determinar o conjunto diferença para os conjuntos lidos.

30. Escreva um programa para ler um vetor com 20 componentes reais, imprimir
o vetor lido e determinar o maior e o menor componente do vetor e suas
respectivas posições de entrada.

31. Escreva um programa para ler um grupo de 20 valores reais, imprimir os


valores lidos e imprimir o grupo de valores em ordem numérica crescente.

32. Escreva um programa para ler um grupo de 100 valores inteiros, imprimir
os valores lidos e imprimir os valores pares em ordem numérica crescente.

33. Escreva um programa para ler uma matriz 10 x 10 de números reais, im-
primir a matriz lida e determinar a soma e a média aritmética dos compo-
nentes da matriz.

34. Escreva um programa para determinar o primeiro e o último nomes da


classificação alfabética de um grupo de vários nomes, sem ordenar o grupo
de nomes. Encerrar o processamento quando encontrar a palavra acabou.

35. Escreva um programa para ler um vetor com 100 componentes reais e trans-
ferir estes componentes para uma matriz 10 x 10 onde a i-ésima linha é for-
mada pelos elementos cujas posições no conjunto terminam por i. Imprimir
o vetor e a matriz.

36. Escreva um programa para ler uma matriz 10 x 10 de números reais, im-
primir a matriz como foi lida e também com os componentes das colunas
classificados em ordem decrescente para cada coluna isoladamente.

37. Escreva um programa para ler uma matriz 10 x 10 de componentes reais


e transferir estes componentes, na seqüência das linhas, para um vetor de
100 componentes. O programa deve imprimir a matriz lida e o vetor obtido
com a transferência.

38. Escreva um programa para ler uma matriz de ordem 8 de números reais,
imprimir a matriz lida e imprimir a matriz com todos os componentes clas-
sificados, na seqüência das linhas, em ordem crescente.

16
39. Escreva um programa para ler uma matriz de ordem 8 de números reais,
imprimir a matriz lida e imprimir a matriz com os componentes de cada
uma das linhas classificados em ordem crescente.

40. Escreva um programa para ler uma matriz 10 x 10 de números inteiros e


determinar o maior componente em cada coluna da matriz.

41. Escreva um programa para ler uma matriz 10 x 10 de números inteiros e


determinar o menor componente em cada linha da matriz.

42. Escreva um programa para ler uma matriz 10 x 10 de números inteiros e


determinar o menor componente da diagonal principal.

43. Escreva um programa para ler uma matriz 6 x 6 de números inteiros e


imprimir os componentes da diagonal principal em ordem crescente.

44. Escreva um programa para ler uma matriz 6 x 6 de números inteiros e


imprimir os componentes da diagonal secundária em ordem crescente.

45. Escreva um programa para ler uma matriz 6 x 6 de números inteiros e


imprimir os componentes da diagonal principal em ordem decrescente.

46. Escreva um programa para ler uma matriz 6 x 6 de números inteiros e


imprimir os componentes da diagonal secundária em ordem decrescente.

47. Escreva um programa para ler uma matriz 10 x 10 de números inteiros e


determinar o maior componente da diagonal principal.

48. Escreva um programa para ler uma matriz 10 x 10 de números inteiros e


determinar o segundo menor componente da diagonal principal.

49. Escreva um programa para ler duas matrizes de ordem 4 de números in-
teiros, imprimir as matrizes lidas e determinar a matriz soma correspon-
dente.

50. Escreva um programa para ler duas matrizes de ordem 4 de números in-
teiros, imprimir as matrizes lidas e determinar a matriz produto da primeira
pela segunda.

51. Escreva um programa para ler uma matriz de ordem 3 de números inteiros,
imprimir a matriz lida e determinar a matriz transposta correspondente.

52. Escreva um programa para ler uma matriz de ordem 6 de números inteiros,
imprimir a matriz lida e determinar a matriz transposta correspondente.
Restrição: o programa deve utilizar uma única área para armazenar a ma-
triz lida e sua transposta.

17
53. Escreva um programa para gerar e imprimir uma matriz de ordem 15 onde
todos os elementos acima da diagonal principal são iguais a 1 e os demais
são iguais a zero.

54. Escreva um programa para gerar e imprimir uma matriz de ordem 15 onde
todos os elementos acima da diagonal secundária são iguais a 1 e os demais
são iguais a zero.

55. Escreva um programa para ler uma matriz de ordem 3, de números reais,
imprimir a matriz lida e calcular e imprimir seu determinante.

56. Escreva um programa para determinar aquele que seria o penúltimo nome
da classificação alfabética num grupo de vários nomes e sua posição relativa
de entrada.

57. Escreva um programa para ler um número real com até 10 dı́gitos (duas
casas decimais) representando uma quantia em reais (R$) e escrever por
extenso esta quantia.

58. Escreva um programa para ler o nome completo de várias pessoas. O pro-
grama deve dividir os nomes da lista em grupos, cada grupo correspondendo
a um sobrenome existente na lista. Lembre-se que

59. Escreva um programa para ajudar o serviço de informações a localizar os


possı́veis suspeitos de participarem de um determinado grupo. Segundo
informações recebidas, o grupo realizou duas festas para cada uma das
quais convidou 100 pessoas. Pretendia, com isso, cooptar estas pessoas
para que passassem a integrar o grupo. O programa deve ler as relações
de até 100 nomes de pessoas que compareceram às duas festas. A segunda
relação começa com ’FESTA 2’ e termina após a leitura dos 100 nomes ou
com a expressão ’fim de festa’. O programa deve imprimir:

(a) uma listagem das pessoas suspeitas (compareceram a pelo menos uma
das festas)
(b) uma listagem das pessoas menos suspeitas (compareceram a apenas
uma das festas)
(c) uma listagem das pessoas muito suspeitas (compareceram a ambas as
festas).

18
Funções e Procedures
1. Considerando um vetor de 15 componentes inteiros, escreva procedures (ou
funções quando for o caso2 ) para:
• imprimir o conteúdo das posições pares do vetor
• atribuir a cada componente o valor da sua posição no vetor
• atribuir a cada componente o valor do componente seguinte e o valor
do primeiro componente ao último componente.
2. Escreva um programa para
• ler 10 nomes de pessoas (aleatórios)
• imprimir os nomes lidos
• imprimir os nomes em ordem alfabética inversa.
A seguir, o programa deve solicitar ao usuário que forneça nomes a partir
do teclado e verificar se cada um dos nomes informados se encontra ou
não entre os 10 nomes. O processamento deve ser encerrado quando for
digitado o seu nome, informando se o mesmo foi ou não encontrado na lista
dos nomes. Seu programa deve usar subprogramas sempre que necessário e
deve utilizar um algoritmo eficiente para a busca do nome na lista.
3. Escrever um programa para determinar todos os números primos menores
que um dado n (limitado a 10.000), utilizando o algoritmo do Crivo de
Eratóstenes: para encontrar todos os primos menores que n, basta eliminar
os múltiplos dos números menores que a raiz quadrada de n (não esquecendo
o número 1).
4. Um número a é dito permutação de um número b se os dı́gitos de
a formam uma permutação dos dı́gitos de b. Exemplo: 5412434 é uma
permutação de 4321445, mas não é uma permutação de 4312455. Obs.:
Considere que o dı́gito 0 (zero) não aparece nos números. Com base destas
informações:
(a) Faça uma função/procedure contadı́gitos que dados um inteiro n e um
inteiro d, 0 < d ≤ 9, devolve quantas vezes o dı́gito d aparece em n.
(b) Usando a função/procedure do item anterior, faça um programa que
lê dois inteiros positivos a e b e responda se a é permutação de b.
5. Construa uma função/procedure encaixa que receba como parâmetros dois
inteiros positivos a e b. Esta função/procedure deve verificar se b corre-
sponde aos últimos dı́gitos de a. Ex.:
2
Os conceitos de função e procedure na linguagem de programação PASCAL são parecidos,
porém diferentes.

19
a b
567890 890 encaixa
1243 1243 encaixa
2457 245 não encaixa
457 2457 não encaixa

6. Usando a função/procedure da questão anterior, faça um programa que lê


dois inteiros positivos a e b e verifica se o menor deles é segmento do outro.
Exemplo:

a b
567890 678 b é segmento de a
1243 2212435 a é segmento de b
235 236 um não é segmento do outro

7. Uma seqüência de n números inteiros não nulos é dita piramidal m-


alternante se é constituı́da por m segmentos: o primeiro com um ele-
mento, o segundo com dois elementos e assim por diante até o m-ésimo,
com m elementos. Além disso, os elementos de um mesmo segmento devem
ser todos pares ou todos ı́mpares e para cada segmento, se seus elementos
forem todos pares (ı́mpares), os elementos do segmento seguinte devem ser
todos ı́mpares (pares). Por exemplo, a seqüência com n = 10 elementos:
12 3 7 2 10 4 5 13 5 11 é piramidal 4-alternante. A seqüência com n =
3 elementos: 7 10 2 é piramidal 2-alternante. A seqüência com n = 8
elementos: 1 12 4 3 13 5 12 6 não é piramidal alternante pois o último
segmento não tem tamanho 4. Com base nestas informaações, escreva uma
função/procedure bloco que recebe como parâmetro um inteiro n e lê n
inteiros do teclado, devolvendo um dos seguintes valores:

• 0, se os n números lidos forem pares;


• 1, se os n números lidos forem ı́mpares;
• -1, se entre os n números lidos há números com paridades diferentes.

8. Usando a função/procedure da questão anterior, escreva um programa que,


dados um inteiro n ≥ 1 e uma seqüência de n números inteiros, verifica se
ela é piramidal m-alternante. O programa deve imprimir o valor de m
ou dar a resposta não.

9. Faça uma função/procedure arctan que recebe o número real x ∈ [0,1] e


devolve uma aproximação do arco tangente de x (em radianos) através da
3 5 7
série incluindo todos os termos da série arctan(x) = x - x3 + x5 - x7 + ...
k
incluindo todos os termos da série até | xk < 0,0001 |.

20
10. Faça uma função/procedure angulo que recebe um ponto de coordenadas
cartesianas reais (x,y), com x ≥ 0 e y ≥ 0 e devolve o ângulo formado pelo
vetor (x,y) e o eixo horizontal. Exemplos: observe a figura abaixo e verifique
que os ângulos correspondentes aos pontos marcados é aproximadamente
(0,1) - 90 graus, (2,2) - 45 graus, (1,4) - 75 graus, (5,1) - 11 graus.
Note que a função/procedure só calcula o arco tangente de números entre
0 e 1, e o valor devolvido é o ângulo em radianos (π = 3.14 radianos =
180 graus). Calcule também ³o ´valor do ângulo pedido ³(em´ graus), use a
x π x
seguinte fórmula: α = arctan y caso y < x, 2 - arctan y caso contrário.

11. Faça um programa que, dados n pontos do primeiro quadrante (x ≥ 0 e y


≥ 0) através de suas coordenadas cartesianas, determina o ponto que forma
o menor ângulo com o eixo horizontal. Use a função/procedure da questão
anterior.
12. Escreva uma função/procedure que recebe um número inteiro n > 0 e de-
volve o número de dı́gitos de n e o primeiro dı́gito de n.
13. Escreva um programa que leia uma seqüência de n inteiros positivos e im-
prime o número de dı́gitos e o primeiro dı́gito de cada um deles.

Estruturas de dados: listas, pilhas, filas, árvores


1. Escreva um programa que use uma pilha como variável auxiliar para inverter
a ordem dos elementos de uma certa lista.
2. Escreva um programa que leia uma série de números inteiros aleatórios
e armazene-os em uma lista encadeada. A lista encontra-se inicialmente
vazia. O programa encerra o processamento ao ler, um após o outro, dois
valores iguais. Valores iguais são permitidos desde que não sejam digitados
um logo após o outro. Imprima os valores na ordem crescente e em ordem
decrescente (use uma pilha para inverter a ordem dos elementos).

21
3. Escreva um programa para ler dois números reais longos não sinalizados,
ambos terminados por ] e determinar sua soma (o resultado deve estar
disponı́vel para uso, não apenas para ser impresso). Não conhecemos a
quantidade de dı́gitos de nenhum dos números lidos (o limite é a memória
disponı́vel em sua máquina).

4. Escreva um programa que manipule números inteiros muito longos, nem


sempre positivos, sem impor um limite de tamanho. O programa deve ler
dois números inteiros, armazenar cada número numa lista e determinar a
soma dos dois números. Imprima os três números.

5. Escreva um programa que manipule números inteiros muito longos, nem


sempre positivos, sem impor um limite de tamanho. O programa deve ler
dois números inteiros, armazenar cada número numa lista e determinar a
diferença dos dois números. Imprima os três números.

6. Escreva uma rotina que acrescente um elemento ao final de uma lista en-
cadeada.

7. Escreva uma rotina que concatene duas listas encadeadas.

8. Escreva uma rotina que libere todos os nodos em uma lista;

9. Escreva uma rotina que inverta uma lista, de forma que o último elemento
se torna o primeiro, e etc.;

10. Escreva uma rotina que remova o último elemento de uma lista.

11. Escreva uma rotina que remova o n-ésimo elemento de uma lista.

12. Escreva uma rotina que remova o penúltimo elemento de uma lista.

13. Escreva uma rotina que combine duas listas ordenadas em uma única lista
ordenada.

14. Escreva uma rotina que forme uma lista contendo a união de duas listas.

15. Escreva uma rotina que forme uma lista contendo a intersecção de duas
listas.

16. Escreva uma rotina que insira um elemento depois do n-ésimo elemento de
uma lista.

17. Escreva uma rotina que remova cada segundo elemento de uma lista de
listas de inteiros.

18. Escreva uma rotina que coloque os elementos de uma lista em ordem cres-
cente.

22
19. Escreva uma rotina que retorne a soma dos inteiros de uma certa lista.

20. Escreva uma rotina que retorne o número de elementos em uma lista.

21. Escreva uma rotina que mova um certo nodo k n posições para a frente em
uma lista.

22. Escreva uma rotina que faça uma cópia de uma lista.

23. Escreva uma rotina que troque o n-ésimo elemento pelo m-ésimo elemento
de uma lista encadeada.

24. Escreva uma rotina que troque o n-ésimo elemento pelo m-ésimo elemento
de uma lista duplamente encadeada.

Recursividade
1. Dado um vetor de inteiros e um número qualquer informados pelo usuário.
Escreva um programa para retornar a posição deste número no vetor. O
programa deve retornar -1 caso não encontre o elemento.

2. Dado um vetor de inteiros e um número qualquer informados pelo usuário.


Escreva um programa para retornar a posição da última ocorrência deste
número no vetor. O programa deve retornar -1 caso não encontre o ele-
mento.

3. Faça um programa para o “jogo de adivinhar um número”. O computa-


dor deve sortear um número entre 0 e 100 e pedir para o usuário tentar
adivinhar este número. O usuário vai dizer o seu palpite, e o computador
deve responder, se ele é maior ou menor que o número que ele sorteou.
O programa termina somente quando o usuário acertar exatamente qual o
número que o computador tinha sorteado, escrevendo uma mensagem de
felicitações para o nosso usuário e indicando o número total de tentativas
feitas. Dica: para gerar um número qualquer entre 0 e 100, use um co-
mando como o deste exemplo indicado logo a seguir.
Exemplo: numero sorteado := random (100); { 0 ≤ numero sorteado <
100 } 3

4. Torres de Hannoi com três discos!!!!!

5. Escreva um programa que leia do teclado um número inteiro representando


a quantidade de discos em uma torre de Hannoi. O programa deve, na
seqüência, informar quais os movimentos que devem ser efetuados com os
3
Exemplo em código Pascal.

23
discos para movê-los da torre A para a torre C, utilizando a torre B como
auxiliar, movendo um disco por vez.

6. Escreva um programa que leia do teclado um número inteiro representando


a quantidade de discos em uma torre de Hannoi. O programa deve, na
seqüência, informar quais os movimentos que devem ser efetuados com os
discos para movê-los da torre A para a torre C, utilizando a torre B como
auxiliar, movendo um disco por vez. Ao final da execução o programa
deve informar qual o tempo gasto para a execução (descontado o tempo de
entrada de dados).

7. Série de Fibonacci!!!!!!!

8. Escreva uma rotina que acrescente um elemento ao final de uma lista en-
cadeada.

9. Escreva uma rotina que concatene duas listas encadeadas.

10. Escreva uma rotina que libere todos os nodos em uma lista;

11. Escreva uma rotina que inverta uma lista, de forma que o último elemento
se torna o primeiro, e etc.;

12. Escreva uma rotina que remova o último elemento de uma lista.

13. Escreva uma rotina que remova o n-ésimo elemento de uma lista.

14. Escreva uma rotina que remova o penúltimo elemento de uma lista.

15. Escreva uma rotina que combine duas listas ordenadas em uma única lista
ordenada.

16. Escreva uma rotina que forme uma lista contendo a união de duas listas.

17. Escreva uma rotina que forme uma lista contendo a intersecção de duas
listas.

18. Escreva uma rotina que insira um elemento depois do n-ésimo elemento de
uma lista.

19. Escreva uma rotina que remova cada segundo elemento de uma lista de
listas de inteiros.

20. Escreva uma rotina que coloque os elementos de uma lista em ordem cres-
cente.

21. Escreva uma rotina que retorne a soma dos inteiros de uma certa lista.

24
22. Escreva uma rotina que retorne o número de elementos em uma lista.

23. Escreva uma rotina que mova um certo nodo k n posições para a frente em
uma lista.

24. Escreva uma rotina que faça uma cópia de uma lista.

25. Escreva uma rotina que troque o n-ésimo elemento pelo m-ésimo elemento
de uma lista encadeada.

26. Escreva uma rotina que troque o n-ésimo elemento pelo m-ésimo elemento
de uma lista duplamente encadeada.

Registros (Structures)
1. Escreva um programa para ler vários grupos de 5 valores reais cada e calcu-
lar a média ponderada destes valores, sabendo-se que o primeiro valor tem
peso 4, o segundo e o terceiro têm peso 2 e os dois últimos têm peso 1. O
processamento encerra quando for lido um grupo com todos os valores neg-
ativos, sem considerar este grupo de valores nos cálculos. Para cada grupo
de valores, o programa imprime os valores lidos e a média ponderada.

2. Escreva um programa para ler os coeficientes de várias equações do se-


gundo grau e determinar, para cada uma das equações, suas raı́zes reais,
caso existam. Quando a equação não possuir raı́zes reais, o programa deve
informar esta ocorrência. O processamento deve ser encerrado quando o
primeiro valor lido, de uma determinada equação, for nulo, sem considerar
este grupo de valores nos cálculos.

25

Anda mungkin juga menyukai