Buscar

AD2(Gabarito) - 20152

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 3 páginas

Prévia do material em texto

1ª questão (2.0 pontos):
O Campeonato Brasileiro de Futebol de 2020, série B, foi disputado em 24 jogos. Os 
resultados de um time são expressos por um vetor de caracteres contendo os 
caracteres ‘V’ para vitórias, ‘E’ para empates e ‘D’ para derrotas.
Exemplo:
V V V E E E D D D D V V V V V D E E E E E E E E
Dado um vetor de entrada representando os resultados de um time, determinar a maior 
seqüência de resultados iguais, isto é, a maior seqüência de vitórias ou empates ou 
derrotas. Não é necessário informar o tipo da seqüência (vitórias, empates ou 
derrotas). Por exemplo, para a seqüência acima a resposta esperada é o número inteiro 
8. 
programa campeonato
início
 para i ← 1 até 24 faça
 leia vetor[i]
 fim para
 conta ← 1
 para i ← 2 até 24 faça
 se vetor[i] = vetor[i-1] então
 conta ← conta + 1
 senão
 se conta > maior então
 maior ← conta
 conta ← 1
 fim se
 fim se
 fim para
 se conta > maior então
 maior ← conta
 conta ← 1
 fim se
 imprima maior
fim
2ª questão (2.0 pontos):
Uma maneira bastante simples de achar números primos é usando o Crivo de 
Eratóstenes. Para determinar os números primos menores do que n, basta iniciar um 
vetor com todos os inteiros entre 2 e n e depois substituir por zeros os múltiplos de 
todos os números menores do que n. Ao final do algoritmo, os números que não 
estiverem zerados são os números primos.
Vamos determinar, por exemplo, os primos menores ou iguais a 20:
a. Inicialmente constrói-se o vetor dos inteiros de 2 a 20.
0 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
b. O primeiro número não zerado é o (2). Vamos mantê-lo e zerar todos os seus 
múltiplos. Desta forma, obtemos:
2 3 0 5 0 7 0 9 0
11 0 13 0 15 0 17 0 19 0
c. O próximo número "livre" é o 3. Vamos mantê-lo e zerar seus múltiplos:
2 3 0 5 0 7 0 0 0
11 0 13 0 0 0 17 0 19 0
d. O próximo número “livre” é o 5, porém não há mais múltiplos de 5 ainda não 
zerados. 
2 3 0 5 0 7 0 0 0
11 0 13 0 0 0 17 0 19 0
e. O processo é repetido até que não hajam mais números livres. Os números primos 
encontrados foram então {2, 3, 5, 7, 11, 13, 17, 19}.
Escreva um programa para implementar o Crivo de Eratóstenes
programa crivo
inicio
 para i ← 1 até N faça
 vetor[i] ← i
 fim para
 para i ← 2 até N-1 faça
 para j ← i+1 até N faça
 se (vetor[i] <> 0) E (vetor[j] mod vetor[i] = 0) então
 vetor[j] ← 0
 fim se
 fim se
 fim para
 para i ← 2 até N faça
 se vetor[i] <> 0 então
 imprima i
 fim para
fim
3ª questão (2.0 pontos):
Em PETEQS um vetor é passado como parâmetro para um procedimento escrevendo-
se, quando da chamada do procedimento, apenas o nome do vetor, sem o índice. 
Exemplo:
Um procedimento para imprimir o conteúdo de um vetor de N posições:
programa teste
início
 V[1] ← 10
 V[2] ← 20
 V[3] ← 30
 imprimeVetor(V, 3)
fim
procedimento imprimeVetor (
entradas: V, DIM)
início
 para i ← 1 até DIM faça
 imprima V[i]
 fim para
fim 
Escreva um procedimento que troque a posição de dois caracteres de uma frase (vetor 
de caracteres). Seu procedimento deverá se chamar TROCA, e receberá como 
parâmetros de entrada os índices dos dois caracteres a serem trocados de lugar entre 
si, além da própria frase que deverá ser devolvida com a troca efetuada. Caso os 
índices sejam iguais, não faça a troca e imprima uma mensagem na tela.
procedimento TROCA (entradas: i, j
 saídas: vetor)
início
 se i=j então
 imprima 'Os índices são iguais'
 senão
 tmpChar ← vetor[i]
 vetor[i] ← vetor[j]
 vetor[j] ← tmpChar
 fim se
fim
4ª questão (2,0 pontos):
Escreva uma função para verificar se um valor inteiro NUM está contido em um vetor 
contendo 300 valores inteiros, podendo haver repetições de valores. A função deve 
retornar a posição no conjunto da primeira ocorrência do valor procurado. Se o inteiro 
NUM não for encontrado a função deve retornar o inteiro zero. A função receberá 
como parâmetros o vetor de números inteiros e o valor NUM.
função achaNumero(entradas: vetor, NUM)
início
 i ← 0
 resultado ← 0
 acabou ← falso
 enquanto não acabou faça
 se vetor[i] = NUM então
 resultado ← i
 acabou ← verdadeiro
 fim se
 se i=300 então 
 acabou ← verdadeiro
 fim se
 i ← i + 1
 fim enquanto
fim
5ª questão (2.0 pontos):
Escreva um procedimento de nome NumVogais para determinar quantas vogais 
existem em um vetor nome, de 50 caracteres, fornecido pelo programa principal. , 
retornando um número inteiro como valor. O nome é fornecido somente com letras 
minúsculas.
função NumVogais(entradas: vetor)
início
 resultado ← 0
 para i ← 1 até 50 faça
 se (vetor[i] = 'a') OU
 (vetor[i] = 'e') OU
 (vetor[i] = 'i') OU
 (vetor[i] = 'o') OU
 (vetor[i] = 'u') então
 resultado ← resultado + 1
 fim se
 fim para
fim

Continue navegando