Simulado de Prova (P2)
Este é um simulado de P2 para a disciplina Algoritmos e Técnicas de Programação:
Comece pensando:
-Como processar cada elemento dentro de um vetor?
-Como processar cada elemento de uma matriz?
-Como processar elementos que seguem um determinado critério?
1) Crie uma função em python que receba por parâmetro dois vetores (listas) de números reais; a função deve calcular a chamada distância quadrática de dois vetores. Este cálculo soma os quadrados das diferenças dos valores correspondentes dos dois vetores, ou seja, (A[0] - B[0])² + (A[1] - B[1])² + (A[2] - B[2])² + … + (A[10] - B[10])². Pronto! A assinatura da função é assim: def distanciaQuadratica (A, B):
Exemplo:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ||||
A | 0 | 3 | -2 | 7 | 9 | 11 | 15 | 0 | 0 | 0 | 0 | |||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ||||
B | 0 | 4 | 0 | 7 | 9 | 11 | 15 | 0 | 1 | 0 | 1 |
No exemplo acima, o resultado seria: (0-0)² + (3-4)² + (-2-0)² + (7-7)² + (9-9)² + (11-11)² + (15-15)² + (0-0)² + (0-1)² + (0-0)² + (0-1)² = 7
OBS.: USE COMANDOS DE REPETIÇÃO, POIS OS VETORES PODEM SER DE TAMANHO ARBITRÁRIO (O ACIMA É SÓ UM EXEMPLO).
2) Dado um vetor de números inteiros, deseja-se vasculhá-lo em busca do elemento mais próximo possível de um dado número procurado. Crie uma função em python que receba como parâmetros o vetor e o número procurado, e retorne o índice do elemento que mais se aproxima do procurado.
Sua assinatura seria: def procuraAproximada (vet, procurado):
Exemplo:
índices | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |
vet | 58 | 34 | 29 | 12 | -6 | 4 | 15 | 26 | 2 | 8 | 9 | 7 | 4 | -2 | 30 |
Dado o vetor acima, caso procurasse o número 14, o retorno do método seria 6, isto é, o índice relativo ao elemento 15, que é o que mais se aproxima de 14.
Caso procurasse o 29, o retorno seria 2, pois o próprio número foi achado neste índice.
Caso procurasse o 60, o retorno seria 0, isto é, o índice relativo ao elemento 58, que é o que mais se aproxima de 60.
Dica 1: Talvez o exercício fique facilitado se você criar um vetor auxiliar contendo a diferença, em módulo, do número procurado para cada elemento do vetor original (isso não é obrigatório!!). Para o exemplo acima, caso procurasse o número 14, esse vetor auxiliar ficaria assim:
índices | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |
vetAux | 44 | 20 | 15 | 2 | 20 | 10 | 1 | 12 | 12 | 6 | 5 | 7 | 10 | 16 | 16 |
Dica 2: para calcular o módulo de um número, você pode usar a função abs(número) ou criar uma lógica para isso com if/else.
3) Dadas duas sequências (vetores) com n números inteiros entre 0 e 9, interpretadas como dois números inteiros de n algarismos, calcular a sequência de números que representa a soma dos dois inteiros.
Exemplo: n = 8,
1ª sequência (vetor) | 8 2 4 3 4 2 5 1 |
2ª sequência | + 3 3 7 5 2 3 3 7 |
1 1 6 1 8 6 5 8 8 |
O protótipo da função é: def soma (seq1, seq2):
DICA: o vetor resposta terá dimensão N+1 por causa do possível vai-um.
4) Crie uma função que receba um vetor de números reais e retornar a média geométrica dos N elementos do vetor:
A média geométrica dos números reais positivos x0,…,xn-1 é definida como sendo a raiz n-ésima do produto destes números, como segue, ou este produto elevado a 1/n:
O protótipo da função é: def mediaGeometrica ( vet ):
DICA: Não se esqueça de usar repetição (loop)!
5) Crie uma função em python para calcular e retornar a soma dos elementos que não estão na borda de uma matriz. Exemplo: dada a matriz abaixo, a função retornará: 6 + 7 + 10 + 11 = 34.
0
1
2
3
0
1
2
3
4
1
5
6
7
8
2
9
10
11
12
3
13
14
15
16
O protótipo da função é: def somaCentro ( mat ):
Use repetição para criar seu código. Lembre-se que a função deverá funcionar para matrizes de quaisquer tamanhos.
6) Crie uma função em python para calcular e retornar a soma dos elementos da borda de uma matriz. Exemplo: dada a matriz abaixo,
0
1
2
3
0
1
2
3
4
1
5
6
7
8
2
9
10
11
12
3
13
14
15
16
a função retornará: 1 + 2 + 3 + 4 + 5 + 8 + 9 + 12 + 13 + 14 + 15 + 16 = 102.
O protótipo da função é: def somaBorda ( mat ):
Use repetição para criar seu código. Lembre-se que a função deverá funcionar para matrizes de quaisquer tamanhos.
7) Crie uma função em C para calcular e retornar a soma dos elementos da diagonal secundária de uma matriz quadrada, de dimensão arbitrária N, ou seja, ela é NxN. Exemplo:
0
1
2
3
0
1
2
3
4
1
5
6
7
8
2
9
10
11
12
3
13
14
15
16
Para a matriz acima, a função retornará: 4 + 7 + 10 + 13 = 34.
O protótipo da função é: def somaDiagonalSec ( mat ):
Use repetição para criar seu código. Lembre-se que a função deverá funcionar para matrizes de quaisquer tamanhos.
8) Crie uma função para calcular e retornar a soma dos elementos pares de uma matriz que estão em linhas de índices pares. A função deve realizar esta operação para uma matriz de tamanho qualquer (não vale resolver somente para uma matriz pequena, ou seja, USE REPETIÇÕES!!!). Exemplo: dada a matriz abaixo,
0
1
2
3
0
2
7
5
9
1
13
6
2
-1
2
9
4
14
5
3
13
1
5
16
a função retornará: 2 + 4 + 14 = 20. O protótipo da função é: def soma ( mat ):
9) Crie uma função para calcular e retornar a soma dos elementos ímpares de uma matriz que estão em linhas de índices ímpares. A função deve realizar esta operação para uma matriz de tamanho qualquer (não vale resolver somente para uma matriz pequena, ou seja, USE REPETIÇÕES!!!). Exemplo: dada a matriz abaixo,
0
1
2
3
0
2
7
5
9
1
13
6
2
-1
2
9
4
14
5
3
13
1
5
16
a função retornará: 13 + (-1) + 13 + 1 + 5 = 31. O protótipo da função é: def soma ( mat )
10) Crie um programa em Python que leia um número e imprima a tabuada deste número:
Exemplo: De qual número eu mostrarei a tabuada? 7
Tabuada do 7
1 X 7 = 7
2 X 7 = 14
…
9 X 7 = 63
10 X 7 = 70
11) Crie uma função que receba um valor N e retorne o valor da expressão abaixo:
Dicas: Para N=1 ou menos, o programa calcularia e mostraria simplesmente 1
Para N=3, o programa calcularia e mostraria 1 + 3 = 4
Para N=5, o programa calcularia e mostraria 1 + 3 + 5 = 9
Para N=6 (ou qualquer valor par), o programa calcularia e mostraria até o N-1, ou seja, 1 + 3 + 5 = 9
12) Crie uma função que retorne o quanto dois vetores (recebidos como parâmetro) são idênticos,
com a resposta em porcentagem. Veja os exemplos, para vetores de tamanho N = 5:
Exemplos:
0 | 1 | 2 | 3 | 4 | 2) | 0 | 1 | 2 | 3 | 4 | |||||||
A | 2 | 4 | 3 | 7 | 9 | C | 1 | 2 | 3 | 4 | 5 | ||||||
0 | 1 | 2 | 3 | 4 | 0 | 1 | 2 | 3 | 4 | ||||||||
B | 2 | 4 | 3 | 7 | 9 | D | 1 | 7 | 3 | 4 | 8 | ||||||
semelhanca(A, B) = 100 | semelhanca(C, D) = 60 |
No primeiro exemplo acima, os vetores A e B são idênticos 100%, ou seja, dos 5 elementos,
5 são iguais entre eles, considerando as mesmas posições.
No segundo exemplo acima, os vetores C e D são idênticos 60%, ou seja, dos 5 elementos,
3 são iguais entre eles, considerando as mesmas posições.
OBS.: USE COMANDOS DE REPETIÇÃO, POIS OS VETORES PODEM SER DE TAMANHO
QUALQUER (O ACIMA É SÓ UM EXEMPLO).
13) Crie uma função em Python que inverta uma string, sem usar a função reverse, que já está
pronta. Exemplos:
inverter(“ABC”) → “CBA”
inverter(“XYZ”) → “ZYX”
*Gabarito de algumas das questões acima
Comentários
Postar um comentário