Simulado de Prova (P1)
Este é um simulado de P1 para a disciplina Algoritmos e Técnicas de Programação:
Comece pensando:
-Que variáveis precisarei?
-Que tipo de dado será guardado ali?
-Precisarei tomar decisões?
-Precisarei repetir algo? Quantos passos terá a repetição?
1) Faça um algoritmo em Python que calcule o fatorial de um digitado:
1! = 1
2! = 1*2 = 2
3! = 1*2*3 = 6
4! = 1*2*3*4 = 24
5! = 1*2*3*4*5 = 120
n! = 1*2*3*4*5*6*7*8*9* .....*(n-2)*(n-1)*n
2) Crie um algoritmo em Python que peça o valor do salário bruto e que calcule os descontos devidos, juntamente com o salário líquido, de acordo com as regras:
a) todos têm desconto de 8% do sal. bruto, referente ao INSS;
b) salários brutos acima de 7000,00 pagam 22% de imposto de renda; entre 4000,00 e 7000,00 pagam 15%; entre 2000,00 e 3999,99 pagam 7%; abaixo de 2000,00 estão isentos.
Casos de teste:
INSS = 0.08*1500 = 120
Sal. Líq = 1500 - 120 = 1380
-Alguém que ganhe 3000,00 brutos:
INSS = 0.08*3000 = 240
IR = 0.07*3000 = 210
Sal. Líq = 3000 - 240 - 210 = 2550
-Alguém que ganhe 10000,00 brutos:
INSS = 0.08*10000 = 800
IR = 0.22*10000 = 2200
Sal. Líq = 10000 - 800 - 2200 = 7000
3) Faça um algoritmo em Python que leia um número inteiro e mostre todos os seus divisores. Exs.:
1 -> 10%1==0 ?? Sim
2 -> 10%2==0 ?? Sim
3 -> 10%3==0 ?? Não
4 -> 10%4==0 ?? Não
5 -> 10%5==0 ?? Sim
6 -> 10%6==0 ?? Não
7 -> 10%7==0 ?? Não
8 -> 10%8==0 ?? Não
9 -> 10%9==0 ?? Não
10 -> 10%10==0 ?? Sim
Assim,
-10: 1, 2, 5, 10
-100: 1, 2, 4, 5, 10, 20, 50, 100
-49: 1, 7, 49
-121: 1, 11, 121
-45: 1, 3, 5, 15, 45
-400: 1, 2, 4, 5, 8, 10, 20, 40, 50, 100, 200, 400
-7: 1, 7
-11: 1, 11
-13: 1, 13
-1: 1
4) Faça um algoritmo em Python que descubra se um número é ou não é PRIMO. Um número primo é definido como tendo exatamente 2 divisores; assim, use o exercício anterior para lhe ajudar!! Exs.:
-49: Não é primo
-121: Não é primo
-45: Não é primo
-400: Não é primo
-7: É primo
-11: É primo
-13: É primo
-1: Não é primo (só tem 1 divisor, e não 2!!!)
5) Crie um algoritmo em Python que mostre quantas vezes o menor valor de uma lista aparece nela. Ex.:
L = [4, 6, 2, 8, 9, 1, 4, 1, 5, 7, 2, 1] -> o menor elemento (1) aparece 3 vezes
L = [4, 6, 2, 8, 9, 2, 4, 3, 2, 5, 7, 2, 7] -> o menor elemento (2) aparece 4 vezes
6) Crie um algolritmo em Python que diga se uma lista é ou não uma palíndrome, ou seja, se ela lida da esquerda para direita é idêntica se lida da direita para a esquerda. Ex.:
L = [1, 2, 3] -> NÃO é palíndrome porque 1, 2, 3 é diferente de 3, 2, 1
L = ['A', 'R', 'A', 'R', 'A'] -> É palíndrome porque 'A', 'R', 'A', 'R', 'A' é igual a 'A', 'R', 'A', 'R', 'A'
L = [2, 1, 2] -> É palíndrome porque 2, 1, 2 é igual a 2, 1, 2
7) O departamento de meteorologia da prefeitura monitora a quantidade de chuvas todo dia e uma lista é gerada com os valores destas quantidades. Emita um alerta se houver algum valor maior que 3 vezes a média (o que indicaria um desastre!!). Exs.:
L = [10, 15, 20] - > sem alerta
L = [0, 0, 0, 0, 100] -> Alerta!!
8) Escreva um programa que calcule a redução de tempo de vida de um fumante a partir do número de cigarros. Pergunte quantos cigarros ele fuma por dia e há quantos anos fuma. Imprima o tempo de vida perdido em dias. Considere que um cigarro rouba 10 minutos de expectativa de vida.
Requerimento:
* Pergunte quantos cigarros ele fuma por dia;
* Pergunte há quantos anos fuma;
* Calcule o tempo de vida perdido em dias;
* O valor de saída deve ser definido com 1 casa decimal.
Exemplos de saída:
Exemplo 1:
`Digite quantos cigarros você fuma por dia: 10`
`Digite há quantos anos fuma: 20`
`O tempo de vida perdido em dias: 506.9`
Exemplo 2:
`Digite quantos cigarros você fuma por dia: 30`
`Digite há quantos anos fuma: 15`
`O tempo de vida perdido em dias: 1140.6`
9) Escreva um programa que pergunta a distância que um passageiro deseja percorrer em km. Seu programa deve imprimir o preço da passagem, cobrando 50 centavos por quilômetro para viagens de até 200km e 45 centavos por quilômetro extra para viagens mais longas.
Requerimento:
* Pergunte a distância que um passageiro deseja percorrer em km;
* Calcule o preço da passagem;
* Os valores de saída devem ser definidos com 2 casas decimais.
Exemplos de saída:
Exemplo 1:
`Digite a distância que deseja percorrer: 100`
`O preço da passagem é: R$ 50.00`
Exemplo 2:
`Digite a distância que deseja percorrer: 300`
`O preço da passagem é: R$ 145.00`
10) Faça um programa que recebe 11 números (importante: são 11 variáveis diferentes), representando os dígitos de um CPF, e imprime **Válido** se o CPF for válido ou **Inválido** caso contrário. Por exemplo, se o CPF for 529.982.247-25, os argumentos da sua função serão os números 5, 2, 9, 9, 8, 2, 2, 4, 7, 2, 5, nesta ordem. Os dois últimos dígitos são chamados de dígitos verificadores. Para considerar um CPF como válido, é necessário considerar as regras a seguir:
- Se todos os dígitos forem iguais, o CPF é inválido.
- O primeiro dígito verificador (a penúltima variável) deve ser igual ao resultado da operação a seguir. Multiplique os 9 primeiros dígitos pela sequência decrescente de 10 até 2, some os resultados, multiplique por 10 e então calcule o resto da divisão desse número por 11 e depois o resto da divisão desse resultado por 10.
- O segundo dígito verificador (a última variável) deve ser igual ao resultado da operação a seguir. Multiplique os 10 primeiros dígitos pela sequência decrescente de 11 até 2, some os resultados, multiplique por 10 e então calcule o resto da divisão desse número por 11 e depois o resto da divisão desse resultado por 10.
Exemplos:
- Verificação do primeiro dígito do exemplo acima: 5 x 10 + 2 x 9 + 9 x 8 + 9 x 7 + 8 x 6 + 2 x 5 + 2 x 4 + 4 x 3 + 7 x 2 = 295. Multiplicando esse valor por 10, obtemos 2950. O resto da divisão de 2950 por 11 é 2 e o resto da divisão de 2 por 10 é 2. Portanto o primeiro dígito verificador está correto.
- Para o segundo dígito verificador do exemplo acima, temos: 5 x 11 + 2 x 10 + 9 x 9 + 9 x 8 + 8 x 7 + 2 x 6 + 2 x 5 + 4 x 4 + 7 x 3 + 2 x 2 = 347. Multiplicando por 10, obtemos 3470, o resto da divisão de 3470 por 11 é 5 e o resto da divisão de 5 por 10 é 5. Portanto o segundo dígito verificador também está correto.
A seguir apresentamos alguns outros exemplos:
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1: inválido
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2: inválido
- Todos os outros casos com todos os dígitos iguais: inválidos
- 5, 2, 9, 9, 8, 2, 2, 4, 7, 3, 5: inválido, pois vimos que o primeiro dígito verificador deveria ser 2
- 5, 2, 9, 9, 8, 2, 2, 4, 7, 2, 4: inválido, pois vimos que o primeiro dígito verificador deveria ser 5
- 5, 2, 9, 9, 8, 2, 2, 4, 7, 2, 5: válido
- Teste também com o seu próprio CPF
11) Faça um programa em Python que valide uma data no formato dia, mês e ano. Leve em consideração quantos dias tem cada mês e também anos bissextos.
Exemplos:
32/01/2024: inválida (dia inexistente)
29/02/2023: inválida (dia inexistente, pois 2023 não é ano bissexto)
31/11/2024: inválida (dia inexistente, porque novembro não tem 31 dias)
10/20/2025: inválida (mês inexistente)
29/02/2024: válida
21/03/2024: válida
12) Faça um algoritmo em Python que calcule a soma da seguinte série, onde N é um valor digitado pelo usuário (acredite que é um número múltiplo de 10). Use repetição!
1/10 + 1/100 + 1/1000 + 1/10000 + ... + 1/N
Exemplo (N digitado foi 1000):
1/10 + 1/100 + 1/1000 = 0,1 + 0,01 + 0,001 = 0,111
13) Faça um algoritmo em Python que, dada uma lista de números inteiros, crie três listas:
menores que 10
entre 10 e 20 (inclusive)
maiores que 20
Exemplo:
Entrada: [5, 10, 15, 25, 8]
Saída:
14) Faça um algoritmo em Python que verifique se uma lista está em ordem estritamente crescente.
Exemplos:
Entrada: [1, 2, 3, 4] → True
Entrada: [1, 2, 2, 3] → False (a lista não é estritamente crescente se existirem elementos iguais: 2 e 2)
Entrada: [5, 4, 3] → False
15) Faça um algoritmo em Python que leia a quantidade de exames que serão realizados (N), e depois os N valores numéricos que representam exames de sangue (esta parte do algoritmo já está feita). Observe que:
- Caso um valor de exame seja negativo, houve um erro e este valor deve ser ignorado
- Valores até 30 representam normalidade
- Valores acima de 30 exigem atenção
O algoritmo deverá emitir um relatório com as informações:
a) Porcentagem de erros em exames
b) Média aritmética dos resultados dos exames que exigem atenção
Exemplo:
N=10 -> Valores: -1, 10, 20, 50, -1, 30, 100, 150, 20, 15
a) Como há 2 valores negativos, a porcentagem de erros nos exames é de (2/10)*100% = 20%
b) Os resultados que exigem atenção são 3: 50, 100 e 150. Assim, a média dos resultados que exigem atenção seria: (50+100+150)/3 = 100
Repare que precisarei contar:
- a quantidade de valores negativos
- a quantidade de valores que exigem atenção
- a soma dos valores que exigem atenção
O algoritmo começa assim:
N = int(input(“Entre com a quantidade de exames: “))
exames = []
for i in range(N):
exames.append( int(input(“Entre com um exame: “)) )
# agora vem seu algoritmo
Comentários
Postar um comentário