Baixe o app para aproveitar ainda mais
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: Tem-se N blocos paralelepípedos definidos por suas 3 arestas a, b e c e deseja-se determinar qual (quais) deste(s) bloco(s) tem (têm) face com maior área. Para isto pede-se fazer um programa em PASCAL que siga rigorosamente as instruções abaixo: a) Ler um inteiro N (5 ≤ N ≤ 80) correspondente ao número de blocos; b) Ler para os vetores BLA, BLB e BLC os valores das arestas a, b e c dos N blocos, utilizando um procedimento LERVET a ser incluído no programa; este procedimento deve ler um vetor cada vez que é chamado; c) Construir um vetor FC, contendo os valores da área da maior face de cada bloco, utilizando um procedimento CALCF. Este procedimento deve utilizar uma função MAIOR, que receba os valores das 3 arestas de um bloco e retorne com a área da maior face; I. Obs: Para construir o vetor FC usando o procedimento CALCF, deve-se fazer uso da função MAIOR; II. Obs: Passar o vetor FC como argumento em CALCF; passar as 3 arestas como argumento para MAIOR; d) Encontrar o valor da maior área entre todas as faces do vetor FC, utilizando uma função chamada MAIOR_FACE que recebe o vetor FC como argumento. (obs: caso tenha valores iguais como maior valor, retornar qualquer um dos valores). e) Imprimir, no programa principal, o valor da maior face encontrada em (d) e a relação dos blocos (número seqüencial que os define) que têm este valor como maior face. Obs.: O programa principal deve conter os procedimentos e funções descritas abaixo, onde não deve ser utilizado variáveis globais: I. Um procedimento LERMAT para ler um vetor de elementos reais; II. Um procedimento CALCF, para construir o vetor FC, que usará a função MAIOR (também incluída no programa) para verificar o valor da maior face; III. Uma função, MAIOR_FACE para encontrar a face de maior área entre todos os blocos paralelepípedo. _____________________________________________________________________________________ 2º quesito. Em uma eleição disputada por 3 candidatos de números 1,2 e 3, os votos dos eleitores foram armazenados no arquivo VOTOS.ARQ, contendo a seguinte estrutura de registros: Título do Eleitor Número do Candidato String[15] Inteiro Obs.: os votos não válidos (nulos ou em branco) são armazenados com o número de candidato zero. Fazer um programa em PASCAL para: a) Abrir o arquivo VOTOS.ARQ; b) Ler o arquivo VOTOS.ARQ e calcular o número de votos e a percentagem de votos válidos de cada candidato; c) Gravar o arquivo RES.ARQ com a quantidade de votos e percentagem de votos de cada candidato, utilizando a seguinte estrutura: Número do Candidato Total de Votos Percentagem de Votos Válidos Inteiro Inteiro Real d) Após a gravação do arquivo, imprimir na tela o conteúdo do arquivo RES.ARQ. Obs.: a impressão deve ser feita a partir do arquivo RES.ARQ, utilizando os dados nele gravados e com os valores referentes a cada candidato impressos em linhas distintas. ____________________________________________________________________________________________ Boa sorte! UFPE – 2009.2 – Ex. esc. 3 de 3 – Prova ÁREA II – CCEN / UFPE Disciplina: IF 165 – Computação Eletrônica – 3º Exercício Escolar 2009.2 Data: 24 / 11 / 09 Nome legível do aluno: ................................................................................................ Turma ............ GABARITO 1) program blocos; procedure LERVET(var v:array of real; tam:integer); var i: integer; begin i := 0; while (i < tam) do begin write('Entre elemento ',i,': '); readln(v[i]); i := i + 1; end; end; function MAIOR(a,b,c: real):real; begin if ((a*b) >= (b*c)) and ((a*b) >= (a*c)) then begin MAIOR := (a*b); end; if ((b*c) >= (a*b)) and ((b*c) >= (a*c)) then begin MAIOR := (b*c); end; if ((a*c) >= (a*b)) and ((a*c) >= (b*c)) then begin MAIOR := (a*c); end; end; procedure CALCF(var res, a, b, c: array of real; tam:integer); var i: integer; begin i := 0; while (i < tam) do begin res[i] := MAIOR(a[i],b[i],c[i]); i := i + 1; end; end; function MAIOR_FACE(v : array of real; tam: integer):real; var i: integer; maior: real; begin i := 0; maior := v[0]; while (i < tam) do begin if (v[i] > maior) then begin maior := v[i]; end; i := i + 1; end; MAIOR_FACE := maior; end; var N, i: integer; BLA, BLB, BLC, FC: array[0..79] of real; maiorFace: real; begin N := 0; while (N < 5) or (N > 80) do begin write('Entre N (5 <= N <= 80): '); readln(N); end; writeln('Entre o vetor BLA: '); LERVET(BLA,N); writeln('Entre o vetor BLB: '); LERVET(BLB,N); writeln('Entre o vetor BLC: '); LERVET(BLC,N); CALCF(FC,BLA,BLB,BLC,N); maiorFace := MAIOR_FACE(FC,N); writeln('Maior face: ',maiorFace:5:2); i := 0; while (i < N) do begin if (FC[i] = maiorFace) then begin writeln('Bloco ',i); end; i := i+1; end; end. 2) program eleicao; type VOTO = record titulo: String[15]; candidato: integer; end; type RES = record candidato: integer; total: integer; perc: real; end; var arqVotos: file of VOTO; v: VOTO; arqRes: file of RES; r: RES; votos1, votos2, votos3: integer; begin Assign(arqVotos,'VOTOS.ARQ'); reset(arqVotos); Assign(arqRes,'RES.ARQ'); rewrite(arqRes); votos1 := 0; votos2 := 0; votos3 := 0; while (not(eof(arqVotos))) do begin read(arqVotos,v); if (v.candidato = 1) then begin votos1 := votos1 + 1; end; if (v.candidato = 2) then begin votos2 := votos2 + 1; end; if (v.candidato = 1) then begin votos3 := votos3 + 1; end; end; r.candidato := 1; r.total := votos1; r.perc := (votos1 * 100)/(votos1+votos2+votos3); write(arqRes,r); r.candidato := 2; r.total := votos2; r.perc := (votos2 * 100)/(votos1+votos2+votos3); write(arqRes,r); r.candidato := 3; r.total := votos3; r.perc := (votos3 * 100)/(votos1+votos2+votos3); write(arqRes,r); reset(arqRes); while (not(eof(arqRes))) do begin read(arqRes,r); writeln('Candidato: ',r.candidato,' Votos: ',r.total, ' Perc: ',(r.perc):5:2); end; close(arqVotos); close(arqRes); end.
Compartilhar