Buscar

BCC701_20_2_Caderno_de_Exercicios

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 55 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 55 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 55 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

PROGRAMAÇÃO DE COMPUTADORES I – BCC701
CADERNO DE EXERCÍCIOS
2020/2
ELABORADO PELA COMISSÃO DE UNIFICAÇÃO DA DISCIPLINA BCC701,
COM A COLABORAÇÃO DE PROFESSORES DO DECOM
http://www.decom.ufop.br/bcc701/
DECOM – DEPARTAMENTO DE COMPUTAÇÃO
ICEB – INSTITUTO DE CIÊNCIAS EXATAS E BIOLÓGICAS
UFOP – UNIVERSIDADE FEDERAL DE OURO PRETO
http://www.decom.ufop.br/bcc701/
http://www.decom.ufop.br/
http://www.iceb.ufop.br/
https://www.ufop.br/
Sumário
1 Introdução 4
3 Variáveis, Expressões, Entrada/Saída 5
Questão 3.1. (2013-2) . . . . . . . . . . . . . . . . . . . . . . 5
Questão 3.2. (2013-2) . . . . . . . . . . . . . . . . . . . . . . 5
Questão 3.3. (2013-2) . . . . . . . . . . . . . . . . . . . . . . 6
Questão 3.4. (2015-1) . . . . . . . . . . . . . . . . . . . . . . 6
Questão 3.5. (2015-2) . . . . . . . . . . . . . . . . . . . . . . 7
Questão 3.6. (2016-1) . . . . . . . . . . . . . . . . . . . . . . 7
Questão 3.7. (2014-1) . . . . . . . . . . . . . . . . . . . . . . 8
Questão 3.8. (2016-2) . . . . . . . . . . . . . . . . . . . . . . 8
Questão 3.9. (2013-1) . . . . . . . . . . . . . . . . . . . . . . 9
Questão 3.10. (2014-2) . . . . . . . . . . . . . . . . . . . . . . 10
Questão 3.11. (2017-2) . . . . . . . . . . . . . . . . . . . . . . 11
4 Estruturas de Decisão 12
Questão 4.1. (2019-2) . . . . . . . . . . . . . . . . . . . . . . 12
Questão 4.2. (2019-2) . . . . . . . . . . . . . . . . . . . . . . 13
Questão 4.3. (2017-2) . . . . . . . . . . . . . . . . . . . . . . 13
Questão 4.4. (2018-1) . . . . . . . . . . . . . . . . . . . . . . 14
Questão 4.5. (2018-1) . . . . . . . . . . . . . . . . . . . . . . 15
Questão 4.6. (2018-2) . . . . . . . . . . . . . . . . . . . . . . 16
Questão 4.7. (2019-1) . . . . . . . . . . . . . . . . . . . . . . 16
Questão 4.8. (2017-2) . . . . . . . . . . . . . . . . . . . . . . 17
Questão 4.9. (2018-2) . . . . . . . . . . . . . . . . . . . . . . 18
Questão 4.10. (2019-1) . . . . . . . . . . . . . . . . . . . . . . 19
Questão 4.11. (2019-2) . . . . . . . . . . . . . . . . . . . . . . 20
Questão 4.12. (2018-2) . . . . . . . . . . . . . . . . . . . . . . 20
Questão 4.13. (2017-2) . . . . . . . . . . . . . . . . . . . . . . 21
5 Estrutura de Repetição 23
1
Questão 5.1. (2018-2) . . . . . . . . . . . . . . . . . . . . . . 23
Questão 5.2. (2018-1) . . . . . . . . . . . . . . . . . . . . . . 24
Questão 5.3. (2019-2) . . . . . . . . . . . . . . . . . . . . . . 25
Questão 5.4. (2018-2) . . . . . . . . . . . . . . . . . . . . . . 25
Questão 5.5. (2019-2) . . . . . . . . . . . . . . . . . . . . . . 27
Questão 5.6. (2013-2) . . . . . . . . . . . . . . . . . . . . . . 28
Questão 5.7. (2013-2) . . . . . . . . . . . . . . . . . . . . . . 28
Questão 5.8. (2019-2) . . . . . . . . . . . . . . . . . . . . . . 29
Questão 5.9. (2019-1) . . . . . . . . . . . . . . . . . . . . . . 30
Questão 5.10. (2018-2) . . . . . . . . . . . . . . . . . . . . . . 30
Questão 5.11. (2019-1) . . . . . . . . . . . . . . . . . . . . . . 31
Questão 5.12. (2018-1) . . . . . . . . . . . . . . . . . . . . . . 32
Questão 5.13. (2017-1) . . . . . . . . . . . . . . . . . . . . . . 33
Questão 5.14. (2017-2) . . . . . . . . . . . . . . . . . . . . . . 34
Questão 5.15. (2016-2) . . . . . . . . . . . . . . . . . . . . . . 36
Questão 5.16. (2014-2) . . . . . . . . . . . . . . . . . . . . . . 36
Questão 5.17. (2016-1) . . . . . . . . . . . . . . . . . . . . . . 37
6 Funções 39
Questão 6.1. (2013-2) . . . . . . . . . . . . . . . . . . . . . . 39
Questão 6.2. (2019-1) . . . . . . . . . . . . . . . . . . . . . . 40
Questão 6.3. (2014-1) . . . . . . . . . . . . . . . . . . . . . . 41
Questão 6.4. (2015-2) . . . . . . . . . . . . . . . . . . . . . . 41
Questão 6.5. (2016-2) . . . . . . . . . . . . . . . . . . . . . . 42
Questão 6.6. (2018-1) . . . . . . . . . . . . . . . . . . . . . . 43
Questão 6.7. (2016-1) . . . . . . . . . . . . . . . . . . . . . . 43
7 Estruturas Homogêneas 45
2
Questão 7.1. (adaptado de 2014-1). . . . . . . . . . . . . . . . . . 45
Questão 7.2. (adaptado de 2013-2). . . . . . . . . . . . . . . . . . 46
Questão 7.3. (adaptado de 2017-1). . . . . . . . . . . . . . . . . . 46
Questão 7.4. (2013-2) . . . . . . . . . . . . . . . . . . . . . . 47
Questão 7.5. (2015-2) . . . . . . . . . . . . . . . . . . . . . . 48
Questão 7.6. (2017-2) . . . . . . . . . . . . . . . . . . . . . . 48
Questão 7.7. (2017-2) . . . . . . . . . . . . . . . . . . . . . . 49
Questão 7.8. (2013-2) . . . . . . . . . . . . . . . . . . . . . . 49
Questão 7.9. (2014-1) . . . . . . . . . . . . . . . . . . . . . . 50
Questão 7.10. (2014-2) . . . . . . . . . . . . . . . . . . . . . . 50
Questão 7.11. (2016-1) . . . . . . . . . . . . . . . . . . . . . . 51
Questão 7.12. (2013-2) . . . . . . . . . . . . . . . . . . . . . . 52
Questão 7.13. (2013-2) . . . . . . . . . . . . . . . . . . . . . . 52
Questão 7.14. (2016-1) . . . . . . . . . . . . . . . . . . . . . . 53
3
1MÓDULO
Introdução
O presente material foi elaborado pela Comissão de Unificação da disciplina de Programação de
Computadores I (BCC701) contendo uma seleção de exercícios de avaliações aplicadas em semestres
anteriores. O conjunto de exercícios não expressam o grau de dificuldade das avaliações aplicadas,
pois elas não estão inseridas na sua íntegra. Professores podem recomendar a resolução de exercícios
específicos para fixação de conteúdo e preparação para atividades avaliativas. Aos alunos, recomenda-
se a prática e estudos de programação a partir da resolução dos exercícios contidos neste material de
forma complementar aos exercícios propostos pelo professor e suas recomendações.
Todos os exercícios seguem um padrão, no enunciado é definido o problema a ser resolvido em um
programa de computador usando a linguagem Python. São sempre definidos os dados de entrada
e saída dos programas na parte textual do enunciado e em exemplos de execução, que devem ser
respeitados de forma exata. Quando não forem citadas regras de validação de dados no enunciado
textual ou nos exemplos, considere que os dados fornecidos na entrada serão sempre válidos, ou seja,
não realize nenhuma validação além daquelas que lhe forem apresentadas.
4
3MÓDULO
Variáveis, Expressões, Entrada/Saída
Questão 3.1 (2013-2)
O n-ésimo termo de uma P. A. (Progressão Aritmética) é determinado pela fórmula:
an = a1 + n− 1 ∗ r
onde r é a razão e o primeiro termo é a1. Escreva um programa que: leia o valor do primeiro termo
(inteiro), a razão de uma progressão aritmética (inteiro), o termo n (inteiro) que o usuário deseja e
determine o n-ésimo termo.
Exemplo 1:
Entre com o valor de a1: 2
Entre com o valor da razão: 3
Qual o n−ésimo termo a ser determinado: 4
A4 = 11
Questão 3.2 (2013-2)
Suponha que uma pessoa fez um investimento de um capital de valor C, a uma taxa de juros de i%
ao mês. O montante M obtido ao final de n meses é calculado como:
M = C ∗ (1 + i)n
Escreva um programa que leia a taxa de juros i (real) o valor investido C (real), e o período do
investimento n (inteiro), e imprima o montante M obtido (com formatação em duas casas decimais).
5
Exemplo 1:
Informe a taxa de rendimento mensal: 0.02
Informe o capital investido em R$: 200.00
Informe o período do investimento (meses): 12
Capital atual: R$ 253.65
Questão 3.3 (2013-2)
A Dilatação Linear aplica-se apenas para os corpos em estado sólido, e consiste na variação conside-
rável de apenas uma dimensão. Isso ocorre, por exemplo, em barras, cabos e fios.
Considere uma barra homogênea, de comprimento L0 a uma temperatura inicial T0. Quando esta
temperatura é aumentada até uma temperatura T > T0, observa-se que a barra passa a ter um com-
primento L > L0, conforme ilustrado na Figura 1.
Figura 1: Representação da Dilatação Linear.
A dilatação depende de propriedades do material com que a barra é feita, definidas pelo seu coefici-
ente de dilatação linear α, e é expressa pela equação:
∆L = L0 ∗ α ∗∆T
Escreva um programa que tenha como entrada o valor do comprimentoinicial L0 e o valor da
variação de comprimento (∆L). O programa calcula e imprime o valor da variação da temperatura
(∆T ) que ocasionou a dilatação linear (com formatação em cinco casas decimais). Para os cálculos
considere que a barra metálica é feita de alumínio, sendo α = 22 ∗ 10−6.
Exemplo 1:
Qual o comprimento inicial da barra? 2
Qual o valor da variação de comprimento? 0.005
Variação da temperatura: 113.63636
Questão 3.4 (2015-1)
Pode-se calcular a área e o perímetro de um triângulo, dados os comprimentos dos seus lados, s1,
s2 e s3, de acordo com a seguinte fórmula:
area =
√
s ∗ (s− s1) ∗ (s− s2) ∗ (s− s3)
onde:
• s = s1+s2+s32
• perímetro = s1 + s2 + s3
6
Escreva um programa que leia os comprimentos dos lados de um triângulo, s1, s2 e s3, e imprima o
perímetro e a área do triângulo, conforme o exemplo de execução abaixo.
Exemplo 1:
Digite o lado 1 do triângulo (m): 10
Digite o lado 2 do triângulo (m): 10
Digite o lado 3 do triângulo (m): 8
Perímetro do triângulo = 28 m
Área do triângulo = 36.6606 m^2
Questão 3.5 (2015-2)
O custo c (R$) de combustível de um automóvel, em uma viagem em que o carro anda a uma
velocidade média v (km/h) durante um período de tempo t (h) é dado pela fórmula a seguir, onde
r é o rendimento médio do carro (km/litro), para um determinado combustível, e p é o preço desse
combustível.
c =
v ∗ t
r
∗ p
Escreva um programa para calcular o custo de combustível de um carro em uma viagem, tanto
no caso em que o combustível é gasolina, como no caso em que o combustível é álcool. Para isso, o
programa deve ler os seguintes dados: a velocidade média do carro (v, valor inteiro), o tempo previsto
para a viagem (t, valor inteiro), o rendimento do carro usando gasolina (rg, valor real), o preço do
litro de gasolina (pg, valor real) e o preço do litro de álcool (pa, valor real). O rendimento do carro
utilizando álcool deve ser calculado como 0.7 vezes o rendimento do carro utilizando gasolina.
Exemplo 1:
Velocidade média (km/h): 80
Tempo de percurso (h): 7
Rendimento com gasolina (km/litro): 10
Preço do litro de gasolina (R$): 3.49
Preço do litro de álcool (R$): 2.99
Custo usando gasolina = R$ 195.44
Custo usando álcool = R$ 239.20
Questão 3.6 (2016-1)
A relação entre pressão, volume e temperatura de um gás ideal é dada pela seguinte equação:
pV = nRT
onde p é a pressão do gás (em atmosferas), V é o volume do gás (em litros), n é o número de moles
do gás, R é a constante universal do gás ideal, igual a 0,082, e T é a sua temperatura absoluta (em
Kelvin). Escreva um programa que leia a pressão (valor real) e o volume (valor real) de 1 mol de gás
ideal e calcule e imprima a sua temperatura em Celsius (Tc, com formatação em duas casas decimais),
sabendo que Tc = T − 273.
7
Exemplo 1:
Pressão do gás (atm): 0.05
Volume do gás (l): 529.72
Temperatura do gás = 50.00 Celsius
Questão 3.7 (2014-1)
O comportamento dos gases ideais é regido pela equação de Clapeyron:
pV = nRT
onde:
• p = pressão (em atm)
• V = volume (em litros)
• n = número de mols
• R = 0,082 atm.L/(mol.K) (constante universal dos gases)
• T = temperatura (Kelvin)
Escreva um programa para determinar o volume ocupado por 3 mols de um gás (com formatação
em quatro casas decimais), considerando que o usuário informará os seguintes dados: pressão em
atm (inteiro) e temperatura em Celsius (inteiro). A conversão da temperatura de Celsius para Kelvin
é feita pela expressão: K = C + 273, 15.
Exemplo 1:
Digite a pressão (em atm): 2
Digite a temperatura (em Celsius): 50
3 mols de um gás a 50 Celsius e a 2 atm, ocupam 39.7474 litros
Exemplo 2:
Digite a pressão (em atm): 1
Digite a temperatura (em Celsius): 0
3 mols de um gás a 0 Celsius e a 1 atm, ocupam 67.1949 litros
Questão 3.8 (2016-2)
Uma alavanca é um objeto rígido, que é usado com um ponto fixo apropriado (fulcro), para multi-
plicar a força mecânica que pode ser aplicada a um outro objeto (resistência). O princípio de funcio-
namento das alavancas, descrito pela equação abaixo, foi descoberto por Arquimedes no século III a.
C., representado na Figura 2.
F1 ∗D1 = F2 ∗D2
Considerando que a força exercida por um objeto de massa m é F = m ∗ g, onde g é a aceleração
gravitacional, a equação acima pode ser reescrita como:
m1 ∗D1 = m2 ∗D2
8
Figura 2: Aproximação para a órbita da Lua ao redor da Terra.
Escreva um programa que leia os seguintes valores reais: o comprimento total da alavanca (D), a
distância (D1) do objeto (resistência) ao fulcro e a massa deste objeto, em kg (m1). O programa
deve calcular e imprimir a massa (m2) requerida para equilibrar a alavanca (com precisão de 2 casas
decimais).
Exemplo 1:
Comprimento da alavanca (m): 10
Distância da resistência ao fulcro (m): 2
Massa da resistência (kg): 10000
Massa de equilíbrio = 2500.00 kg
Questão 3.9 (2013-1)
A Figura 3 ilustra uma aproximação para a órbita da Lua ao redor da Terra, supondo que ela seja
circular no sentido anti-horário.
Figura 3: Aproximação para a órbita da Lua ao redor da Terra.
A Lua completa uma volta ao redor da Terra em 27 dias e a distância entre a Terra e a Lua é d =
400000 km. Supondo que no instante, t = 0 dia, a Lua está na posição cujas coordenadas cartesianas
são x0 = d e y0 = 0 km, as coordenadas x e y da posição da Lua depois de decorrido um intervalo de
tempo de t dias são dadas pelas seguintes equações:
x = d ∗ cos(2π ∗ t/27)km
x = d ∗ sen(2π ∗ t/27)km
9
Faça um programa que leia o valor de um intervalo de tempo t, em dias (inteiro), e calcule as
coordenadas x e y, em km, da posição da Lua depois de decorrido esse tempo. O programa deve
imprimir as coordenadas calculadas.
Exemplo 1:
Tempo (dias): 10
Posição(x, y) = (−274497, 290949)
Questão 3.10 (2014-2)
Considere o circuito em série ilustrado na Figura 4
Figura 4: Circuito elétrico em série.
O circuito é composto por quatro resistências (em ohm - Ω) e uma fonte de tensão (em volt V). Três
resistências possuem valores fixos: R1 = 6Ω, R2 = 8Ω e R3 = 10Ω.
A queda de tensão em cada resistor é dada pela fórmula:
Vi =
Ri
Req
∗ V
A potência dissipada (em watts W) em cada resistor é dada pela fórmula:
Pi =
Ri
Req
∗ V 2
onde, i = 1, 2, 3, ou 4; e Req é a resistência equivalente do circuito (Req = R1 +R2 +R3 +R4).
Escreva um programa que execute o seguinte algoritmo:
1. Definir por atribuição as resistências R1, R2 e R3.
2. Ler pelo teclado os valores de tensão e resistência R4;
3. Calcular o valor da Req;
4. Calcular o valor da queda de tensão no resistor R4;
5. Calcular a potência dissipada no resistor R4.
6. Imprimir os resultados conforme o exemplo de execução abaixo (V4 e P4 devem ser impressos
com formatação em quatro casas decimais).
Exemplo 1:
Digite o valor tensão (V): 12
Digite o valor da resistência R4 (ohms): 4
V4 = 1.7143 V
P4 = 20.5714 W
10
Questão 3.11 (2017-2)
O cilindro, como todo sólido geométrico, possui um volume que determina a sua capacidade. Todo
cilindro possui uma base no formato de circunferência de raio r e altura h. Seu volume é dado pela
multiplicação entre a área da base (A) e a medida da altura. Observe:
• Área da base circular: A = π ∗ r2
• Volume: V = A ∗ h, ou seja, V = π ∗ r2h
Esse tipo de sólido geométrico é muito utilizado no cotidiano como reservatório de substâncias lí-
quidas e gasosas. Assim como diversas outras empresas, a Transp Brasil, uma empresa de transporte
de produtos alimentícios utiliza-se deste tipo de tanque no formato cilíndrico para o armazenamento
de combustível utilizado em seus caminhões. A Transp Brasil, ainda iniciante no mercado de trans-
porte de produtos alimentícios, gostaria de realizar uma melhor previsão de quantos caminhões seria
possível abastecer com o combustível armazenado em seus tanques de armazenamento.
Desenvolva um programa para a Transp Brasil que leia o raio e altura do tanque de armazenamento
de combustível (valores inteiros) e informe o volume do reservatório (valor real com precisão de
duas casas decimais) e quantos tanques de combustível de caminhõespoderiam ser abastecidos com
a quantidade de combustível armazenado no reservatório. Desta forma, este programa também deve
solicitar ao usuário a capacidade (em metros cúbicos) dos tanques dos caminhões (um valor real).
Exemplo 1:
Digite o raio do reservatório de combustível: 4
Digite a altura do reservatório de combustível: 12
Digite a capacidade (m3) do tanque dos caminhões: 3.8151
O volume do reservatório é 603.19 m3.
158 caminhões poderiam ser abastecidos com este reservatório.
Exemplo 2:
Digite o raio do reservatório de combustível: 4
Digite a altura do reservatório de combustível: 12
Digite a capacidade (m3) do tanque dos caminhões: 2.314
O volume do reservatório é 603.19 m3.
260 caminhões poderão ser abastecidos com este reservatório.
11
4
MÓDULO
Estruturas de Decisão
Questão 4.1 (2019-2)
Uma loja de cosméticos aplica uma regra para determinar o valor final de uma compra, de acordo
com o número de parcelas escolhido pelo seu cliente, conforme a tabela a seguir:
Número de Parcelas Cálculo do valor final da compra
1 Desconto de 10% sobre o valor da compra
2 O próprio valor da compra
3 O valor da compra acrescido de 5%
4 O valor da compra acrescido de 8%
Implemente um programa que receba como entradas o valor da compra (real) e o número de par-
celas (inteiro) e, em seguida, calcule e imprima o valor final da compra e o valor de cada parcela.
Observe que as saídas devem estar formatadas para duas casas decimais.
Exemplo 1:
Valor da compra (R$): 100
Número de parcelas: 4
Valor final da compra: R$ 108.00
Parcelas: 4 x R$ 27.00
Exemplo 2:
Valor da compra (R$): 220
Número de parcelas: 1
Valor final da compra: R$ 198.00
Parcelas: 1 x R$ 198.00
12
Questão 4.2 (2019-2)
O DETRAN-MG aplica multas e pontuações na CNH por excesso de velocidade de acordo com as
seguintes regras:
• multa de R$ 120,00 e 2 pontos na CNH, se o motorista ultrapassar em até 10 km/h (inclusive)
a velocidade máxima permitida;
• multa de R$ 250,00 e 5 pontos na CNH, se o motorista ultrapassar entre 10 km/h (exclusive) a
30 km/h (inclusive) a velocidade máxima permitida;
• multa de R$ 600,00 e 7 pontos na CNH, se o motorista ultrapassar 30km/h (exclusive) a veloci-
dade máxima permitida.
Implemente um programa que receba como entradas a velocidade máxima da via (valor real) e a
velocidade do veículo (valor real), medida por um radar, em seguida, determine e imprima o valor da
multa e a pontuação aplicada. Caso não seja aplicada multa, a mensagem “Motorista não cometeu in-
fração”, caso a velocidade medida seja menor ou igual a 0 km/h ou superior a 300 km/h, a mensagem
“Velocidade inválida” deve ser impressa na tela. Observe que o valor da multa deve ser formatado
com 2 casas decimais.
Exemplo 1:
Velocidade máxima: 60
Velocidade medida: 50
Motorista não cometeu infração
Exemplo 2:
Velocidade máxima: 80
Velocidade medida: 90
Multa de R$ 120.00 e 2 pontos na CNH
Questão 4.3 (2017-2)
Uma loja de materiais esportivos, PlaySports, da cidade de Guaramirim, gostaria de começar a ofe-
recer aos seus clientes diferentes formas de pagamentos para suas compras, conforme as seguintes
condições de pagamento:
1. a vista em dinheiro ou cartão de débito, recebe 10% de desconto;
2. a vista no cartão de crédito, recebe 5% de desconto;
3. em duas vezes no cartão de crédito, preço normal sem juros.
Faça um programa que leia o total a ser pago pela compra (real), considerando o preço normal da
etiqueta dos produtos e a escolha da condição de pagamento. Utilize os códigos da tabela apresentada
anteriormente para ler qual a condição de pagamento escolhida, calcule e apresente o resultado da
compra (com precisão de duas casas decimais).
Observação: Caso seja digitado qualquer outro código diferente das opções apresentadas para as con-
dições de pagamento, a seguinte mensagem deve ser exibida: “Código para condição de pagamento
inválido”, e o programa deve ser finalizado.
13
Exemplo 1:
Valor da compra: 250
Condição de pagamento: 1
O valor da compra com 10 por cento de desconto é R$ 225.00.
Exemplo 2:
Valor da compra: 125
Condição de pagamento: 3
O valor da cada parcela é R$ 62.50.
Exemplo 3:
Valor da compra: 35.5
Condição de pagamento: 4
Código de condição de pagamento inválido.
Questão 4.4 (2018-1)
A indústria farmacêutica, Poison Ivy Inc. Co., beneficia seus clientes com descontos em suas compras,
considerando o valor total da compra (VTC) e as seguintes regras:
Valor Total da Compra VTC (R$) Porcentagem de Desconto (%)
0 < VTC <= 300,00 2
300,00 < VTC <= 600,00 4
600,00 < VTC <= 900,00 6
VTC > 900,00 8
Escreva um programa que execute os seguintes passos:
• leia do teclado o VTC de um cliente;
• caso o VTC seja negativo, o programa deve emitir a mensagem “ERRO: Valor de compra invá-
lido!” e ser encerrado;
• quando o VTC é informado corretamente o programa deve calcular o valor do pagamento final,
considerando os descontos cabíveis.
Exemplo 1:
Qual o Valor Total da Compra? −254.12
ERRO: Valor de compra inválida!
Exemplo 2:
Qual o Valor Total da Compra? 550.00
Valor do pagamento: R$ 528.00
14
Questão 4.5 (2018-1)
Uma dada companhia aérea vende passagens de forma facilitada. Após escolher a passagem com o
seu respectivo valor, o cliente pode ter um desconto se tiver um cupom de brinde, sendo:
• Cupom número 1: 5% de desconto;
• Cupom número 2: 7,5% de desconto;
• Cupom número 3: 10% de desconto;
• Cupom número 0: não tem desconto.
Após o desconto do cupom, o pagamento pode ser da forma:
1. pagamento à vista sem acréscimo;
2. pagamento em 5 vezes com 3% de acréscimo;
3. pagamento em 10 vezes com 5% de acréscimo.
Faça um programa que leia o valor da passagem, o número do cupom (0, ..., 3) e a forma de
pagamento (1, 2 ou 3). A seguir, calcule e imprima o preço final da passagem e a forma de pagamento
escolhida, conforme exemplos.
Exemplo 1:
Entre com o valor da passagem: 100.00
Entre com o número do cupom de brinde (0−3): 3
Valor da passagem após desconto R$90.00
Formas de pagamento
1 − pagamento à vista sem acréscimo
2 − em 5 vezes com acréscimo de 3 %
3 − em 10 vezes com acréscimo de 5 %
Escolha uma opção (1, 2 ou 3): 3
Valor final da passagem R$94.50 em 10 parcelas de R$ 9.45
Exemplo 2:
Entre com o valor da passagem: 100.00
Entre com o número do cupom de brinde (0−3): 1
Valor da passagem após desconto R$95.00
Formas de pagamento
1 − pagamento à vista sem acréscimo
2 − em 5 vezes com acréscimo de 3 %
3 − em 10 vezes com acréscimo de 5 %
Escolha uma opção (1, 2 ou 3): 2
Valor final da passagem R$97.85 em 5 parcelas de R$ 19.57
15
Questão 4.6 (2018-2)
Uma pessoa resolveu fazer uma aplicação em uma poupança programada. Para calcular seu rendi-
mento, ela deverá fornecer:
1. o valor dos depósitos mensais constantes (VA), um valor real maior do que zero;
2. a taxa de rendimento mensal (tx), um valor real maior do que zero;
3. e o número de meses (n) inteiro.
Para que a aplicação seja confirmada é necessário que todos os valores digitados estejam corretos.
Sabe-se que a fórmula usada para este cálculo é dada por:
Rendimento = VA(1 + tx) ∗ (1 + tx)
n − 1
tx
.
Escreva um programa que leia os dados de entrada e informe o rendimento da aplicação caso ela
seja confirmada. Caso contrário emitir uma mensagem de erro conforme os exemplos abaixo.
Exemplo 1:
Digite o valor dos depósitos mensais: 500.00
Digite a taxa de rendimento mensal: 0.001
Digite o número de meses: 24
Valor do rendimento após 24 meses: R$ 12151.16
Aplicação confirmada.
Exemplo 2:
Digite o valor dos depósitos mensais: 0
Digite a taxa de rendimento mensal: 0.003
Digite o número de meses: 12
Foi encontrado algum erro nos dados de entrada.
Aplicação não confirmada.
Questão 4.7 (2019-1)
Uma empresa aplicará um reajuste salarial a todos os seus funcionários baseado no cargo ocupado
e no tempo de serviço, conforme a tabela a seguir:
Cargo
Tempo de serviço
até 2 anos (inclusive) 2 a 5 anos acima de 5 anos
Gerente 10% 12% 15%
Engenheiro 9% 10% 11%
Outros 6%6% 6%
Implemente um programa que receba como entradas o cargo (texto), o tempo de serviço (inteiro) e o
salário atual (real) de um funcionário, em seguida, calcula e imprime o reajuste concedido e o salário
reajustado. O salário atual não pode ser inferior ao salário mínimo, ou seja, R$ 998,00; caso isso
ocorra, a mensagem “Salário inválido!” deve ser impressa na tela e o programa deve ser encerrado.
16
Considere que o tempo de serviço sempre será um número inteiro válido, não é necessário validar,
e observe que os valores de reajuste e salário reajustado são impressos com duas casas decimais de
precisão.
Exemplo 1:
Cargo: Engenheiro
Tempo: 4
Salário: 7200
Reajuste: R$ 720.00
Salário reajustado: R$ 7920.00
Exemplo 2:
Cargo: Auxiliar de limpeza
Tempo: 6
Salário: 1000.00
Reajuste: R$ 60.00
Salário reajustado: R$ 1060.00
Exemplo 3:
Cargo: Auxiliar de escritório
Tempo: 3
Salário: 950
Salário inválido!
Questão 4.8 (2017-2)
Uma rodovia possui demarcações sobre a quilometragem percorrida. Considere a situação em que
você faz uma viagem e pretende abastecer o carro. Sua posição na rodovia é a partir do quilômetro
zero (início da rodovia). Você também pode consultar o painel do seu carro e verificar o quanto
ainda pode percorrer em quilômetros até que a gasolina se acabe. Na rodovia há quatro postos de
abastecimento, conforme ilustrado na Figura 5. Considere os seguintes valores por litro de gasolina:
Posto A: R$ 4,30; Posto B: R$ 4,20; Posto C: R$ 5,10; Posto D: R$ 4,10.
Figura 5: Representação da rodovia e postos de abastecimento.
Escreva um programa que escolherá o posto que você deverá abastecer, usando como critério o
menor valor por litro de gasolina. Para isto, o programa deve:
• ler o quilômetro em que você se encontra na rodovia; uma quilometragem antes do primeiro
posto (A), não é necessário verificar esta quilometragem;
17
• ler o quanto você pode percorrer em quilômetros na rodovia;
• imprimir uma mensagem informando o posto selecionado. Porém, há a possibilidade de você
não conseguir chegar a nenhum posto, neste caso, exiba as mensagens do exemplo 1 (para os
demais exemplos é possível alcançar pelo menos um dos postos).
Exemplo 1:
Em qual quilômetro você se encontra? 10
Quantos quilômetros pode percorrer? 12
Vá a pé e busque combustível!
Você somente chegará ao km 22
Exemplo 2:
Em qual quilômetro você se encontra? 5
Quantos quilômetros pode percorrer? 70
Você chegará ao posto B, gasolina: R$ 4.20
Exemplo 3:
Em qual quilômetro você se encontra? 25
Quantos quilômetros pode percorrer? 10
Você chegará ao posto A, gasolina: R$ 4.30
Questão 4.9 (2018-2)
Em uma antiga civilização Tcheca, uma superstição envolvendo os números quadripartidos se
fazia presente. Uma comunidade nos arredores de Neratovice utilizava as propriedades dos números
quadripartidos para prever o futuro, batizar as crianças e até mesmo para escolher os seus líderes.
Um número inteiro n é quadripartido se existe alguma divisão desse número em quatro parcelas
inteiras (p1+ p2+ p3+ p4 = n) e um número mágico (m) de modo que a primeira parcela somada ao
número mágico, a segunda diminuída dele, a terceira multiplicada por ele e a quarta dividida por ele
deem o mesmo resultado (p1 +m = p2−m = p3 ∗m = p4/m).
Assim, 128 é quadripartido, porque podemos dividi-lo em 4 parcelas (31, 33, 32 e 32) de modo que
existe um número mágico (no caso, 1) que faz com que p1 +m, p2−m, p3 ∗m e p4/m sejam iguais.
De fato: 31 + 1 = 33− 1 = 32 ∗ 1 = 32/1 = 32.
Um grupo de pesquisadores de Ouro Preto está reconstruindo o passado de Neratovice, e pediu a sua
ajuda. Eles querem que você faça um programa que identifique quando quatro parcelas e o número
mágico fornecidos como entrada formam ou não um número quadripartido e, em caso afirmativo,
qual é o número quadripartido. A seguir, dois exemplos de execução.
Exemplo 1:
Defina o valor de p1: 31
Defina o valor de p2: 33
Defina o valor de p3: 32
Defina o valor de p4: 32
Defina o número mágico: 1
As parcelas e o número mágico formam o número quadripartido 128.
18
Exemplo 2:
Defina o valor de p1: 34
Defina o valor de p2: 33
Defina o valor de p3: 32
Defina o valor de p4: 35
Defina o número mágico: 2
As parcelas e o número mágico NÃO formam um número quadripartido.
Questão 4.10 (2019-1)
Escreva um programa para simular um terminal de banco. O programa deve considerar que as
informações do usuário já foram lidas e deve apenas “gerenciar” as principais operações que são
realizadas pelos usuários. Considere que o programa deve se comportar da seguinte maneira:
1. Iniciar fazendo a leitura do saldo inicial do cliente (uma entrada do usuário).
2. O usuário poderá então escolher por uma das seguintes opções:
(a) Consultar o saldo: neste caso o programa deve informar: “Seu saldo atual é R$ X.XX”.
Sendo que X.XX corresponde ao saldo atual do cliente em duas casas decimais.
(b) Realizar um depósito: neste caso o programa deve ler o valor a ser depositado, atualizar
o saldo e informar: “Depósito realizado com sucesso, seu saldo agora é R$ X.XX”. Sendo
que X.XX corresponde ao saldo atualizado, em duas duas casas decimais.
(c) Realizar uma retirada: neste caso o programa deve ler o valor a ser retirado, verificar se
o saldo atual é maior ou igual ao valor da retirada. Neste caso, o programa deve informar:
“Retirada realizada com sucesso, seu saldo agora é X.XX”. Caso contrário, o programa deve
informar: “Saldo insuficiente, seu saldo atual é X.XX”. Sendo que X.XX corresponde ao
saldo atualizado, em duas casas decimais.
3. O programa deve realizar a operação escolhida pelo usuário e encerrar sua execução com a men-
sagem: “Fim da operação!”. Caso uma opção inválida seja informada pelo usuário, o programa
deve imprimir a mensagem “Opção inválida!” antes de finalizar a operação.
Exemplo 1:
Saldo inicial: 1250.00
Opção (1. Saldo, 2. Depósito, 3. Retirada): 4
Opção inválida!
Fim da operação!
Exemplo 2:
Saldo inicial: 5000
Opção (1. Saldo, 2. Depósito, 3. Retirada): 3
Valor a ser retirado: 10000.00
Saldo insuficiente, seu saldo atual é R$ 5000.00
Fim da operação!
19
Questão 4.11 (2019-2)
Uma corretora calcula o valor do seguro a partir de um valor inicial determinado por um analista,
e em seguida atribui um acréscimo percentual baseado em um conjunto de atributos, definidos na
tabela:
Sexo Estado Civil Idade % de Acréscimo
1. Feminino
1. Solteiro
de 18 a 30 0,8%
de 31 a 55 1,2%
acima de 55 1,6%
2. Casado 5% a mais do que os valores definidos para solteiro.
2. Masculino
1. Solteiro
de 18 a 25 1,1%
de 26 a 40 1,5%
acima de 50 1,9%
2. Casado 5% a mais do que os valores definidos para solteiro.
Implemente um programa que receba como entradas: Idade (inteiro que não pode ser inferior a
18), Valor base, Sexo (valor 1 - feminino ou 2 - masculino) e Estado Civil (valor 1 - solteiro ou 2 -
casado), calcule e imprima na tela o % de Acréscimo e Valor final do seguro (formatados com 2 casas
decimais). Considere que os valores definidos pelo usuário para o Sexo e Estado Civil são sempre
válidos. DICA: Observe que a diferença entre o percentual masculino e feminino é sempre de 0,3% e
entre o percentual casado e solteiro é sempre de 5%. Assim, basta avaliar o percentual considerando
o sexo feminino e a solteiro e depois decidir por aplicar os acréscimos se masculino e se casado.
Exemplo 1:
Idade: 16
Idade inválida
Exemplo 2:
Idade: 36
Valor base: R$ 1500
Sexo: 1
Estado Civil: 2
Com 6.20% de acréscimo o valor final é R$ 1593.00
Questão 4.12 (2018-2)
A rede de supermercados Rotten Cocoa Market Inc. está com uma grande promoção na venda de
caixas de chocolates. O valor unitário de uma caixa é R$ 15,00. Entretanto, a cada lote composto
por três caixas de chocolate, o cliente tem um desconto definido pela quantidade total de caixas
compradas:
• até 30 caixas, desconto de 8%;
• acima de 30 e no máximo 60 caixas, desconto de 12%;
• acima de 60 e no máximo 90 caixas, desconto de 16%;
• acima de 90 caixas, desconto de 18%.
20
Por exemplo,se o cliente compra 29 caixas, ele pagaria 29 ∗ 15, 00 = R$435, 00 sem aplicar o des-
conto. Entretanto, 29 caixas implicam em um desconto de 8%. Logo, a compra com descontos será
2∗15, 00+27∗ (15, 00∗0.92) = R$402, 60. Consequentemente, o cliente economiza R$ 32,40. Observe
que o resto da divisão de 29 por 3 é 2 e que 29 − 2 = 27, definem a quantidade sobre a qual não se
aplica o desconto e a quantidade na qual o desconto é aplicado, respectivamente. Em outra situação o
cliente compra 94 caixas, o que implica em um desconto de 18%. Logo, o pagamento sem o desconto
é 94∗15, 00 = R$1410, 00. Com o desconto será 1∗15, 00+93∗ (15, 00∗0.82) = R$1158, 90. Economia
de R$ 251,10. Observe que o o resto de 94 por 3 é 1 e 94− 1 = 93.
Escreva um programa que calcula os valores de uma compra de caixas de chocolates. O programa
realiza as tarefas:
1. pergunta ao cliente a quantidade de caixas de chocolates. Este valor deve ser positivo, não nulo
e inteiro. Quando esta entrada for inválida, ocorre o encerramento do programa e a exibição de
uma mensagem adequada;
2. no caso de uma quantidade válida, são calculados e impressos da tela (com precisão de duas
casas decimais):
(a) o valor da compra sem o desconto;
(b) o valor da compra com o desconto;
(c) o valor da economia do cliente.
Exemplo 1:
Quantidade de caixas de chocolate: 8.62
ERRO: Quantidade de caixas inválida!
Exemplo 2:
Quantidade de caixas de chocolate: 29
Pagamento sem desconto: R$ 435.00
Pagamento com desconto: R$ 402.60
Você economizou R$ 32.40
Exemplo 3:
Quantidade de caixas de chocolate: 94
Pagamento sem desconto: R$ 1410.00
Pagamento com desconto: R$ 1158.90
Você economizou R$ 251.10
Questão 4.13 (2017-2)
A indústria química de perfumes, JahCathynga Inc. Co., presenteia mensalmente seus clientes com
um cupom para concorrerem a um sorteio, realizado da seguinte forma:
• Cada cupom é numerado com 6 dígitos, de 111111 a 999999.
• Extrai-se do número do cupom o dígito referente à unidade de milhar. Também, extrai-se o
dígito das unidades. Por exemplo, se o número do cupom for 852614, são extraídos os números
2 (unidade de milhar) e 4 (unidades).
21
• O dígito da unidade de milhar, x, determina o kit que o cliente receberá:
– se x <= 3, o cliente recebe um “Kit desodorante!”; esta mensagem deve ser exibida;
– se 3 < x <= 6, o cliente recebe um “Kit perfume!”; esta mensagem deve ser exibida;
– se x > 6, o cliente recebe um “Kit loção para os pés!”; esta mensagem deve ser exibida.
• Quanto ao dígito das unidades, caso ele seja um número par, o cliente recebe uma quantidade
de sabonetes igual a esse dígito. Caso seja ímpar, o cliente recebe um novo cupom.
Escreva um programa que executa o sorteio.
DICA: Para extrair um determinado dígito você pode: a) obter o valor inteiro do resultado de uma
divisão para eliminar uma parte do número; b) em seguida, obter o resto da divisão do número obtido
por um determinado valor, conforme exemplificado a seguir, para obter o quarto dígito: int(852614
/ ValorEspecial) resulta em 852, e 852 % OutroValorEspecial resulta em 2.
Exemplo 1:
Digite o seu cupom (6 dígitos): 852614
Prêmio 1: Kit desodorante!
Prêmio 2: 4 sabonete(s)
Exemplo 2:
Digite o seu cupom (6 dígitos): 245689
Prêmio 1: Kit perfume!
Prêmio 2: um cupom adicional
Exemplo 3:
Digite o seu cupom (6 dígitos): 258748
Prêmio 1: Kit loção para os pés!
Prêmio 2: 8 sabonete(s)
22
5MÓDULO
Estrutura de Repetição
Questão 5.1 (2018-2)
O Índice de Massa Corporal, ou apenas IMC, é uma medida internacional que serve para definir
se uma pessoa está em seu peso ideal, abaixo ou acima dele. Uma classificação simplificada do IMC é
dada na tabela abaixo:
IMC Classificação
IMC < 16 Magreza grave
16 <= IMC < 18,5 Abaixo do peso
18,5 <= IMC < 25 Saudável
25 <= IMC < 30 Sobrepeso
30 <= IMC < 40 Obesidade
IMC >= 40 Obesidade extrema
Sabendo que o cálculo do IMC é dado pela fórmula IMC = peso/(altura∗altura), fazer um programa
para classificar a condição de um dado número de pacientes. O programa deve inicialmente ler o total
de pacientes (inteiro) e depois, para cada paciente, ler o peso e altura (reais), calcular o seu respectivo
IMC e imprimir na tela a sua classificação, de acordo com a tabela anterior. Ao final o programa deve
informar o percentual de pacientes contidos em duas classes: “Magreza grave” e “Obesidade extrema”.
Todos os valores calculados devem ser exibidos com formatação de 2 casas decimais.
Exemplo 1:
Quantidade de pacientes: 2
Peso: 100
Altura: 1.5
O IMC é 44.44 ==> Obesidade extrema
Peso: 50
23
Altura: 1.80
O IMC é 15.43 ==> Magreza grave
Percentual para Magreza grave: 50.00%.
Percentual para Obesidade extrema: 50.00%.
Exemplo 2:
Quantidade de pacientes: 3
Peso: 110
Altura: 1.65
O IMC é 40.40 ==> Obesidade extrema
Peso: 80
Altura: 1.7
O IMC é 27.68 ==> Sobrepeso
Peso: 70
Altura: 1.75
O IMC é 22.86 ==> Saudável
Percentual para Magreza grave: 0.00%.
Percentual para Obesidade extrema: 33.33%.
Questão 5.2 (2018-1)
Um bombeiro hidráulico deve fazer uma série de encanamentos, cada um de um dado comprimento
total e para isso ele dispõe de canos do tipo C1 com 1,7m e do tipo C2 com 2,3m. Por experiência,
para cada encanamento ele chuta uma quantidade de canos de cada tipo. Mas ele deseja que você faça
um programa para verificar a exatidão dos chutes que ele dá. Desta forma, faça um programa que leia
uma série de comprimentos de encanamento, e para cada encanamento, a quantidade de canos do
tipo C1 e do tipo C2 e mostre se o bombeiro acertou na mosca, se sobrou cano ou se faltou cano. Caso
tenha sobrado ou faltado, o programa deve informar a metragem total que irá sobrar ou faltar para
completar o encanamento. O programa deve ser finalizado quando for digitado 0 para o comprimento
do encanamento.
Exemplo 1:
Entre com o comprimento do encanamento (m) ou 0 para fim: 17.7
Total de canos tipo C1 (1.7m): 5
Total de canos tipo C2 (2.3m): 4
Acertou na mosca, não sobra nem falta cano!
Entre com o comprimento do encanamento (m) ou 0 para fim: 13.9
Total de canos tipo C1 (1.7m): 4
Total de canos tipo C2 (2.3m): 2
Vai faltar 2.5 metros de cano
Entre com o comprimento do encanamento (m) ou 0 para fim: 28
Total de canos tipo C1 (1.7m): 6
Total de canos tipo C2 (2.3m): 9
Vai sobrar 2.9 metros de cano
Entre com o comprimento do encanamento (m) ou 0 para fim: 0
24
Questão 5.3 (2019-2)
Você é o síndico do prédio onde mora. Haverá uma eleição para a escolha de uma chapa para compor
a nova administração do prédio, composta de síndico, tesoureiro e secretário. Sua responsabilidade é
apurar os votos e determinar a chapa vencedora. Considerando que são apenas três chapas, denomi-
nadas de “a”, “b” e “c”, você desenvolverá um programa para fazer a apuração. O programa funciona
da seguinte maneira, é fornecida uma entrada para cada voto enquanto não for digitado o valor “q”,
indicando que não há mais votos a serem computados. Cada voto digitado indica o nome da chapa
(“a”, “b” ou “c”), qualquer voto diferente destes valores são considerados nulos. Após a entrada de
todos os votos, o programa imprime o resultado de apuração dos votos conforme os exemplos a seguir.
Exemplo 1:
Chapa: a
Chapa: a
Chapa: b
Chapa: x
Chapa: q
Resultado:
− Chapa a: 2 voto(s)
− Chapa b: 1 voto(s)
− Chapa c: 0 voto(s)
− Nulos : 1 voto(s)
Exemplo 2:
Chapa: c
Chapa: a
Chapa: b
Chapa: x
Chapa: y
Chapa: b
Chapa: b
Chapa: c
Chapa: b
Chapa: q
Resultado:
− Chapa a: 1 voto(s)
− Chapa b: 4 voto(s)
− Chapa c: 2 voto(s)
− Nulos : 2 voto(s)
Questão 5.4 (2018-2)
O Campus Aberto da UFOP realizará uma gincana e precisa de um programa para computar a
pontuação das duas equipes participantes e determinar a equipe vencedora da seguinte forma:
1. serão realizadas N provas, definidas por entrada do usuário;
2. cada equipe receberá uma nota entre 0 e 10 para cada prova (não é necessário validar);
25
3. a equipe com maior pontuação será a vencedora da prova, podendo haver empate;
4. para cada prova, deveráser lida a nota de cada equipe e computada a equipe vencedora;
5. ao final informar qual foi a equipe que venceu o maior número de provas, ou se houve empate;
6. o programa imprime a pontuação de cada equipe e a equipe vencedora na tela.
Exemplo 1:
Quantidade de provas: 5
=== Prova 1 ===
Pontuação da equipe 1: 5
Pontuação da equipe 2: 6
=== Prova 2 ===
Pontuação da equipe 1: 7.8
Pontuação da equipe 2: 7.6
=== Prova 3 ===
Pontuação da equipe 1: 5
Pontuação da equipe 2: 4
=== Prova 4 ===
Pontuação da equipe 1: 6
Pontuação da equipe 2: 7
=== Prova 5 ===
Pontuação da equipe 1: 3
Pontuação da equipe 2: 4
=== Resultados ===
A equipe 1 venceu 2 prova(s)
A equipe 2 venceu 3 prova(s)
Houve 0 empate(s) entre as equipes
Equipe 2 é a vencedora
Exemplo 2:
Quantidade de provas: 3
=== Prova 1 ===
Pontuação da equipe 1: 5
Pontuação da equipe 2: 5
=== Prova 2 ===
Pontuação da equipe 1: 8
Pontuação da equipe 2: 6
=== Prova 3 ===
Pontuação da equipe 1: 4
Pontuação da equipe 2: 6
=== Resultados ===
A equipe 1 venceu 1 prova(s)
A equipe 2 venceu 1 prova(s)
Houve 1 empate(s) entre as equipes
Houve empate entre as equipes!
26
Questão 5.5 (2019-2)
O preparador físico de um atleta de maratona deseja calcular o tempo estimado para completar uma
prova com base no tempo gasto para percorrer uma pequena parte do percurso. Para isso ele recorre
a uma formulação matemática definida a seguir.
Considerando o percurso AB, que determina o percurso total da maratona, o trecho AB’, que deter-
mina um pequeno trecho deste percurso, e t o tempo para percorrer o trecho AB’, o cálculo do tempo
total T, estimado para percorrer o percurso total AB com base no tempo t, com uma precisão de n
termos, é dado pelo somatório:
T =
t
20
+
t
21
+
t
22
+ ...+
t
2n−1
Ajude o preparador físico implementando um programa que receba como entradas os valores de t
e n (ambos inteiros), calcule e imprima o valor de T. Observe que a saída é formatada com 4 casas
decimais.
Exemplo 1:
Entre com t: 10
Entre com n: 5
O tempo estimado é 19.3750
Exemplo 2:
Entre com t: 10
Entre com n: 10
O tempo estimado é 19.9805
Exemplo 3:
Entre com t: 10
Entre com n: 15
O tempo estimado é 19.9994
Exemplo 4:
Entre com t: 10
Entre com n: 20
O tempo estimado é 20.0000
Exemplo 5:
Entre com t: 10
Entre com n: 25
O tempo estimado é 20.0000
27
Questão 5.6 (2013-2)
Uma Sequência de Collatz modificada pode ser definida do seguinte modo:
• Dado um número inteiro positivo n, se o resto da divisão inteira de n por 3 for 0, divida n por 3
(n/3);
• se o resto for 1, multiplique n por 4, some 2 e divida o resultado por 3 ((4n+2)/3);
• se o resto for 2, multiplique n por 2, subtraia 1 e divida o resultado por 3 ((2n-1)/3).
• Repita esse processo para o valor obtido, e assim sucessivamente, até que o valor obtido seja
igual a 1.
Escreva um programa que leia um valor inteiro positivo n e imprima os valores da Sequência de
Collatz para n. Não é necessário verificar se o valor digitado é válido.
Exemplo 1:
Digite um número inteiro positivo: 12
Sequencia de Collatz:
12 4 6 2 1
Exemplo 2:
Digite um número inteiro positivo: 231
Sequencia de Collatz:
231 77 51 17 11 7 10 14 9 3 1
Questão 5.7 (2013-2)
A série de RICCI é gerada da seguinte forma:
• os dois primeiros termos são fornecidos pelo usuário;
• os demais termos desta série são gerados como sendo a soma dos 2 termos anteriores.
Escreva um programa que solicite ao usuário os dois primeiros termos (números inteiros). Os valores
informados devem ser positivos e o programa deve obrigar que o usuário os informe corretamente. A
seguir o programa deve imprimir todos os termos da série de RICCI que sejam menores que o quadrado
do produto dos dois primeiros termos, fornecidos pelo usuário.
Exemplo 1:
Digite o primeiro termo da série: −3
Digite o segundo termo da série: 4
Os valores informados devem ser positivos. Digite novamente.
Digite o primeiro termo da série: 3
Digite o segundo termo da série: 4
Série de RICCI:
3 4 7 11 18 29 47 76 123
28
Questão 5.8 (2019-2)
As regras de transição para aposentadoria estão causando muita dúvida e seus amigos pediram uma
ajuda. Todos eles se encaixam na regra definida a seguir:
• Regra de transição por pontos - Setor Privado: soma-se o tempo de contribuição com a idade,
caso atinja a pontuação mínima exigida para o ano em questão, pode se aposentar. O cálculo
começa no ano de 2019, e a pontuação mínima neste ano é de 96 pontos para os homens e
86 pontos para as mulheres, e é acrescida de um a cada ano, atingindo o máximo de 105 para
homens e 100 para mulheres.
Implemente um programa que realize a simulação do cálculo do ano no qual um amigo poderá
se aposentar. As entradas para o programa são: sexo (1 - feminino e 2 - masculino), tempo de
contribuição em 2019 e a idade em 2019. O programa imprime como resultado uma tabela com o
ano (começando de 2019), a pontuação mínima para o ano e a pontuação obtida no ano, encerrando
quando a pontuação obtida no ano for igual ou superior à pontuação mínima para este mesmo ano. O
amigo, em nenhum momento, interrompe sua contribuição, ou seja, assim como sua idade, o tempo de
contribuição é acrescido de um a cada ano que se passa. Observe que a pontuação obtida inicialmente
é a idade mais o tempo de contribuição (ambos em 2019), e para cada ano seguinte a pontuação
obtida é acrescida de 2 (1 pela idade e 1 pela contribuição).
Exemplo 1:
Sexo: 2
Tempo de contribuição em 2019: 20
Idade em 2019: 45
Ano | Pont. Min. | Pont. Obtida
2019 | 96 | 65
2020 | 97 | 67
2021 | 98 | 69
2022 | 99 | 71
2023 | 100 | 73
2024 | 101 | 75
2025 | 102 | 77
2026 | 103 | 79
2027 | 104 | 81
2028 | 105 | 83
2029 | 105 | 85
2030 | 105 | 87
2031 | 105 | 89
2032 | 105 | 91
2033 | 105 | 93
2034 | 105 | 95
2035 | 105 | 97
2036 | 105 | 99
2037 | 105 | 101
2038 | 105 | 103
2039 | 105 | 105
29
Questão 5.9 (2019-1)
Uma empresa aplicará um reajuste em seus produtos baseado no tipo e preço, conforme a tabela:
Tipo
Preço atual (P)
P <= R$ 50,00 R$ 50,00 < P <= R$ 100,00 P > R$ 100,00
Alimentos 10% 12% 15%
Limpeza 9% 10% 11%
Transporte 6%
“outros” 4%
Implemente um programa que receba como entradas os dados de vários produtos: o tipo (texto) e
o preço atual (número real); em seguida, calcula e imprime o preço reajustado. O preço atual não
pode ser inferior a 0, caso isso ocorra, a mensagem “Preço inválido!” deve ser impressa na tela. O
programa deve ser encerrado quando o usuário digitar “fim” para o tipo do produto. Observe que
os valores numéricos são impressos com duas casas decimais de precisão e que “outros” se refere a
valores que não estejam representados na tabela (qualquer coisa diferente de “Alimentos”, “Limpeza”
e “Transporte” – incluindo também “fim”, usado para encerrar o programa).
exemplo 1
Tipo: Limpeza
Preço atual: 40
Preço reajustado: R$ 43.60
Tipo: Limpeza
Preço atual: 140
Preço reajustado: R$ 155.40
Tipo: Transporte
Preço atual: 0
Preço reajustado: R$ 0.00
Tipo: Transporte
Preço atual: −23
Preço Inválido!
Preço atual: 150
Preço reajustado: R$ 159.00
Tipo: Entretenimento
Preço atual: 100
Preço fim
Questão 5.10 (2018-2)
Um estudante de Biologia quer “simular” uma série de crescimentos populacionais. Neste estudo,
temos cada espécie uma população inicial N0, uma taxa de crescimento r, que corresponde à taxa de
natalidade da espécie e o seu nível de saturação K, que corresponde ao número máximo de indivíduos
que o ambiente comporta. O estudo consiste em simular o crescimento de uma série de espécies
distintas, sendo que para cada espécie são conhecidas as seguintes informações:
1. a população inicial N0;
2. a taxa de crescimento da população r; e
30
3. o nível de saturação K.
Sabendo-se que o crescimento populacional é dado pela fórmula: N0 = Ni−1 ∗ (1 + r), ou seja, o
número de indivíduo da próxima geração (i) é igual ao número de indivíduos da geração atual (n-1)
acrescido dos “novos” indivíduos, escreva um programa para:
1. lertotal de espécies do estudo (inteiro);
2. para cada espécie, fazer:
(a) ler a população inicial N0 (inteiro);
(b) ler a taxa de crescimento da população r (real); e
(c) ler o nível de saturação K (inteiro).
(d) Calcular e informar quantas gerações são necessárias para que a população de cada espécie
ultrapasse o nível de saturação K e a população final.
Exemplo 1:
Número de espécies: 3
Entre com os dados da Espécie 1
− População Inicial: 100
− Taxa de crescimento: 0.3
− Nível de saturação: 500
− São necessárias 7 gerações.
− População final: 627
Entre com os dados da Espécie 2
− População Inicial: 10
− Taxa de crescimento: 0.05
− Nível de saturação: 100
− São necessárias 48 gerações.
− População final: 104
Entre com os dados da Espécie 3
− População Inicial: 50
− Taxa de crescimento: 0.03
− Nível de saturação: 500
− São necessárias 78 gerações.
− População final: 501
Questão 5.11 (2019-1)
Barba Negra e Anne Bonny são piratas disputando um tesouro. Visando evitar mais mortes entre
seus tripulantes eles combinaram de disputar um jogo de adivinhação. Barba Negra escolherá um
número inteiro E entre 1 e N (sendo N um número inteiro definido pela Anne Bonny). Anne Bonny
terá no máximo X tentativas para acertar o número (sendo X outro número inteiro definido por Barba
Negra). A cada tentativa de Anne Bonny, Barba Negra deverá fornecer um novo intervalo de valores
inteiros, [A, B], ou encerrar o jogo da seguinte maneira:
1. Inicialmente o intervalo de valores é [1; N], ou seja, A = 1 e B = N;
2. Considerando que a tentativa de Anne Bonny seja o valor T, A e B serão atualizados pela regra:
31
(a) caso T seja menor do que E, o valor de A muda para T, e B não muda;
(b) caso T seja maior do que E, o valor de B muda para T, e A não muda;
3. O jogo termina quando T = E ou Anne Bonny atingir o número máximo de tentativas (X);
4. Anne Bonny ganha se T = E, caso contrário Barba Negra ganha.
Escreva um programa que fará o papel de juiz desta disputa entre Barba Negra e Anne Bonny através
de entradas do usuário.
Exemplo 1:
Anne Bonny, defina N: 50
Barba Negra, defina E: 30
Barba Negra, defina X: 3
Anne Bonny, escolha um número entre 1 e 50: 40
Anne Bonny, escolha um número entre 1 e 40: 20
Anne Bonny, escolha um número entre 20 e 40: 25
Anne Bonny você consumiu suas 3 tentativas, Barba Negra ganhou!
Exemplo 2:
Anne Bonny, defina N: 50
Barba Negra, defina E: 30
Barba Negra, defina X: 3
Anne Bonny, escolha um número entre 1 e 50]: 28
Anne Bonny, escolha um número entre 28 e 50]: 30
Anne Bonny você ganhou, o número é 30!
Exemplo 3:
Anne Bonny, defina N: 100
Barba Negra, defina E: 60
Barba Negra, defina X: 3
Anne Bonny, escolha um número entre 1 e 100]: 23
Anne Bonny, escolha um número entre 23 e 100]: 78
Anne Bonny, escolha um número entre 23 e 78]: 60
Anne Bonny você ganhou, o número é 60!
Questão 5.12 (2018-1)
Um aluno da UFOP é responsável pelas compras mensais de supermercado de uma quantidade
determinada de repúblicas de estudantes. Para isto, ele recebe de cada uma das repúblicas a lista de
produtos que serão comprados.
Escreva um programa que simula as compras das repúblicas. O programa deve calcular o valor da
compra de cada uma das repúblicas e o valor total de todas as compras efetuadas de acordo com o
exemplo a seguir.
Exemplo 1:
32
Informe a quantidade de repúblicas: 3
República número 1:
Quantos produtos na lista de compras: 2
Qual o valor do produto ? 15.00
Qual o valor do produto ? 12.00
Compras da República 1: R$ 27.00
República número 2:
Quantos produtos na lista de compras: 4
Qual o valor do produto ? 10.00
Qual o valor do produto ? 20.00
Qual o valor do produto ? 30.00
Qual o valor do produto ? 40.00
Compras da República 2: R$ 100.00
República número 3:
Quantos produtos na lista de compras: 5
Qual o valor do produto ? 1.00
Qual o valor do produto ? 2.00
Qual o valor do produto ? 3.00
Qual o valor do produto ? 4.00
Qual o valor do produto ? 5.00
Compras da República 3: R$ 15.00
Total das compras: R$ 142.00
Questão 5.13 (2017-1)
Em uma determinada competição de saltos ornamentais, cada salto recebe um grau de dificuldade
e é avaliado por juízes. Após cada salto, os juízes, que não se comunicam uns com os outros, mostram
suas notas. Um salto é pontuado entre zero e dez pontos. Depois de apresentadas as notas, a mais
alta e a mais baixa são descartadas. O restante é somado e multiplicado pelo grau de dificuldade do
salto, que pode estar entre 1.2 e 3.8, definido sempre antes do início da apresentação do atleta. O
julgamento então é feito da seguinte forma. Suponha que um saltador tenha seu grau de dificuldade
de movimento avaliado em 2.0 e tire as notas 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, de sete juízes. Retiram-
se a nota mais baixa (4.0) e a nota mais alta (6.0), o que resulta na soma de notas igual a 25.0. A
nota final é obtida multiplicando-se a soma de notas (25.0) pelo grau de dificuldade de movimento
(2.0), resultando, neste exemplo, na nota 50.0. Implemente um programa que apure a pontuação dos
competidores de acordo com estas regras, conforme o exemplo a seguir.
Exemplo 1:
Saltos Ornamentais:
Informe o número de competidores: 3
Informe o número de juízes: 7
33
Nome do competidor: Gabriela
Grau de dificuldade: 2.0
Nota juiz: 6.0
Nota juiz: 5.0
Nota juiz: 5.0
Nota juiz: 5.0
Nota juiz: 5.0
Nota juiz: 5.0
Nota juiz: 4.0
A Gabriela obteve 50.00 pontos.
Nome do competidor: Marina
Grau de dificuldade: 1.5
Nota juiz: 8.5
Nota juiz: 7.0
Nota juiz: 8.0
Nota juiz: 8.0
Nota juiz: 8.4
Nota juiz: 7.5
Nota juiz: 7.7
A Marina obteve 59.40 pontos.
Nome do competidor: Mafalda
Grau de dificuldade: 3.0
Nota juiz: 6.0
Nota juiz: 7.0
Nota juiz: 6.5
Nota juiz: 6.8
Nota juiz: 7.9
Nota juiz: 6.2
Nota juiz: 6.6
A Mafalda obteve 50.00 pontos.
Questão 5.14 (2017-2)
Implemente um programa para calcular a nota média dos alunos e verificar se eles possuem nota
para reprovação (< 3), exame especial (>= 3 e < 6) ou aprovação (>= 6). O cálculo para a nota
média é feito a partir de uma média ponderada, ou seja, cada avaliação possui um peso, e o cálculo
é feito pela equação:
Média =
∑i=n
i=1 Notai ∗ Pesoi∑i=n
i=1 Pesoi
O número de avaliações é igual para todos os alunos, mas os pesos podem variar. O programa
deve inicialmente perguntar quantas avaliações serão aplicadas, em seguida, solicita os dados de cada
aluno e imprime seu resultado. O programa continua sua execução enquanto o nome fornecido pelo
usuário for diferente de vazio (“”), conforme o exemplo de execução abaixo.
Exemplo 1:
34
Informe o número de avaliações: 4
Nome do(a) aluno(a): Janaina
Nota 1: 7.4
Peso 1: 1
Nota 2: 6.8
Peso 2: 2
Nota 3: 7.3
Peso 3: 2
Nota 4: 6.7
Peso 4: 3
Janaina está aprovado(a) com média 6.96.
Nome do(a) aluno(a): Joaquim
Nota 1: 7.8
Peso 1: 2
Nota 2: 8.4
Peso 2: 1
Nota 3: 8.6
Peso 3: 1
Nota 4: 7.5
Peso 4: 2
Joaquim está aprovado(a) com média = 7.93.
Nome do(a) aluno(a): João
Nota 1: 8.7
Peso 1: 3
Nota 2: 7.5
Peso 2: 1
Nota 3: 1.5
Peso 3: 4
Nota 4: 2.4
Peso 4: 3
João está em exame especial com média 4.25.
Nome do(a) aluno(a):
35
Questão 5.15 (2016-2)
Escreva um programa que leia dois números inteiros positivos, n1 e n2, e imprima uma figura tal
como a mostrada a seguir, onde n1 é o número de linhas e n2 é o número de colunas da figura. No
exemplo abaixo, n1 = 5 e n2 = 8:
1 2 3 4 5 6 7 8
8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8
8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8
Caso seja informado número inferior a zero para n1 ou n2, a seguinte mensagem deve ser impressa:
“Dados de entrada inválidos”.
Exemplo 1:
Digite o número de linhas: 6
Digite o número de colunas: 5
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
5 4 3 2 1
Exemplo 2:
Digite o número de linhas: −1
Digite o número de colunas: 10
Dados de entrada inválidos
Questão 5.16 (2014-2)
Bart Simpson está aprendendo a jogar xadrez e tem dificuldade em saber para qual direção ele pode
mover sua Torre.
Sabemos que um tabuleirode xadrez é composto por 8 linhas e 8 colunas, e que a Torre se move
ortogonalmente, ou seja, pelas linhas (horizontais) e pelas colunas (verticais).
Escreva um programa que solicite ao Bart a entrada do número da linha e da coluna que indicam
a posição de sua Torre (ambos inteiros). O programa imprime quais são os possíveis movimentos da
Torre. Utilize o valor 0 para indicar uma casa do tabuleiro para a qual a Torre não pode ser movida
e o valor 1 para indicar uma casa para a qual ela pode ser movida.
Caso a linha ou a coluna não esteja no intervalo de números válidos, [1, 8], a mensagem “Entrada
inválida” deve ser impressa na tela e o programa deve solicitar um novo valor.
Exemplo 1:
Informe a linha: −6
Valor inválido, deve estar no intervalo [1, 8].
36
Informe a linha: 6
Informe a coluna: 4
Movimentos possíveis:
1 2 3 4 5 6 7 8
−−−−−−−−−−−−−−−−−−−−−−−−
1 | 0 0 0 1 0 0 0 0
2 | 0 0 0 1 0 0 0 0
3 | 0 0 0 1 0 0 0 0
4 | 0 0 0 1 0 0 0 0
5 | 0 0 0 1 0 0 0 0
6 | 1 1 1 1 1 1 1 1
7 | 0 0 0 1 0 0 0 0
8 | 0 0 0 1 0 0 0 0
Exemplo 2:
Informe a linha: 2
Informe a coluna: 10
Valor inválido, deve estar no intervalo [1, 8].
Informe a coluna: 7
Movimentos possíveis:
1 2 3 4 5 6 7 8
−−−−−−−−−−−−−−−−−−−−−−−−
1 | 0 0 0 0 0 0 1 0
2 | 1 1 1 1 1 1 1 1
3 | 0 0 0 0 0 0 1 0
4 | 0 0 0 0 0 0 1 0
5 | 0 0 0 0 0 0 1 0
6 | 0 0 0 0 0 0 1 0
7 | 0 0 0 0 0 0 1 0
8 | 0 0 0 0 0 0 1 0
Questão 5.17 (2016-1)
Escreva um programa que leia um valor inteiro positivo representando a dimensão do tabuleiro (1
<= n < 100) e imprima um tabuleiro de jogo tal como ilustrado a seguir, para n = 12:
1 2 3 4 5 6 7 8 9 10 11 12
1 x
2 # +
3 x x x
4 # + # +
5 x x x x x
6 # + # + # +
37
7 x x x x x x x
8 # + # + # + # +
9 x x x x x x x x x
10 # + # + # + # + # +
11 x x x x x x x x x x x
12 # + # + # + # + # + # +
Ou seja, as posições abaixo da diagonal principal, incluindo essa diagonal, são marcadas com x,
nas linhas ímpares, ou com # e + alternados, nas linhas pares.
Caso o valor de n seja inválido (ou seja, não atenda 1 <= n < 100), a mensagem “Entrada inválida”
deve ser impressa na tela e o programa finalizado.
Exemplo 1:
Dimensão do tabuleiro: 6
1 2 3 4 5 6
1 x
2 # +
3 x x x
4 # + # +
5 x x x x x
6 # + # + # +
Exemplo 2:
Dimensão do tabuleiro: 7
1 2 3 4 5 6 7
1 x
2 # +
3 x x x
4 # + # +
5 x x x x x
6 # + # + # +
7 x x x x x x x
Exemplo 2:
Dimensão do tabuleiro: 100
Entrada inválida
38
6MÓDULO
Funções
Questão 6.1 (2013-2)
Considere o seguinte programa principal:
1 # Definição da função volumePiramide
2
3 lado1 = float(input("Digite o comprimento do lado 1: "))
4 lado2 = float(input("Digite o comprimento do lado 2: "))
5 altura = float(input("Digite o comprimento da altura: "))
6 if (lado1 <= 0) or (lado2 <= 0) or (altura <= 0):
7 print(f"ERRO: Entrada inválida")
8 else:
9 volume = volumePiramide(lado1, lado2, altura)
10 print(f"Volume da pirâmide: {volume}")
Observe que o programa fez uma chamada à função volumePiramide, que ainda não foi imple-
mentada. Você deve implementar esta função, para que o programa fique completo e execute sem
erros. Ela recebe os valores dos dois lados (lado1 e lado2) e a altura da pirâmide (altura), como
argumentos de entrada, e retorna o volume de acordo com a equação:
volume =
1
3
× lado1 × lado2 × altura
Exemplo 1:
Digite o comprimento do lado 1: 10
Digite o comprimento do lado 2: 15
Digite o comprimento da altura: 20
Volume da pirâmide: 1000.0
39
Exemplo 2:
Digite o comprimento do lado 1: 5.5
Digite o comprimento do lado 2: 8.2
Digite o comprimento da altura: 15.0
Volume da pirâmide: 225.49999999999997
Questão 6.2 (2019-1)
Considere o seguinte programa principal:
1 # Definição da função F
2
3 print(f" x y f(x, y)")
4 for x in range(−30, (90+1), 30):
5 for y in range(20, (60+1), 20):
6 z = F(x, y)
7 print(f"{x:8.2f} {y:8.2f} {z:8.2f}")
Observe que o programa fez uma chamada à função F, que realiza o cálculo da função matemática
f(x, y), definida como:
f(x, y) =

x2 + 2y − 3 se −∞ < x ≤ 10
sen(2x) ∗ cos(4x) se 10 < x ≤ 40
1/x−2 + y1/2 se 40 < x ≤ 80
(x+ y)/(x− y) se 80 < x ≤ 100
π se 100 < x ≤ ∞
Você deve implementar a função F, para que o programa fique completo e execute sem erros. A
função recebe os valores de x e y, como argumentos de entrada, e retorna o valor da função f(x, y).
Exemplo 1:
x y f(x, y)
−30.00 20.00 937.00
−30.00 40.00 977.00
−30.00 60.00 1017.00
0.00 20.00 37.00
0.00 40.00 77.00
0.00 60.00 117.00
30.00 20.00 0.03
30.00 40.00 0.30
30.00 60.00 −0.10
60.00 20.00 3604.47
60.00 40.00 3606.32
60.00 60.00 3607.75
90.00 20.00 1.57
90.00 40.00 2.60
90.00 60.00 5.00
40
Questão 6.3 (2014-1)
A distância entre dois pontos, A e B, no plano cartesiano pode ser dada pela fórmula:
distância =
√
(XB −XA)2 + (YB − YA)2
onde: (XA, YA) e (XB, YB) são as coordenadas dos pontos A e B, respectivamente.
Implemente um programa principal e uma função distPontos, onde:
• o programa principal faz a leitura das coordenadas dos pontos A e B, ou seja, os valores de XA ,
YA , XB e YB;
• o programa principal faz a chamada a função distPontos, que recebe como entrada os valores
das quatro coordenadas lidas e retorna o valor numérico da distância calculada;
• o programa principal faz a impressão do valor da distância retornado pela função.
Exemplo 1:
Cálculo da distância entre dois pontos
Informe XA: 1
Informe YA: 1
Informe XB: 4
informe YB: 5
Distância entre (1, 1) e (4, 5) : 5
Questão 6.4 (2015-2)
Defina uma função para calcular o valor final de um investimento de capital. A função deve ter
como argumentos de entrada o valor do capital investido (C), a taxa de juros anual (j), o número de
anos (a) durante os quais o capital permanecerá investido e a taxa de imposto que incidirá sobre o
rendimento (ir); e deve retornar como resultado o valor do montante final (VF) do investimento, já
descontado o imposto de renda. As fórmulas envolvidas para os cálculos da função são:
V = C × (1 + j)a
VF = V − (V − C)× ir
Implemente um programa para ler do teclado um valor de capital a ser investido, a taxa anual de
juros, o número de anos programado para o investimento e a taxa de imposto. O programa deverá cal-
cular e imprimir o valor final resultante do investimento, utilizando a função definida anteriormente.
Além disso, deverá calcular e imprimir o percentual de lucro líquido, dado pela fórmula:
L = (VF − C)/C × 100
Exemplo 1:
Capital a ser investido: 10000.00
Taxa de juros anual do investimento: 0.07
Número de anos do investimento: 10
Imposto sobre o lucro: 0.15
Valor final = 18220.79
Percentual de lucro líquido = 82.21%
41
Questão 6.5 (2016-2)
O quociente e o resto da divisão inteira de dois números inteiros positivos, A e B, podem ser calcu-
lados por operações sucessivas de subtração. Por exemplo, se A = 17 e B = 3, a divisão de A por B
seria calculada do seguinte modo:
• 1a subtração: 17 - 3 = 14
• 2a subtração: 14 - 3 = 11
• 3a subtração: 11 - 3 = 8
• 4a subtração: 8 - 3 = 5
• 5a subtração: 5 - 3 = 2
O quociente da divisão é o número de vezes que foi realizada a subtração de B, neste caso, 5 vezes.
Note que a subtração de B é repetida enquanto o resultado obtido é maior ou igual ao valor de B. O
resto da divisão é o resultado obtido na última subtração.
Escreva uma função chamada DivSub, que receba dois números inteiros (A e B), como argumentos
de entrada, e retorne o quociente e o resto da divisão inteira de A por B, calculados conforme a
estratégia explicada anteriormente.
Escreva também um programa principal, que leia dois valores inteiros A e B, verifique se os valores
lidos são positivos e, em caso afirmativo, imprima o quociente e o resto da divisão de A por B, usando
os valores retornados por uma chamada à função DivSub. Caso os valores lidos não sejam positivos, o
programa deve imprimir uma mensagem, tal como mostrado a seguir.
Exemplo 1:
Digite o valor de A: 3
Digite o valor de B: −6
ERRO: Valor(es) inválido(s)
Exemplo 2:
Digiteo valor de A: 17
Digite o valor de B: 3
17 dividido por 3: quociente = 5, resto = 2
42
Questão 6.6 (2018-1)
Escreva um programa principal que execute os seguintes passos:
1. leia um número inteiro pelo teclado. Se o número for maior do que 0 (zero), os passos abaixo
são executados. Caso contrário, o programa é encerrado;
2. chame uma função PRIMO com o número lido. A função retorna True se o número for primo e
False caso contrário. Você também deve implementar a função PRIMO;
3. imprime uma mensagem indicando se o número é, ou não é, primo;
4. Volte ao passo 1.
OBS: um número natural é primo quando ele somente é dividido por um e por ele mesmo.
Exemplo 1:
Digite um número: 1
O número 1 é primo.
Digite um número: 2
O número 2 é primo.
Digite um número: 3
O número 3 é primo.
Digite um número: 4
O número 4 não é primo.
Digite um número: 11
O número 11 é primo.
Digite um número: 15
O número 15 não é primo.
Digite um número: 47
O número 47 é primo.
Digite um número: 0
Questão 6.7 (2016-1)
O K-fatorial de um número natural N é uma generalização do fatorial, definido como:
N × (N −K)× (N − 2K)× (N − 3K)× ...
onde: o produto é feito enquanto o resultado da diferença é maior ou igual a 1, ou seja, somente
fatores maiores ou iguais a 1 são incluídos no produto.
Observe que o fatorial de N, que é definido como:
N ! = N × (N − 1)× (N − 2)× ...
corresponde ao K-fatorial de N, para K=1.
Implemente uma função chamada fatNK, que receba dois números inteiros N e K, como argumentos
de entrada, e retorne o K-fatorial de N.
Escreva também um programa principal que faça a leitura dos dois números N e K, realize uma
chamada à função para calcular o k-fatorial de N, e imprima o resultado retornado, tal como nos
exemplos de execução a seguir.
43
Exemplo 1:
Digite o valor de N: 10
Digite o valor de K: 3
Resposta = 280
Exemplo 2:
Digite o valor de N: 21
Digite o valor de K: 19
Resposta = 42
Exemplo 3:
Digite o valor de N: 21
Digite o valor de K: 30
Resposta = 21
Exemplo 4:
Digite o valor de N: 8
Digite o valor de K: 1
Resposta = 40320
44
7
MÓDULO
Estruturas Homogêneas
Questão 7.1 (adaptado de 2014-1)
Escreva um programa para calcular e imprimir dados relativos à temperatura em Ouro Preto. Con-
sidere que, no início do programa, seja feita leitura das temperaturas, através de uma string com os
valores separados por vírgula, como por exemplo: “14.8, 15.6, 13.5, 11.6, 17.2, 12.8, 14.6, 16.2, 14.3,
13.6, 12.2, 11.4, 10.6, 15.6, 16.3, 15.9, 16.7, 14.6, 12.7, 18.3, 13.9, 15.7, 17.3, 15.4, 14.7, 13.3, 12.5,
11.7, 16.7, 17.4”, representando as leituras diárias feitas ao longo de um mês, em sequência.
Seu programa deve preencher um vetor contendo as temperaturas lidas na string, calcular e imprimir
os seguintes dados:
1. O dia mais quente do mês e a temperatura neste dia;
2. O dia mais frio do mês e a temperatura neste dia;
3. Quantos e quais dias tiveram temperaturas acima de 17 graus.
Exemplo 1:
Informe as temperaturas: 14.8, 15.6, 13.5, 11.6, 17.2, 12.8, 14.6,
16.2, 14.3, 13.6, 12.2, 11.4, 10.6, 15.6, 16.3, 15.9, 16.7, 14.6,
12.7, 18.3, 13.9, 15.7, 17.3, 15.4, 14.7, 13.3, 12.5, 11.7, 16.7,
17.4
O dia 20 foi o mais quente do mês, com uma temperatura de 18.3 graus
O dia 13 foi o mais frio do mês, com uma temperatura de 10.6 graus
A temperatura ficou acima de 17 graus em 4 dias: 5 20 23 30
45
Questão 7.2 (adaptado de 2013-2)
Um time de basquete possui 10 jogadores. A pontuação que cada um dos jogadores alcançou em
uma partida fica armazenada em um vetor. Considere, por exemplo, os vetores abaixo:
Partida1 = [22, 14, 26, 18, 17, 32, 26, 10, 21, 28]
Partida2 = [20, 16, 18, 20, 24, 22, 24, 20, 12, 16]
Desta forma, o terceiro jogador 26 pontos na partida 1 e 18 pontos na partida 2; o primeiro jogador
fez 22 pontos na partida 1; e o décimo jogador fez 16 pontos na partida 2.
Escreva um programa para ler as pontuações nas duas partidas (duas strings contendo os valores de
cada partida) e determinar os jogadores que melhoraram suas pontuações na segunda partida. Por
exemplo, o segundo jogador melhorou sua pontuação em 2 pontos, (16-14). Sempre teremos pelo
menos um jogador que melhorou sua pontuação. O programa também calcula a média de pontos de
todos os jogadores da segunda partida, ou seja, soma todas as pontuações e divide pelo número de
jogadores.
Exemplo 1:
Partida 1: 22, 14, 26, 18, 17, 32, 26, 10, 21, 28
Partida 2: 20, 16, 18, 20, 24, 22, 24, 20, 12, 16
Acréscimo de pontuação:
O jogador 2 fez 2 pontos a mais
O jogador 4 fez 2 pontos a mais
O jogador 5 fez 7 pontos a mais
O jogador 8 fez 10 pontos a mais
Média de pontos da partida 2: 19.20
Questão 7.3 (adaptado de 2017-1)
Escreva um programa que receba dois vetores como entrada do usuário (através de duas strings
contendo todos os elementos de cada vetor, separados por vírgula): o primeiro contendo os nomes
dos alunos e o segundo contendo as notas destes alunos. Os dois vetores possuem o mesmo número de
elementos e cada índice relaciona um aluno e sua nota, ou seja, para cada posição i, nota(i) contém
a nota do aluno cujo nome está em nome(i). Por exemplo, o nome do primeiro aluno encontra-se em
nomes(0) e sua respectiva nota em notas(0). Não é necessário validar a entrada: considere que os
dados estejam corretos.
O programa deve imprimir no terminal os nomes dos alunos aprovados e a média das notas destes
alunos (com 2 casas decimais), e, em seguida os nomes e notas dos alunos reprovados.
Exemplo 1:
Nomes: Joao, Luis, Ana, Lucas, Maria
Notas: 8, 5, 9, 6, 4
Aprovados:
− Joao, nota 8
− Ana, nota 9
− Lucas, nota 6
= Média: 7.67
Reprovados:
46
− Luis, nota 5
− Maria, nota 4
Exemplo 2:
Nomes: Joao, Pedro
Notas: 8, 9
Aprovados:
− Joao, nota 8
− Pedro, nota 9
= Média: 8.50
Reprovados:
Exemplo 3:
Nomes: Carlos, José
Notas: 4, 4
Aprovados:
Reprovados:
Carlos, nota 4
José, nota 4
Questão 7.4 (2013-2)
Escreva um programa que leia o número de alunos de uma turma e, para cada aluno, seu número de
matrícula e sua idade (ambos valores inteiros). Os dados devem ser armazenados em 2 vetores: um
vetor para as matrículas e outro para as idades. O programa deve imprimir o número de matrícula de
todos os alunos que possuem idade de pelo menos 5 anos a mais do que a idade média da turma.
Exemplo 1:
Número de alunos: 4
Matrícula: 2012001
Idade: 18
Matrícula: 2012002
Idade: 45
Matrícula: 2012004
Idade: 19
Matrícula: 2012003
Idade: 30
Matrícula dos alunos com idade 5 anos ou mais além da média
2012002
47
Questão 7.5 (2015-2)
A tabela a seguir exemplifica os dados de emissão de CO2 de 7 países em toneladas per capita no
ano de 2011:
País Canada Brasil EUA Rússia Índia Japão China
Emissão 14.07 2.23 16.85 12.60 1.70 9.33 6.60
Considere um programa que lê uma tabela, análoga ao exemplo anterior, através de duas strings,
uma contendo todos os valores da linha de países e outra contendo todos os valores da linha de
emissão. Os valores são separados por vírgulas. Estas strings são usadas para preencher dois vetores,
ambos contendo n valores, relacionados pelos seus índices. Em seguida calcula e imprima as seguintes
informações:
1. a média de emissão de CO2 dos n países;
2. o nome do país com a maior emissão de CO2 e seu respectivo valor.
Exemplo 1:
Países: Canada, Brasil, EUA, Rússia, Índia, Japão, China
Emissões: 14.07, 2.23, 16.85, 12.6, 1.7, 9.33, 6.6
Emissão média: 9.054
Maior emissor: EUA (16.85)
Questão 7.6 (2017-2)
A Dona Marina é uma confeiteira muito conhecida em sua cidade e contrata revendedores para
vender seus bolinhos em grandes eventos populares. Há apenas dois produtos comercializados, o
bolinho e uma caixinha de suco. Ela deseja premiar o vendedor que lhe proporciona o maior lucro.
Para isso, ela encomendou um programa em que ela possa fornecer a quantidade de vendas de bolinho
e a quantidade de vendas de suco realizadas por cada um dos revendedores e o lucro com cada um dos
produtos. Considere que as quantidades de vendas deverão ser armazenadasem vetores, diretamente
definidos a partir de entradas do usuário. Seu programa deve criar um outro vetor contendo o lucro
obtido por cada revendedor e obter aquele que conseguiu o maior valor, conforme o exemplo a seguir.
Considere também que sempre haverá um vencedor único, ou seja, não é necessário verificar se houve
empate.
Exemplo 1:
Bolinhos: 5, 2, 3, 10, 8
Suco: 7, 3, 2, 8, 10
Lucro com bolinho: 4.5
Lucro com suco: 2.8
O lucro dos vendedores foi:
1: 42.10
2: 17.40
3: 19.10
4: 67.40
48
5: 64.00
O vendedor premiado foi o 4
Questão 7.7 (2017-2)
A CEMIG está treinando um novo funcionário para realizar as leituras de consumo residencial de
energia. Esse funcionário percorreu um roteiro pré-estabelecido e registrou o consumo das residências.
Outro funcionário, mais experiente, veio logo atrás fazendo a leitura das mesmas residências, na
mesma ordem. Os resultados obtidos pelos dois foram armazenados em dois vetores, um para cada
funcionário, e são fornecidos através de duas entradas de dados pelo usuário.
Escreva um programa para calcular os valores absolutos das diferenças entre as leituras dos dois
funcionários e armazená-las em outro vetor, determinando também a média dos valores armazenados
no novo vetor e imprimindo os resultados na tela com 2 casas decimais, conforme o exemplo a seguir.
Exemplo 1:
Leituras do primeiro funcionário.: 1, 2, 4, 5, 6
Leituras do Segundo funcionário..: 3, 2, 5, 3, 7
As diferenças observadas são: [ 2, 0, 1, 2, 1 ]
Média das diferenças observadas: 1.20
Questão 7.8 (2013-2)
A transposta de uma matriz A, de dimensão m×n, é uma matriz AT, de dimensão n×m, onde cada
linha de AT é a coluna de número correspondente de A, e vice versa. Por exemplo:
A =
3 8 10 4 9
5 6 0
 , AT =
3 0 58 4 6
1 9 0

Implemente um programa para ler uma matriz e calcular e imprimir a transposta dessa matriz, tal
como mostrado no exemplo de execução a seguir. O programa deve calcular a matriz transposta
usando comandos de repetição aninhados.
Exemplo 1:
Digite a matriz: 1, 2, 3; 4, 5, 6
Matriz transposta:
1 4
2 5
3 6
49
Questão 7.9 (2014-1)
O traço de uma matriz quadrada A, de dimensão n × n, é a soma dos elementos de sua diagonal
principal, ou seja:
traço(A) =
n∑
i=1
ai,i
Implemente um programa que defina uma matriz quadrada A, de valores reais, através de uma
entrada do usuário.
Complete o programa para:
1. criar e imprimir um vetor constituído pelos elementos da diagonal principal de A;
2. calcular e imprimir o traço da matriz (com precisão de 2 casas decimais);
3. determinar o número de elementos fora da diagonal principal que são nulos.
Exemplo 1:
Digite a matriz A: 2.5, 0.23, 0; 0, 3.82, 4; 0, 18, 0
Vetor da diagonal: [ 2.5, 3.82, 0.0 ]
Traço(A) = 6.32
Elementos nulos fora da diagonal principal: 3
Questão 7.10 (2014-2)
Uma matriz triangular superior é uma matriz quadrada onde todos os elementos abaixo da diagonal
principal são nulos (com valor zero), conforme ilustrado a seguir:
2 3 8 9
0 1 4 6
0 0 2 1
0 0 0 8

Implemente um programa que leia uma matriz quadrada (de números inteiros), tal como mostrado
no exemplo a seguir, e indique se ela é uma matriz triangular superior ou não. O programa deve
também imprimir a dimensão da matriz lida. Não é necessário verificar se a matriz lida é uma matriz
quadrada.
Exemplo 1:
Digite a matriz: 2, 3, 8, 9; 0, 1, 4, 6; 0, 0, 2, 1; 0, 0, 0, 8
Dimensão da matriz: 4x4
A matriz é triangular superior
Exemplo 2:
Digite a matriz: 1, 1, 1; 1, 0, 1; 0, 0, 1
Dimensão da matriz: 3x3
A matriz não é triangular superior
50
Questão 7.11 (2016-1)
A tabela a seguir mostra os resultados dos últimos n jogos entre Cruzeiro e Atlético.
Atlético Cruzeiro
0 0
1 0
1 0
3 1
3 1
1 1
2 3
1 3
3 2
1 5
Implemente um programa que leia uma matriz com n linhas e 2 colunas representando a tabela
de placares dos jogos entre os dois times, onde a primeira coluna representa o Atlético e a segunda
coluna representa o Cruzeiro. O programa deve calcular a quantidade de vitórias e de empates de
cada time. Também, o programa imprime qual é o melhor time, de acordo com o número de vitórias,
ou se os times empataram neste quesito. A leitura da matriz deve ser realizada com a entrada de todos
os elementos de uma única vez. As impressões seguem os exemplos de execução apresentados.
Exemplo 1:
Matriz de jogos: 0, 0; 1, 0; 0, 1; 1, 3; 3, 1; 1, 1; 2, 3; 1, 3; 3,2;
1, 5
Vitórias do Atlético: 3
Vitórias do Cruzeiro: 5
Empates nos jogos : 2
O Cruzeiro é o melhor time
Exemplo 2:
Matriz de jogos: 0, 0; 1, 0; 0, 1; 1, 0; 3, 1; 1, 1; 2, 0; 1, 3; 3, 2;
1, 5
Vitórias do Atlético: 5
Vitórias do Cruzeiro: 3
Empates nos jogos : 2
O Atlético é o melhor time
Exemplo 3:
Matriz de jogos: 0, 0; 1, 1; 0, 1; 1, 0; 1, 1; 1, 1; 2, 0; 3, 3; 2, 2;
1, 5
Vitórias do Atlético: 2
Vitórias do Cruzeiro: 2
Empates nos jogos : 6
Os times tiveram a mesma quantidade de vitórias
51
Questão 7.12 (2013-2)
Saber da existência de caminho entre duas cidades é uma tarefa fácil para seres humanos, podendo
ser realizada com uma simples consulta visual a um mapa. Porém, quando levamos este problema
para o mundo computacional precisamos representá-lo de outra forma. Uma forma de fazer tal repre-
sentação é: utilizando uma matriz, consideramos que os índices da matriz representam as cidades e
cada elemento de uma entrada (i, j) da matriz representa se há caminho (valor 1) ou não há caminho
(valor 0) entre as cidades de números i e j.
i \ j 1 2 3 4
1 0 1 1 0
2 1 0 1 0
3 1 1 0 1
4 0 0 1 0
Implemente um programa que faça a leitura da matriz, que contém as informações sobre as conexões
entre as cidades, tal como no exemplo anterior e, para cada cidade, imprima o número de cidades
às quais ela está conectada e quais são as cidades conectadas a ela. Para isto, você deverá criar
uma função chamada ProcessaCidade, que recebe um vetor com as informações da cidade como
argumento de entrada (a linha da matriz que representa a cidade), e gera a saída para esta cidade no
terminal. Por exemplo, o texto de saída da cidade 1 (“A cidade 1 está conectada a outras 2 cidades:
2, 3”) será gerado pela chamada da função quando i = 0: ProcessaCidade(matriz[i]), a da cidade
2, quando i = 1, e assim por diante. A função imprime a mensagem no terminal e não retorna valor.
Note que o número de cidades depende da dimensão da matriz.
Exemplo 1:
Matriz: 0, 1, 1, 0; 1, 0, 1, 0; 1, 1, 0, 1; 0, 0, 1, 0
A cidade 1 está conectada a outras 2 cidades: 2, 3
A cidade 2 está conectada a outras 2 cidades: 1, 3
A cidade 3 está conectada a outras 3 cidades: 1, 2, 4
A cidade 4 está conectada a outras 1 cidades: 3
Questão 7.13 (2013-2)
Implemente um programa para determinar e imprimir os ganhadores de um concurso da Mega
Sena. Cada aposta da Mega Sena consiste em 6 números inteiros distintos, no intervalo de 1 a 60.
As apostas do concurso são definidas em matriz fornecida como entrada pelo usuários (em uma única
string), onde cada linha representa uma aposta, e as suas 6 colunas representam os números da aposta.
O resultado do sorteio é definido em um vetor fornecido como entrada pelo usuário (também em uma
única string), onde os 6 elementos constituem os números sorteados. Considere que as entradas das
apostas e dos resultados contém os números em ordem crescente.
Seja a matriz apostas a seguir: 
19 24 25 28 42 58
19 20 25 28 30 58
20 21 22 30 40 51
19 24 25 28 42 58
10 24 25 28 42 47

52
E considerando também o vetor sorteados a seguir:[
19 24 25 28 42 58
]
Observa-se que as apostas 1 e 4 foram as ganhadoras, pois comparando cada número sorteado com
o seu correspondentes em cada aposta, apenas para estas duas apostas todos eles são iguais entre si.
Seu programa deve determinar os ganhadores de um concurso da Mega Sena. Caso não exista
nenhum ganhador, o programa deve imprimir uma mensagem informando que não houve ganhador e
que o prêmio será acumulado. Caso existam ganhadores, o programa deve imprimir os números das

Outros materiais