Lista de exercícios
Universidade Técnológica do Paraná, Curitiba
IF71A/IF61A
(Fontes: Olímpiada Brasileira de Informática, prof. Ricardo Anido, prof. Bogdan)
1. Construa um algoritmo/programa que, tendo como dados de entrada
dois pontos quaisquer no plano, P(x1,y1) e P(x2,y2), escreva a distância
entre eles. A fórmula que efetua tal cálculo é:
𝑑 = √((đ‘„2 − đ‘„1)2 + (𝑩2 − 𝑩1)2 )
Para calcular a raiz quadrada utilize a função sqrt() definida na biblioteca
math.h. Para a potência utilize a função pow().
2. Faça um algoritmo/programa que leia o tempo de duração de um evento em
uma fábrica expressa em segundos e mostre-o expresso em horas, minutos
e segundos.
3. Calcule a média aritmética das 3 notas de um aluno e mostre, além do valor
da média, uma mensagem de "Aprovado", caso a média seja igual ou
superior a 6, ou a mensagem "reprovado", caso contrário.
4. O cardápio de uma lanchonete é o seguinte:
Código
Descrição
Preço Unitário
100
Cachorro quente
1,10
101
Bauru simples
1,30
102
Bauru c/ ovo
1,50
103
Hamburger
1,10
104
Cheeseburger
1,30
105
Refrigerante
1,00
106
Suco
2,00
Escreva um algoritmo/programa que leia o código do item pedido, a quantidade e
calcule o valor a ser pago por aquele lanche. Considere que a cada execução
somente será calculado um item.
5. Agora altere o algoritmo/programa anterior para que agora o usuário
também possa selecionar diversos produtos.
6. Escreva um algoritmo/programa que receba a velocidade máxima em uma
avenida e a velocidade com que um motorista estava dirigindo nela. Calcule
a multa que o motorista vai receber, considerando que são pagos 5 reais
por cada km/h que estiver acima da velocidade permitida (considere apenas
números inteiros).
7. Escreva um algoritmo/programa que receba um número na forma CDU
(Centena Dezena Unidade) e o imprima invertido: UDC (Unidade Dezena
Centena). (Exemplo: se a entrada é 123, a saída é 321).
8. Escreva um algoritmo/programa que receba um número de conta corrente
com três dígitos e mostre o seu dígito verificador. O dígito verificador é
calculado da seguinte maneira (utilizando o número 235 como exemplo): (a)
Somar o número da conta com seu inverso. Exemplo: 235 + 532 = 767 (use
o algoritmo desenvolvido no exercício anterior); (b) Multiplicar cada dígito
pela sua ordem posicional e somar estes resultados. Exemplo: 7 (posição
1), 6 (posição 2) e 7 (posição 3): (7 x 1) + (6 x 2) + (7 x 3) = 7 + 12 + 21 =
40; (c) O último dígito desse resultado é o dígito verificador da conta.
Exemplo: 0.
9. Escreva um algoritmo/programa que informe com quantas cédulas de real
(R$) podemos representar um dado numero inteiro. Você deve utilizar o
menor número possível de notas. Exemplo de resposta: 218 = 2 cédulas de
100, 1 cédula de 10, 1 cédula de 5, 1 cédula de 2 e 1 cédula de 1.
10. Escreva um algoritmo/programa que recebe um número inteiro e diz se ele
é par ou ímpar, sem usar o operador de módulo (%) nem divisão (/).
11. Escreva um programa que recebe 3 valores e verifica se eles podem ser os
comprimentos dos lados de um triângulo. Em caso positivo, escrever uma
mensagem informando se é um triângulo isósceles, equilátero ou escaleno.
Obs.: o comprimento de um lado do triângulo é sempre menor do que a
soma dos outros dois.
12. Escreva um programa que imprima todos os números múltiplos de um dado
número n no intervalo de 1 até um dado número m.
13. Escreva um programa que calcule o fatorial de um número n dado, usando
a estrutura de repetição WHILE.
14. Os trechos de código abaixo contêm erros comuns no uso de variáveis e
funções de E/S. Identifique e explique-os.
a. int a = 10; printf(%d, a);
b. int a = 2147483647; printf("%d\n", a+1);
c. int a=3, b=2; float media = (a+b)/2; printf("%f",
media);
d. int a=3, b=c*2, c=10; printf("%d", a+b+c);
e. int a; scanf("%d", a); printf("%d", a);
f. printf("%d", 3.0, 3.5);
g. printf("%f %f %d", 3.5, 3, 3.5);
15. (Olimpíada Brasileira de Informática 2010): Para incentivar mais ainda a
economia de água, a empresa local de abastecimento de água, a
Saneamento Básico da Cidade (SBC), alterou os preços de seu
fornecimento de forma que, proporcionalmente, aqueles clientes que
consumirem menos água paguem menos pelo metro cúbico. Todo
cliente paga mensalmente uma assinatura de R$ 7, que inclui uma
franquia de 10m3 de água. Isto é, para qualquer consumo entre 0 e 10
m3, o consumidor paga a mesma quantia de R$ 7 reais (note que o valor
da assinatura deve ser pago mesmo que o consumidor não tenha
consumido água). Acima de 10 m3, cada metro cúbico subsequente tem
um valor diferente, dependendo da faixa de consumo. A SBC cobra
apenas por quantidades inteiras de metros cúbicos consumidos. A tabela
abaixo especifica o preço por metro cúbico para cada faixa de consumo:
Faixa de Consumo (m3)
Preço (por m3)
Até 10
incluído na franquia
11 a 30
R$ 1,00
31 a 100
R$ 2,00
101 em diante
R$ 5,00
Assim, por exemplo, se o consumo foi de 120 m 3, o valor da conta é: R$7
(assinatura básica) + R$20 (consumo no intervalo 11-30 m3) + R$140
(consumo no intervalo 31-100 m3) + R$ 100 (consumo no intervalo 101 –
120 m3). Logo, o valor total da conta de água é R$ 267. Tarefa: Escreva um
algoritmo/programa que, dado o consumo de uma residência em m 3, calcula
o valor da conta de água daquela residência. A entrada é composta por um
número inteiro positivo, que indica o consumo em m3.
Download

Lista de exercĂ­cios Universidade TĂ©cnolĂłgica do ParanĂĄ