Pré-visualização2 páginas
Trabalho 1 de Computação 2 Data de entrega: 26/10/2011 Prof(a): Bianca Ruivo O trabalho contém 2 programas a serem feitos em grupo de, no máximo, 3 pessoas. O trabalho deverá ser entregue via e-mail (bianca.ruivo@gmail.com) até a data especificada (23:59 do dia 26/10/2011), no seguinte formato: \u2022 Arquivo T1_Comp2_ET1.zip contendo os arquivos T1_1.py e T1_2.py com as resoluções dos programas 1 e 2, respectivamente, e um arquivo Grupo_T1_Comp2_ET1.txt com os nomes completos e DREs dos integrantes do grupo. Critérios de correção: Os critérios de correção a serem utilizados serão os seguintes: 1. organização e clareza do código; 2. presença de comentários em pontos do código que não estejam muito claros; 3. nomes de variáveis/funções significativos, objetivos e autoexplicativos; 4. definição de funções/métodos separada da parte de entrada de dados (programa principal) e presença do \u201creturn\u201d; 5. o programa lê os dados de entrada conforme pedido e gera a saída corretamente; 6. o programa não aborta (não interrompe a sua execução); Programa 1: Um instituto de pesquisa possui uma base de dados contendo nome, idade, sexo, estado civil, número de filhos e salário de habitantes de uma determinada região. Faça um programa que leia estes valores do teclado e faça as seguintes operações: \u2022 adicionar uma nova pessoa; \u2022 listar o número total de mulheres; \u2022 listar o número total de homens; \u2022 listar a média salarial das pessoas; \u2022 listar o nome e salário das pessoas em ordem crescente de salário; \u2022 listar a média de idade das pessoas e o nome e a idade das pessoas que possuem idade acima da média; \u2022 listar o nome e o número de filhos das mulheres casadas e com mais de 3 filhos; \u2022 listar o nome dos homens solteiros; \u2022 listar o nome das mulheres com até 3 filhos e que recebem até R$ 500.00 de salário; \u2022 listar todas as pessoas cadastradas no sistema. Cada operação descrita acima representa uma opção de um menu de opções a ser mostrado pelo programa conforme descrito abaixo: Menu de opções: Digite 1 para adicionar uma nova pessoa Digite 2 para mostrar o número total de mulheres Digite 3 para mostrar o número total de homens Digite 4 para mostrar a média salarial das pessoas Digite 5 para mostrar o nome e salário das pessoas em ordem crescente de salário Digite 6 para mostrar a média de idade das pessoas e o nome e a idade das pessoas que possuem idade acima da média Digite 7 para mostrar o nome e o número de filhos das mulheres casadas e com mais de 3 filhos Digite 8 para mostrar o nome dos homens solteiros Digite 9 para mostrar o nome das mulheres com até 3 filhos e que recebem até R$ 500.00 de salário Digite 10 para listar todos os dados de todas as pessoas Digite 11 para sair do programa Para tal, crie uma classe Pessoas contendo os seguintes atributos e métodos: Atributos: \u2022 dicionário contendo os valores recebidos por parâmetro, com o nome como chave e os demais valores como conteúdo, em forma de tupla. Métodos: \u2022 __init__(self,nome,idade,sexo,estado_civil,num_filhos,sa l): cria um dicionário contendo os valores recebidos por parâmetro, com o nome como chave e os demais valores como conteúdo, em forma de tupla; \u2022 totalPessoas(self): retorna o total de mulheres ou homens; \u2022 mediaSalarial(self): retorna a média salarial das pessoas; \u2022 listaNomesSalarios(self): retorna uma lista contendo o nome e os salários das pessoas, em ordem crescente de salário; \u2022 mediaIdade(self): retorna a média de idade; \u2022 totalIdade(self): retorna o nome e a idade das pessoas que possuem idade acima da média; \u2022 mulheresCasadasNumFilhos3(self): retorna o nome e o número de filhos das mulheres que são casadas e têm mais de 3 filhos; \u2022 homensSolteiros(self): retorna o nome dos homens solteiros; \u2022 mulheresNumFilhos3Sal500(self): retorna o nome das mulheres com até 3 filhos e que recebem até R$ 500.00 de salário; \u2022 listaPessoas(): retorna todos os dados de todas as pessoas cadastradas. Observações: 1. Os valores de nome, idade, sexo, estado civil, número de filhos e salário deverão ser lidos do teclado e passados como parâmetro para o método __init__. Utilize dicionários para armazenar os valores lidos; 2. O seu programa deverá aceitar somente os valores de 1 a 11 para a opção do menu, imprimindo na tela a mensagem \u201cOpcao invalida\u201d quando for digitada uma opção fora do intervalo especificado; 3. O seu programa deverá aceitar, como estado civil, os valores 's' para solteiro, 'c' para casado, 'v' para viúvo e 'd' para divorciado. Qualquer valor diferente dos listados deverá ser considerado como inválido e a mensagem \u201cEstado civil invalido\u201d deverá ser impressa na tela. Além disso, o número de filhos deverá ser pedido somente se a pessoa for casada. 1. 4. O seu programa deverá aceitar os valores 'f' ou 'm' para o sexo.Qualquer valor diferente destes deverá ser considerado como inválido e a mensagem \u201cSexo invalido.\u201d deverá ser impressa na tela. 5. Caso não haja pessoas cadastradas, o programa deverá imprimir a mensagem \u201cNao ha pessoas cadastradas ainda.\u201d; 6. Faça o tratamento de exceções utilizando \u201ctry/except/raise\u201d de forma a: \u25e6 aceitar somente números de 1 a 11 para a opção do menu; \u25e6 aceitar somente números para os campos idade, número de filhos e salário (neste caso, números reais), imprimindo na tela a mensagem \u201cSo aceito numeros\u201d em caso de erro; \u25e6 aceitar idades entre 1 e 90 anos, imprimindo na tela a mensagem \u201cIdade invalida\u201d em caso de erro \u2013 utilizar o \u201craise\u201d e criar uma classe de exceção; \u25e6 aceitar nomes de até 30 caracteres e não aceitar nomes em branco, imprimindo na tela a mensagem \u201cNome invalido\u201d em caso de erro \u2013 utilizar o \u201craise\u201d e criar uma classe de exceção; Exemplo do funcionamento do programa: Digite 1 para adicionar uma nova pessoa Digite 2 para mostrar o número total de mulheres Digite 3 para mostrar o número total de homens Digite 4 para mostrar a média salarial das pessoas Digite 5 para mostrar o nome e salário das pessoas em ordem crescente de salário Digite 6 para mostrar a média de idade das pessoas e o nome e a idade das pessoas que possuem idade acima da média Digite 7 para mostrar o nome e o número de filhos das mulheres casadas e com mais de 3 filhos Digite 8 para mostrar o nome dos homens solteiros Digite 9 para mostrar o nome das mulheres com até 3 filhos e que recebem até R$ 500.00 de salário Digite 10 para listar todos os dados de todas as pessoas Digite 11 para sair do programa Digite a sua opcao: 1 Digite o nome: maria Digite a idade: 24 Digite o sexo (f ou m): f Digite o estado civil (s ou c ou v ou d): c Digite o numero de filhos: 1 Digite o salario: 1000.00 Pessoa cadastrada com sucesso. Digite a sua opcao: 1 Digite o nome: joao Digite a idade: 19 Digite o sexo (f ou m): m Digite o estado civil (s ou c ou v ou d): s Digite o salario: 1500.00 Pessoa cadastrada com sucesso. Digite a sua opcao: 2 Total de mulheres = 1 Digite a sua opcao: 5 maria, 1000.00 joao, 1500.00 Digite a sua opcao: 10 maria, 24, f, c, 1, 1000.00 joao, 19, m, s, 0, 1500.00 Digite a sua opcao: llalala Opcao invalida. Digite a sua opcao: 11 Fim do programa. Programa 2: Escreva um programa para calcular a matriz inversa de uma matriz \u201cA\u201d 3 x 3 lida do teclado. O seu programa deverá ler os elementos (números reais) da matriz um a um (até que FIM seja digitado para sair do programa), verificar se a matriz é quadrada e imprimir a matriz inversa da matriz digitada a partir da fórmula abaixo: A-1 = (1 / det(A)) * (cof(A))T onde cof(A) representa a matriz dos cofatores de A, ou seja, a matriz contendo os elementos cofij = (-1)i+j * Dij onde Dij representa o determinante obtido da eliminação da linha i e da coluna j da matriz. Ex: A = 3 4 5 1 -1 2 0 2 1 cof(A) = cof11 cof12 cof13 cof21 cof22 cof23 cof31 cof32 cof33
- 1
- 2