Universidade da Beira Interior
Departamento de Informática
Programação / Programação I
1º semestre, 2009/10
Exame 2ª Chamada: 10-02-2010
Duração: 02h30m
Primeira Parte (6.0 valores)
1. (1.0 valores) Escreva uma instrução de atribuição que atribua à variável sinal o valor 1 se o valor da
variável real for não negativo e -1 se o valor da variável real for negativo.
2. (2.5 valores) Escreva um programa que, dados os raios externo e interno de um anel, determine a sua
área (A = π(R2 – r2)).
3. (2.5 valores) Escreva um programa que, dados dois valores reais, x e y, interpretados como as
coordenadas cartesianas de um ponto, escreva o quadrante em que o ponto se encontra:
1º quadrante se x
2º quadrante se x
3º quadrante se x
4º quadrante se x
>= 0, y >= 0
< 0, y > 0
< 0, y < 0
> 0, y < 0
Segunda Parte (7.0 valores)
1. (1.0 valores) Em que circunstâncias pode utilizar uma instrução composta switch em alternativa a um
conjunto de instruções condicionais if?
2. (3.0 valores) Uma matriz diz-se esparsa se a maioria dos seus elementos for nula. Por exemplo:
0
0
0
0
0
7
0
0
0
0
0
8
2
0
0
0
0
0
0
0
Podemos economizar espaço em memória se guardarmos apenas os elementos não nulos e as suas
respectivas posições:
0
3
2
1
1
7
3
2
8
Escreva uma função que, dada uma matriz de dimensão máxima MAX, devolva a matriz esparsa de elementos
correspondente e o número de elementos não nulos. Assuma que podem existir no máximo MAXNULOS
elementos nulos na matriz original.
3. (3.0 valores) Escreva um programa que, dado um número natural, n, determine se este é um número feliz.
Diz-se que um número natural é feliz se, na seguinte sequência, existir um elemento igual a 1:
S(0) = n
S(i) = soma dos quadrados dos dígitos de s(i-1)
i>0
Se na sequencia existir um elemento igual a 4 podemos concluir que o número não é feliz. O seu programa
deverá definir e utilizar uma função (1.5 valores) que devolva a soma dos quadrados dos dígitos de um número
natural.
Terceira Parte (7.0 valores)
1. (2.0 valores) Escreva uma função que, dada uma matriz de inteiros de dimensão 9*9, verifique se contem
uma solução válida para um problema de Sudoku. Note que uma solução é válida se cada linha e cada coluna
contém os números de 1 a 9.
2. (2.5 valores) Declare a estrutura de dados necessária para representar uma data (ano, mês e dia).
Assumindo já definida uma função do tipo int que, dados o mês e o ano (inteiros), devolve o número de dias
desse mês, escreva uma função inteira que devolva o número de dias entre duas datas (passadas para a
função como argumentos).
3. (2.5 valores) Escreva uma função que desenhe uma ponte de comprimento c, com pilares de altura a,
utilizando o carácter ‘*’. A função deverá ter como entrada o comprimento da ponte (um número ímpar maior
ou igual a 3) e a altura dos pilares. O número de pilares deverá ser igual a (c – 1)/2. Os pilares devem estar
igualmente espaçados de modo a manter os dois lados da ponte simétricos.
Download

Exame 2ª Chamada - Departamento de Informática da Universidade