Buscar

Ex05-Solucao

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

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

Outros materiais