Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação de Computadores Prof. Eduardo Chaves Faria ( VE TORES ) SOLUÇÃO do 5o EXERCÍCIO 1) Verifica se um dado valor numérico ( parâmetro de entrada N ) pertence a um conjunto de valores numéricos ( parâmetro de entrada Conj ). 2) Calcula um soma de diferenças entre elementos de um conjunto conforme o esquema do exemplo abaixo: 9 9 7 8 10 13 6 6 11 11 Soma = (11-9)2 + ( 11-9)2 + ( 6-7)2 + (6-8)2 + ( 13-10)2 = 22 3) { Calcula a Frequência Absoluta e a Frequência Relativa de um conjunto de notas } Algoritmo defina o tipo das variáveis zerar o vetor FA n ← 0 repita leia Nota se Nota < 0 então interrompa fim se FA[ Nota ] ← FA[ Nota ] + 1 n ← n + 1 fim repita calcule a freqüência relativa e escreva os resultados fim algoritmo ref: zerar o vetor FA k ← 0 repita FA[ k ] ← 0 k ← k + 1 se k > 10 então interrompa fim se fim repita fim ref ref: calcule a freq relativa e escreva os resultados k ← 0 repita FR ← FA[ k ] x 100 / n escreva FA[ k ], FR k ← k + 1 se k > 10 então interrompa fim se fim repita fim ref ... ref: defina o tipo das variáveis declare FA[ 0:10] numérico { Freqüência Absoluta } declare Nota { nota lida na entrada – inteiro entre 0 e 10 } n { número de notas, necessário p/ calcular freq. Relativa } k { auxiliar } FR { Freqüência Relativa } numérico fim ref 4) { Calcula o número de pessoas em cada faixa de idade: 0→9, 10→19, 20→29, . . . , 110→119 } Algoritmo defina o tipo das variáveis zerar o vetor Faixas repita leia Idade se Idade < 0 então interrompa fim se k ← Quociente( Idade, 10 ) { toda idade na mesma faixa gera o mesmo índice } Faixas[ k ] ← Faixas[ k ] + 1 fim repita escreva Faixas[ 0 ], Faixas[ 1 ], .... , Faixas[ 11 ] fim algoritmo ref: zerar o vetor Faixas k ← 0 repita Faixas[ k ] ← 0 k ← k + 1 se k > 11 então interrompa fim se fim repita fim ref ref: defina o tipo das variáveis declare Faixas[ 0:11] numérico { contadores de pessoas em faixas de idades } declare Idade { idade lida na entrada – inteiro entre 0 e 119 } k { auxiliar } numérico fim ref 5) { Calcula a Interseção e a União de dois conjuntos fornecidos na entrada } Algoritmo defina o tipo das variáveis leia n leia A[1], A[2], ... , A[n] leia m leia B[1], B[2], ... , B[m] DetermineConjuntoIntersecao( n, A, m, B, p, I ) escreva I[1], I[2], ... , I[p] DetermineConjuntoUniao( n, A, m, B, p, U ) escreva U[1], U[2], ... , U[p] fim algoritmo. subrotina DetermineConjuntoIntersecao( n, A, m, B, p, I ) declare A, B[1:100] { parâmetros de entrada: conjuntos fornecidos } I [1:100] { parâmetro de saída: conjunto Interseção de A com B } numérico declare n, m { parâmetro de entrada: número de elementos dos conjuntos A e B } p { parâmetro de saída : apontador para o conjunto interseção } i, k { auxiliares } numérico declare Achou { sinaliza que encontrou um elemento da interseção } lógico p ← 0 { no início o conjunto Interseção está vazio } i ← 1 repita k ← 1 Achou ← falso repita { verifica se o elemento A[ i ] está em B } se A[ i ] = B[ k ] então p ← p + 1 I[ p ] ← A[ i ] { insere A[ i ] no conjunto interseção } Achou ← verdadeiro fim se k ← k + 1 se k > m ou Achou então interrompa fim se fim repita i ← i + 1 se i > n então interrompa fim se fim repita fim subrotina subrotina DetermineConjuntoUniao( n, A, m, B, p, U ) declare A, B[1:100] { parâmetros de entrada: conjuntos fornecidos } U [1:200] { parâmetro de saída: conjunto União de A com B } declare n, m { parâmetros de entrada: número de elementos dos conjuntos A e B } p { parâmetro de saída apontador para o conjunto união } i { auxiliar } numérico p ← 0 { inicialmente o conjunto União está vazio } Copia os elementos do conjunto A para o conjunto U i ← 1 repita { copia para o conjunto U os elementos de B que não existem em A } se i > m então interrompe fim se se ValorNaoExisteNoOutroConjunto( B[i], n, A ) então p ← p + 1 U[p] ← B[i] fim se i ← i + 1 fim repita fim subrotina ref: Copia os elementos do conjunto A para o conjunto U repita se p = n então interrompe fim se p ← p + 1 { o índice p aponta sempre para o último elemento inserido em U } U[p] ← A[p] fim repita fim ref função lógica ValorNaoExisteNoOutroConjunto( Valor, A, n ) declare A[1:100] numérico { conjunto a ser verificado } declare Valor { valor a ser pesquisado } n { número de elementos em conjunto A} i ‘ { índice para o vetor } numérico ValorNaoExisteNoOutroConjunto ← verdadeiro i ← 1 repita { tenta provar o contrário, ou seja, que o valor existe em A } se A[ i ] = Valor então ValorNaoExisteNoOutroConjunto ← falso fim se i ← i + 1 se ( i > m ) ou ( não ValorNaoExisteNoOutroConjunto ) então interrompa fim se fim repita fim função ref: defina o tipo das variáveis declare m, n, p numérico { números de elementos dos conjuntos } declare A, B [1:100] { conjuntos fornecidos como entrada } I [1:100] { conjunto interseção } U [1:200] { conjunto união } numérico fim ref 6) { Pesquisa musical de uma emissora de rádio } Algoritimo Defina o tipo das variáveis i ← 1 repita se i > 500 então interrompa fim se leia Nomes[i], Musicas[i] i ← i + 1 fim repita Acumule os votos que cada música obteve Compare a votação e determine a vencedora Escreva os nomes dos que citaram a música vencedora fim algoritmo ref: Acumule os votos que cada música obteve Zerar o vetor VotosMusica i ← 1 repita se i > 500 então interrompa fim se VotosMusica[ Musicas[i] ] ← VotosMusica[ Musicas[i] ] + 1 i ← i + 1 fim repita fim ref ref: Zerar o vetor VotosMusica i ← 1 repita se i > 30 então interrompa fim se VotosMusica[i] ← 0 i ← i + 1 fim repita fim ref ref: Compare a votação e determine a vencedora Maior ← VotosMusica[1] MusicaVencedora ← 1 i ← 2 repita se i > 30 então interrompa fim se se VotosMusica[i] > Maior então Maior ← VotosMusica[i] MusicaVencedora ← i fim se i ← i + 1 fim repita fim ref ref: Escreva os nomes dos que citaram a música vencedora i ← 1 repita se i > 500 então interrompa fim se se Musicas[i] = MusicaVencedora então escreva Nomes[i] fim se i ← i + 1 fim repita fim ref ref : Defina o tipo das variáveis declare i, { apontador } MusicaVencedora { número da música mais citada } Maior { maior número de votos } numérico declareNomes[1:500] literal { nomes das pessoas entrevistadas } declare Musicas[1:500] { músicas preferidas } VotosMusica[1:30] { acumulador de votos} numérico fim ref
Compartilhar