Buscar

t1_comp2

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

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 6, do total de 9 páginas

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 9, do total de 9 páginas

Prévia do material em texto

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:
• 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 “return”; 
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:
• adicionar uma nova pessoa;
• listar o número total de mulheres;
• listar o número total de homens;
• listar a média salarial das pessoas;
• listar o nome e salário das pessoas em ordem crescente de 
salário;
• listar a média de idade das pessoas e o nome e a idade das 
pessoas que possuem idade acima da média;
• listar o nome e o número de filhos das mulheres casadas e com 
mais de 3 filhos;
• listar o nome dos homens solteiros;
• listar o nome das mulheres com até 3 filhos e que recebem até 
R$ 500.00 de salário;
• 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:
• 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:
• __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;
• totalPessoas(self): retorna o total de mulheres ou 
homens;
• mediaSalarial(self): retorna a média salarial das 
pessoas;
• listaNomesSalarios(self): retorna uma lista contendo o 
nome e os salários das pessoas, em ordem crescente de 
salário;
• mediaIdade(self): retorna a média de idade;
• totalIdade(self): retorna o nome e a idade das pessoas 
que possuem idade acima da média;
• mulheresCasadasNumFilhos3(self): retorna o nome e o 
número de filhos das mulheres que são casadas e têm 
mais de 3 filhos;
• homensSolteiros(self): retorna o nome dos homens 
solteiros;
• mulheresNumFilhos3Sal500(self): retorna o nome das 
mulheres com até 3 filhos e que recebem até R$ 500.00 
de salário;
• 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 
“Opcao invalida” 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 “Estado civil 
invalido” 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 “Sexo invalido.” deverá ser 
impressa na tela.
5. Caso não haja pessoas cadastradas, o programa deverá 
imprimir a mensagem “Nao ha pessoas cadastradas ainda.”;
6. Faça o tratamento de exceções utilizando “try/except/raise” de 
forma a:
◦ aceitar somente números de 1 a 11 para a opção do 
menu;
◦ 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 “So aceito 
numeros” em caso de erro;
◦ aceitar idades entre 1 e 90 anos, imprimindo na tela a 
mensagem “Idade invalida” em caso de erro – utilizar 
o “raise” e criar uma classe de exceção;
◦ aceitar nomes de até 30 caracteres e não aceitar 
nomes em branco, imprimindo na tela a mensagem 
“Nome invalido” em caso de erro – utilizar o “raise” 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 “A” 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 cof33onde:
cof11 = (-1)1+1 * det(D11) onde D11 = -1 2
 2 1
cof11 = 1*(- 5) = -5
cof22 = (-1)2+2 * det(D22) onde D22 = 3 5
 0 1
cof22 = 1*3 = 3
…
Para a matriz A acima, A-1 = 0.556 -0.667 -1.444 
 0.111 -0.333 0.111
-0.222 0.667 0.778
Para implementar este programa, crie a classe MatrizInversa 
contendo os seguintes atributos e métodos:
Atributos:
• lista contendo os elementos da matriz
Métodos:
• calculaInversa(self): retorna, em forma de lista, os 
elementos da matriz inversa.
Observações:
1. O seu programa deverá ler os elementos da matriz (podendo 
ser números inteiros ou reais) até que a palavra “FIM” seja 
digitada para sair do programa;
2. O seu programa deverá ler os elementos da matriz do teclado, 
um a um, colocá-los numa lista e passá-los como parâmetro 
para o método __init__ da classe;
3. Faça o tratamento correto de exceções (utilizando “try/except”) 
de forma a só aceitar números e o “.” nos elementos da matriz, 
imprimindo na tela a mensagem “Elemento invalido” caso esta 
condição não seja satisfeita;
4. Uma matriz com determinante igual a zero não possui inversa.
Exemplo de funcionamento do programa:
Digite o elemento a11 da matriz ou FIM para sair: 3
Digite o elemento a12 da matriz ou FIM para sair: 4
Digite o elemento a13 da matriz ou FIM para sair: 5
Digite o elemento a21 da matriz ou FIM para sair: 1
Digite o elemento a22 da matriz ou FIM para sair: -1
Digite o elemento a23 da matriz ou FIM para sair: 2
Digite o elemento a31 da matriz ou FIM para sair: 0
Digite o elemento a32 da matriz ou FIM para sair: 2
Digite o elemento a33 da matriz ou FIM para sair: 1
Matriz Inversa:
0.556 -0.667 -1.444 
0.111 -0.333 0.111
-0.222 0.667 0.778
Digite o elemento a11 da matriz ou FIM para sair: lalala
 Elemento invalido.
 Digite o elemento a11 da matriz ou FIM para sair: FIM 
 Fim do programa.

Continue navegando