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.