Buscar

Prova com Gab - 3ºEE

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 que crie um arquivo de produtos e permita a pesquisa de um 
produto solicitado pelo usuário. O programa deve criar o arquivo "PRODUTOS.DAT" para armazenar os 
dados do produto com a seguinte estrutura: 
 
Código Nome Fabricante Preço 
Inteiro Caracteres com 
30 posições 
Caracteres com 
15 posições 
Real 
 
O programa principal deve permitir cadastrar tantos produtos, quanto o usuário desejar. Para isso, sempre 
que for feito o cadastro de um novo produto, o programa deve perguntar se o usuário deseja cadastrar um 
novo produto (‘S/N’ como resposta). Caso o usuário digite ‘N’, o programa deve parar o cadastro. 
 
Após o cadastro, o programa deve perguntar ao usuário um preço limite, que será usado como argumento de 
pesquisa para localização de produtos com preço menor ou igual dentro do arquivo “PRODUTOS.DAT”. 
 
Em seguida, o programa deve exibir o número total de produtos encontrado e uma lista com "Nome" e 
"Preço" dos produtos encontrados. Caso não exista nenhum produto com preço menor ou igual ao limite 
estabelecido, deve ser impresso na tela "Não existem produtos com preço inferior ao limite estabelecido". 
 
Program Quesito1; 
Type Prod = Record Cod:Integer; 
 Nome:String[30]; 
 Fabricante:String[15]; 
 Preco:Real; 
 End; 
Var 
 produto:Prod; 
 arq: file of Prod; 
 cad: Char; 
 preco: Real; 
 nProd:Integer; 
 
Begin 
 Assign(arq,'Produtos.arq'); 
 Rewrite(arq); 
 cad := 'S'; 
 nProd := 0; 
 While cad = 'S' do 
 Begin 
 Writeln('Digite o Codigo do Produto, Nome, Fabricante e Preço:'); 
 Readln(produto.Cod); 
 Readln(produto.Nome); 
 Readln(produto.Fabricante); 
 Readln(produto.Preco); 
ÁREA II – CCEN / UFPE 
 
Disciplina: IF 165 – Computação Eletrônica – 3º Exercício Escolar 2012.1 Data: 28/06/ 2012 
 
 
Nome legível do aluno: ........................GABARITO....................................................... Turma 
 Write(arq,produto); 
 Write('Deseja Cadastrar mais um produto? (S/N): '); 
 Readln(cad); 
 End; 
 Close(arq); 
 Assign(arq,'Produtos.arq'); 
 Reset(arq); 
 Write('Preço limite para busca no arquivo: '); 
 Read(preco); 
 While not Eof(arq) Do 
 Begin 
 Read(arq,produto); 
 Writeln('Lista de produtos com preço menor ou igual a R$',preco:5:2); 
 Writeln('Nome Preço'); 
 If produto.Preco <= preco Then 
 Begin 
 Writeln(produto.Nome,' ',produto.Preco:5:2); 
 nProd := nProd+1; 
 End; 
 End; 
 If nProd = 0 Then 
 Writeln('Não existem produtos com preço inferior ao limite estabelecido.'); 
 Else 
 Writeln('Total de produtos encontrados: ',nProd); 
End. 
 
 
2º quesito: Faça um programa em Pascal que leia do teclado um inteiro N (2<= N <=100) que representa a 
quantidade de países participantes dos Jogos Olímpicos - Londres 2012. 
 
O Programa principal deve implementar a leitura de N a ser validado de forma repetitiva até que N seja 
válido. Em seguida, o programa principal deve exibir um Menu com as Opções a seguir. O programa 
principal deve ser executado até que a opção sair seja escolhida. 
Menu de Opções 
1 - Cadastrar Informações 
2 - Consultar País 
3 - Listar todas as medalhas de ouro 
4 - Sair 
Construa um procedimento chamado CADASTRO que receba como argumento N e um VETOR DE 
REGISTRO a ser utilizado para armazenar os dados de N países. As informações a serem cadastradas de 
cada país são: Código (Inteiro), Nome (String com 20 posições), Número de Medalhas de Ouro (Inteiro), 
Número de Medalhas de Prata (Inteiro) e Número de Medalhas de Bronze (Inteiro). 
 
Caso o usuário escolha a Opção 2, o programa principal deve solicitar que o usuário digite um valor para 
uma variável chamada PAÍS (String com 20 posições) e em seguida chamar uma função de nome 
CONSULTA, que recebe o VETOR DE REGISTRO, o valor de N e o PAÍS lido. A função deverá 
identificar o país procurado e retornar o número total de medalhas para ser impresso no programa principal. 
Caso não exista nenhum país com o nome informado, retornar o valor 0 através da função. 
 
Por fim, caso o usuário escolha a opção 3, chamar o procedimento LISTAR, que recebe o VETOR DE 
REGISTRO e o valor de N. O Procedimento deverá exibir a lista completa de países, imprimindo na tela o 
nome do país e a quantidade de medalhas de ouro: 
Brasil - 45 
Argentina - 23 
Rússia – 51 
 
Program Quesito2; 
Type Cad = Record 
 Cod:Integer; 
 Nome:String[20]; 
 nOuros,nPratas,nBronzes:Integer; 
 End; 
 Vet = array[1..100] of Cad; 
 
 Procedure Cadastro(var vetInf:Vet; N:Integer); 
 Var i:Integer; 
 Begin 
 For i:=1 to N do 
 Begin 
 Writeln('Digite o codigo, Nome e número de medalhas de Ouro, Prata e Bronze do País ',i); 
 Readln(vetInf[i].Cod); 
 Readln(vetInf[i].Nome); 
 Readln(vetInf[i].nOuros); 
 Readln(vetInf[i].nPratas); 
 Readln(vetInf[i].nBronzes); 
 End; 
 End; 
 Function Consulta(vetInf:Vet; N:Integer; Nome:String[20]):Integer; 
 Var i, nMedalhas:Integer; 
 Begin 
 nMedalhas:=0; 
 For i:=1 to N do 
 Begin 
 If vetInf[i].Nome = Nome Then 
 nMedalhas := vetInf[i].nOuros + vetInf[i].nPratas + vetInf[i].nBronzes; 
 End; 
 Consulta:=nMedalhas; 
 End; 
 Procedure Listar(vetInf:Vet; N:Integer); 
 Var i:Integer; 
 Begin 
 Writeln('Lista de Países'); 
 Writeln('Nome - Ouros'); 
 For i:=1 to N do 
 Begin 
 Writeln(vetInf[i].Nome, ' - ', vetInf[i].nOuros); 
 End; 
 End; 
Var 
 Pais:Cad; 
 N:Integer; 
 VetPais:Vet; 
 NomePais:String[20]; 
 Sair, nMedalhas:Integer; 
 
Begin 
 Repeat 
 Write('Digite a quantidade de países participantes das Olimpíadas 2012: '); 
 Readln(N); 
 Until (N>=2) AND (N<=100); 
 Repeat 
 Writeln('Menu de Opções:'); 
 Writeln('1 - Cadastrar Informações'); 
 Writeln('2 - Consultar País'); 
 Writeln('3 - Listar todas as medalhas de ouro'); 
 Writeln('4 - Sair'); 
 Write(' Digite sua opção: '); 
 Readln(Sair); 
 Case Sair of 
 1: Cadastro(VetPais,N); 
 2: Begin 
 Write('Digite o nome do país que deseja consultar: '); 
 Read(NomePais); 
 nMedalhas := Consulta(VetPais,N,NomePais); 
 Writeln('Numero de medalhas de ',NomePais, ' ', nMedalhas); 
 End; 
 3: Listar(VetPais,N); 
 End; 
 
 Until (Sair = 4); 
End.

Continue navegando