Buscar

Prova com Gab - SegChamada

Prévia do material em texto

Observações gerais: 
1) Preencher os dados do cabeçalho do bloco de provas; 
2) Preencher o cabeçalho da folha de questões com o nome e a turma; 
3) Não utilizar a folha de questões como rascunho. O rascunho, se necessário, deverá ser feito nas 
folhas do caderno de prova; 
4) Ao final da prova entregar ao professor ou fiscal a folha de questões e o caderno de prova; 
5) Cada quesito vale 5 pontos. 
 
1º quesito: Fazer um programa em Pascal para: 
a) Ler do teclado um número N, no intervalo de 2 <= N <= 100, que corresponde ao tamanho da matriz 
armazenada no arquivo “MATRIZ.ARQ”. 
b) Ler do arquivo “MATRIZ.ARQ” a matriz de números reais de tamanho NxN; 
c) Calcular a norma infinita da matriz lida do arquivo; 
d) Imprimir o valor da norma na tela. 
 
A norma da matriz A é o valor máximo entre os somatórios dos valores absolutos de cada linha. O 
cálculo da norma infinita é dado por: 
 
Obs.: o aluno pode escolher se a forma de armazenamento da matriz no arquivo é binária ou texto. 
Program Quesito1; 
Type Matriz = Array[1..100,1..100] of Real; 
Var N, i, j:Integer; 
 Soma, Norma: Real; 
 Arq: File of Matriz; 
 M:Matriz; 
 
Begin 
Repeat 
 Write('Digite o valor de N: '); Readln(N); 
Until (N<2) AND (N>100); 
Assign(Arq,'MATRIZ.ARQ'); 
Reset(Arq); 
Read(Arq,M); 
Norma:=0; 
For i:=1 to N do 
 Begin 
 Soma:=0; 
 For j:=1 to N do 
 Begin 
 Soma := Soma + ABS(M[i][j]); 
 End; 
 If Soma > Norma Then 
 Norma := Soma; 
End; 
Writeln('O valor da Norma da Matriz [',N,']','[',N,']: ',Norma:4:2); 
Close(Arq); 
End. 
ÁREA II – CCEN / UFPE 
 
Disciplina: IF 165 – Computação Eletrônica – 2º Chamada 2012.1 Data: 03/07/ 2012 
 
 
Nome legível do aluno: .......................................................................................... Turma ......... 
 
2º quesito: Uma empresa de pagamentos possui 200 clientes, e quer informatizar seu banco de dados. Faça 
um programa em Pascal que: 
a) Crie um arquivo chamado ‘CLIENTES.ARQ’; 
b) Leia e salve no arquivo os seguintes dados sobre os clientes: 
 
 
Após a criação do arquivo de cadastro a empresa gostaria de fazer um levantamento dos valores pagos por 
seus clientes nos anos de 2011 e 2012. Implemente as seguintes consultas no arquivo de ‘CLIENTES.ARQ’ 
e imprima seu resultado na tela: 
c) Qual o valor pago pelos seus clientes em 08/2010? 
d) Qual o montante recebido no ano de 2011? 
e) Qual o maior pagamento de 06/2012? 
f) Quantos clientes quitaram todos os seus débitos com a empresa (Valor da dívida = R$ 0,00)? 
 
Program Quesito2; 
Type Cliente = Record 
 Nome: String[20]; 
 Nasc, Fone, MesPgto, AnoPgto: Integer; 
 ValorDiv, ValorPago: Real; 
 Ender : Record 
 Rua: String[30]; 
 Bairro: String[20]; 
 Num: Integer; 
 End; 
 End; 
Var 
 C: Cliente; 
 Arq: File of Cliente; 
 Cadastrar: Char; 
 SomaPgtos2010, SomaPgtos2011, maiorValor2012: Real; 
 nQuitados: Integer; 
Begin 
 Assign(Arq,'CLIENTES.ARQ'); 
 Rewrite(Arq); 
 Repeat 
 Write('Digite sobre o cliente o Nome, Nascimento, Fone, Rua, Bairro e Numero da casa:'); 
 Readln(C.Nome); 
 Readln(C.Nasc); 
 Readln(C.Fone); 
 Readln(C.Ender.Rua); 
 Readln(C.Ender.Bairro); 
 Readln(C.Ender.Num); 
 Write('Digite o Valor da Dívida, Valor pago, Mês e Ano do pagamento:'); 
 Readln(C.ValorDiv, C.ValorPago, C.MesPgto, C.AnoPgto); 
 Write(Arq,C); 
 Writeln('Deseja cadastrar novo cliente (S/N): '); Readln(Cadastrar); 
Dados Pessoais 
Nome Ano 
Nascimento 
Fone Endereço Valor 
Dívida 
Valor 
Pago 
Mês 
Pagto 
Ano 
Pagto 
String[20] Integer Integer Rua Bairro Número 
da Casa 
Real Real Integer Integer 
 String[30] String[20] Integer 
 Until Cadastrar='N'; 
 Close(Arq); 
 Assign(Arq,'CLIENTES.ARQ'); 
 Rewrite(Arq); 
 SomaPgtos2010 :=0; SomaPgtos2011 :=0; maiorValor2012 :=0; 
 nQuitados := 0; 
 While not EOF(Arq) do 
 Begin 
 Read(Arq,C); 
 If (C.MesPgto = 8) AND (C.AnoPgto = 2010) Then 
 SomaPgtos2010 := SomaPgtos2010 + C.ValorPago; 
 If (C.AnoPgto = 2011) Then 
 SomaPgtos2011 := SomaPgtos2011 + C.ValorPago; 
 If (C.MesPgto = 6) AND (C.AnoPgto = 2012) Then 
 If C.ValorPago > maiorValor2012 Then 
 maiorValor2012 := C.ValorPago; 
 If (C.ValorDiv = 0) Then 
 nQuitados := nQuitados + 1; 
 End; 
 Close(Arq); 
 Writeln('Valores pagos em 08/2010: ', SomaPgtos2010:4:2); 
 Writeln('Valores pagos em 2011: ', SomaPgtos2011:4:2); 
 Writeln('Maior pagamento em 06/2012: ', maiorValor2012:4:2); 
 Writeln('Quantidade de clientes que quitaram seus débitos: ', nQuitados); 
End.

Continue navegando