Baixe o app para aproveitar ainda mais
Prévia do material em texto
Observações gerais: 1) Preencher os dados do cabeçalho no bloco de provas e na folha de questões o nome e a turma; 2) Ao final da prova entregar ao professor ou fiscal a folha de questões e o caderno de prova; 3) Cada quesito vale 5 pontos. 1º quesito: Faça um programa em Pascal que leia do usuário um vetor de inteiros com n posições no intervalo [5, 200]. Ler repetitivamente o valor de n até que um valor válido seja digitado pelo usuário. Após a leitura dos n valores digitados pelo usuário algumas estatísticas devem ser extraídas deste vetor: a) Imprimir na tela a Média do vetor; b) Imprimir na tela a Mediana do vetor; c) Imprimir na tela a quantidade de números ímpares e pares do vetor. Obs.: Os números reais devem ser impressos na tela com precisão de duas casas decimais; Assumir que o vetor já é digitado ordenado pelo usuário; A média aritmética simples corresponde a �̅� = 1 𝑛 ∑ 𝑥𝑖 𝑛 𝑖=1 , onde x corresponde a cada elemento do vetor com n posições. O cálculo da mediana de dados ordenados de amostras de tamanho n pode ser realizado da seguinte forma: se n for ímpar, a mediana será o elemento central 𝑛+1 2 . Se n for par, a mediana será o resultado da média simples entre os elementos 𝑛 2 e 𝑛 2 +1; Program Quesito1; var v : array[1..200] of integer; i,n, imp,par,soma : integer; media,mediana : real; begin {Leitura de n} repeat write('n='); readln(n); until (n>=5) and (n<=200); {Leitura do vetor} for i := 1 to n do begin write('v[',i,']='); readln(v[i]); end; {Inicializando os valores} soma := 0; imp := 0; par := 0; {calculo dos valores} if n mod 2 = 1 then begin mediana := v[(n+1) div 2]; ÁREA II – CCEN / UFPE Disciplina: IF 165 – Computação Eletrônica – 2º Exercício Escolar 2013.1 Data: 08/08/ 2013 Nome legível do aluno: ............................GABARITO........................................... Turma ......... end else begin mediana := (v[n div 2] + v[(n div 2) +1]) /2; end; for i:=1 to n do begin soma := soma + v[i]; if v[i] mod 2 = 1 then begin imp := imp + 1; end else begin par := par + 1; end; end; media := soma / n; {Impressao dos valores} writeln('Media=',media:5:2); writeln('Mediana=',mediana:5:2); writeln('Pares=',par:5); writeln('Impares=',imp:5); end. 2º quesito: A prefeitura de Recife fez uma pesquisa com uma amostra de 1.000 habitantes em diferentes bairros da cidade. Nesta pesquisa foram coletados dados sobre o salário dos entrevistados, a idade e o número de filhos. Estas informações serão armazenadas em uma matriz chamada MINF (3 x 1.000) de números reais, na qual a primeira linha corresponde ao salário, a segunda linha corresponde a idade e a terceira linha ao número de filhos de cada um dos entrevistados. Faça um programa em Pascal para obter as seguintes informações a partir desta amostra: a) Coletar os dados dos entrevistados. Eles devem ser lidos a partir de um Procedimento LERDADOS, que recebe do programa principal a matriz MINF vazia e armazena nesta os dados dos entrevistados; b) Calcular a média salarial, a idade média e a quantidade média de filhos da amostra. Para isso, Implementar uma função CALCMEDIA que recebe a matriz de informações MINF preenchida, um parâmetro inteiro L (informando qual linha da matriz deve ser usada para o cálculo) e retorna a média dos valores da linha L; c) Verificar a maior e a menor idade da amostra. Estes valores devem ser calculados com um procedimento CALCMINMAX que recebe a matriz MINF preenchida, um parâmetro inteiro L (informando qual linha da matriz deve ser usada para o cálculo) e as variáveis Menor e Maior que serão usadas para retornar ao programa principal os valores calculados; d) No programa principal, fazer a leitura dos dados utilizando o procedimento LERDADOS. Em seguida, imprimir média salarial, idade média, e média de filhos usando a função CALCMEDIA. Depois, exibir a menor e maior quantidade de filhos utilizando o procedimento CALCMINMANX. Em todas as impressões na tela usar duas casas decimais de precisão para números reais. Obs.: Não devem ser utilizadas variáveis globais para troca de informações entre os subprogramas e o programa principal. Program quesito2; const MMAX = 1000; type TMatriz = array[1..3,1..MMAX] of real; procedure LerDados(var m : TMatriz); var i : integer; begin for i := 1 to MMAX do begin write('Salario[',i,']='); readln(m[1,i]); write('Idade[',i,']='); readln(m[2,i]); write('Filhos[',i,']='); readln(m[3,i]); end; end; { LerDados } function CalcMedia(m : TMatriz; l : integer) : real; var i : integer; soma : real; begin soma := 0; for i:=1 to MMAX do begin soma := soma + m[l,i]; end; CalcMedia := soma/MMAX; end; { CalcMedia } procedure CalcMinMax(m : TMatriz; l : integer; var min,max : real); var i : integer; begin min := m[l,1]; max := m[l,1]; for i := 2 to MMAX do begin if m[l,i] < min then begin min := m[l,i]; end; if m[l,i] > max then begin max := m[l,i]; end; end; end; { MinMax } var minf : TMatriz; mSalario, mIdade, mFilhos : real; minFilhos, maxFilhos : real; begin {Chamada dos subprogramas} LerDados(minf); mSalario := CalcMedia(minf,1); mIdade := CalcMedia(minf,2); mFilhos := CalcMedia(minf,3); CalcMinMax(minf, 3, minFilhos, maxFilhos); {Impressao dos resultados} writeln('Salario medio=',mSalario:5:2, ' Idade media=',mIdade:5:2, ' Filhos medio=',mFilhos:5:2, ' Filhos minimo=',minFilhos:5:2, ' Filhos maximo=',maxFilhos:5:2); end.
Compartilhar