Programação 22/23 S2
Teste - Solução
Parte 1
- Pergunta 1 - C,D
- Pergunta 2 - C
- Pergunta 3 - C
- Pergunta 4 - B
- Pergunta 5 - B
- Pergunta 6 - A, B
- Pergunta 7 - A
- Pergunta 8 - B
Parte 2
Problema 1
Output
Explicação
- O programa está a concatenar os 5 primeiros nomes próprios aos 5 últimos apelidos (por ordem inversa).
Qual é o tamanho máximo que um nome completo pode ter (sem contar com o
\0
)?- 99, uma vez que os vetores têm um tamanho de 100
char
, mas o\0
ocupa uma das posições.
- 99, uma vez que os vetores têm um tamanho de 100
Problema 2
- Escreve uma função que recebe um array de reais e o seu tamanho e um array de inteiros correspondente aos índices do array de reais. A função deve ordenar os índices de forma a que o array de reais fique ordenado.
Problema 3
Escreve uma função que recebe 3 matrizes.
As matrizes podem ser de qualquer tamanho.
A matriz foi implementada da seguinte forma:
A função irá efetuar a multiplicação das 2 matrizes, e devolver uma terceira matriz com o resultado.
A função tem de verificar se as dimensões das matrizes são compatíveis. Se não forem, a função deve devolver uma matriz com o número de linhas e colunas igual a -1.
Solução:
Matriz multMat (Matriz m1, Matriz m2){
Matriz m3;
int i, j, k;
if (m1.n_colunas != m2.n_linhas){
m3.n_linhas = -1;
m3.n_colunas = -1;
return m3;
}
m3.n_linhas = m1.n_linhas;
m3.n_colunas = m2.n_colunas;
// percorrer todas as posições da matriz resultante
for (i = 0; i < m3.n_linhas; i++){
for (j = 0; j < m3.n_colunas; j++){
// calcular produto interno para cada elemento
float soma = 0;
for (k = 0; k < m1.n_colunas; k++){
soma += m1.vals[i][k] * m2.vals[k][j];
}
m3.vals[i][j] = soma;
}
}
return m3;
}