Buscar

TRABALHO DE AP2 COMPLETO E SEM CENSURA

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 3 páginas

Prévia do material em texto

Trabalho Prático de G1 
Valor: 2,0
	Curso: Sistemas de Informação / Ciência da Computação / Engenharia de Software
	Disciplina: Algoritmos e Programação II
	Data: 26/03/2017
	Turma:0702
	Professor: Fabiano Fagundes
	Nota: 
	Alunos: 								Nº
	
Instruções:	
Leia atentamente as questões antes de respondê-las;
A interpretação é parte essencial da avaliação;
Implemente os códigos de forma otimizada (busque sempre a melhor forma de realizar determinada tarefa);
Tenha seu estilo próprio, sem cópias.
Os nomes dos arquivos devem ser questao1.py e questao2.py. Compacte todos os arquivos em um único arquivo rar ou zip e envie para thilfa@gmail.com até as 19h do dia 26/03, com assunto [AP2-G1] Seus nomes completos
Pode ser feito em grupos de até 4 pessoas
Questão Prática 1 (valor 1,0)
Elaborar um programa para ler um gabarito com dez questões objetivas fornecido como uma string com dez caracteres relativos às alternativas corretas (cada resposta é indicada por ‘A’ ou 'a', ‘B’ ou 'b', ‘C’ ou 'c', ‘D’ ou 'd' ou ‘E’ ou 'e') . Ex.: Se for digitado "DCBEACDDEA" isto significa que as alternativas corretas são: 1a. questão 'D', 2a. 'C', 3a. 'B', etc. 
Obs. O programa deve repetir a leitura do gabarito completo se este for digitado com algum erro (p.ex., quantidade de questões ou algum caractere inválido). 
Após a leitura do gabarito, o programa lê 5 respostas de provas, também como strings, avalia e escreve a nota de cada uma delas. Cada nota é de 0 a 10 (isto é, determinada por um ponto para cada item da resposta da prova que confere com o gabarito). 
Havendo algum erro na digitação da prova a ser avaliada, o programa escreve uma mensagem informando que não pode atribuir nota por esse motivo. 
Além do programa principal, deve haver funções para:
- leitura do gabarito 
- leitura das respostas 
- avaliação das respostas 
- impressão da nota 
Questão prática 2 (valor 1,0)
Lembra que você acabou de ser contratado por uma empresa? Pois é, aquele programador continua em licença médica e você precisa dar manutenção em outro código dele.
Agora o código é para verificar a validade dos dígitos verificadores (DV) de CPF, do qual só existe a versão impressa em suas mãos.
No CPF, o DV módulo 11 corresponde ao resto da divisão por 11 do somatório da multiplicação de cada algarismo da base respectivamente por 9, 8, 7, 6, 5, 4, 3, 2, 1 e 0, a partir da unidade, conforme exemplos abaixo. O resto 10 é considerado 0. 
Veja, abaixo, exemplo de cálculo do primeiro DV módulo 11 para o CPF nº 280.012.389:
2 8 0 0 1 2 3 8 9 = 3
x x x x x x x x x
1 2 3 4 5 6 7 8 9
-------------------------
2+ 16+0+ 0+ 5+12+21+64+81 = 201÷11=18, com resto 3
Esse primeiro dígito DV calculado é usado para o cálculo do segundo DV, conforme exemplo abaixo. Porém verifique que o primeiro algarismo é agora multiplicado por zero, o segundo por um e assim sucessivamente até chegar ao dígito que foi calculado anteriormente.
2 8 0 0 1 2 3 8 9 3 = 8
x x x x x x x x x x
0 1 2 3 4 5 6 7 8 9
----------------------------
0+ 8+ 0+ 0+ 4+10+18+56+72+27 = 195÷11=17, com resto 8
Portanto, CPF+DV = 280.012.389-38
O usuário entrará com os dados no formato nnn.nnn.nnn-nn sem cometer erro na entrada dos valores.
Exemplos de CPFs válidos:
280.012.389-38
222.333.444-05
333.444.555-08
444.555.666-19
111.222.333-96
141.734.261-78
536.511.553-82
Atenção: Esta é sua tarefa!!! Deixar o programa rodando perfeitinho! E NÃO é para você refazer o programa, é para você dar manutenção nele fazendo as poucas modificações necessárias. A propósito, modificações desnecessárias tirarão pontos de sua avaliação.
Código de verificação de CPF
	def limpaCPF(cpf):
 lista1 = cpf.split('-')
 lista2 = lista1[0].split('.')
 limpa = ''.join(lista2)+lista1[1]
 return limpa
def calculaPrimeiroDigito(digitos):
 acum = 0
 for i in range(len(digitos)-2):
 acum = acum + int(digitos[i])*(i+1)
 if acum%11 == 10:
 return 0
 else:
 return acum%11
def calculaSegundoDigito(digitos):
 acum = 0
 for i in range(len(digitos)-3):
 acum = acum + int(digitos[i])*i
 acum=acum+int(digitos[-1])*9
 if acum%11 == 10:
 return 0
 else:
 return acum%11
cpf=input("Digite seu cpf: ")
cpfLimpo= limpaCPF(cpf)
primeiro = calculaPrimeiroDigito(cpfLimpo)
segundo = calculaSegundoDigito(cpfLimpo+str(primeiro))
if primeiro==cpf[-2] and segundo == cpf[-1]:
 print('O CPF ',cpf, ' é válido')
else:
 print('O CPF ',cpf, ' é inválido')

Continue navegando