Diferenças entre edições de "Exame de 6 de fevereiro"
(→Pergunta 2 (Enviar programa): Gerar triângulos de Pitágoras) |
|||
Linha 73: | Linha 73: | ||
until (rem(x,2)==0 & x>0) | until (rem(x,2)==0 & x>0) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | ==== Pergunta 3 (Preencher espaços): Escrever matrizes ==== | ||
+ | |||
+ | ==== Pergunta 4 (Escolha múltipla): Gerar matriz ==== | ||
+ | |||
+ | ==== Pergunta 5 (Valor): Ciclo while ==== | ||
+ | |||
+ | Considere o seguinte excerto de um programa, onde aparece um ciclo while. | ||
+ | |||
+ | <syntaxhighlight> | ||
+ | x = 1; | ||
+ | while (x < 8) | ||
+ | disp('Acabou o teste?') | ||
+ | x = x + 2.5 | ||
+ | end | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Quantas vezes é executada a instrução disp ao executar este excerto? | ||
+ | |||
+ | * 3 | ||
+ | |||
+ | ==== Pergunta 6 (Escolha múltipla): Números aleatórios ==== | ||
+ | |||
+ | ==== Pergunta 7 (Preencher espaços): Sudoku ==== | ||
+ | |||
+ | ==== Pergunta 8 (Preencher espaços): As condições if elseif ==== |
Edição atual desde as 01h24min de 11 de fevereiro de 2014
Índice
- 1 Pergunta 1 (Escolha múltipla): Ano bissexto
- 2 Pergunta 2 (Enviar programa): Gerar triângulos de Pitágoras
- 3 Resposta
- 4 Pergunta 3 (Preencher espaços): Escrever matrizes
- 5 Pergunta 4 (Escolha múltipla): Gerar matriz
- 6 Pergunta 5 (Valor): Ciclo while
- 7 Pergunta 6 (Escolha múltipla): Números aleatórios
- 8 Pergunta 7 (Preencher espaços): Sudoku
- 9 Pergunta 8 (Preencher espaços): As condições if elseif
Pergunta 1 (Escolha múltipla): Ano bissexto
De x em x anos, em vez de 365 dias, o ano tem 366 dias, o qual é designado ano bissexto. Isto é feito com o objetivo de manter o calendário anual ajustado com a translação do planeta. Diga qual das seguintes expressões calcula corretamente o número de anos bissextos que já se verificaram (depois de Cristo).
- Correta fix(2014/4)-fix(2014/100)+fix(2014/400)
- Errada length(is_leap_year(1:4:2014))
- Errada anos = 1:2014; length(anos(mod(anos,4)==0))
- Errada anos = 1:2014; sum(anos(mod(anos,4)==0))
Pergunta 2 (Enviar programa): Gerar triângulos de Pitágoras
O teorema de Pitágoras estabelece a seguinte propriedade: se os lados a e b de um triângulo formam um ângulo reto, então verifica-se que a²+b²=h², em que h é o lado oposto ao ângulo reto, designado hipotenusa.
Num dos testes anteriores, discutiu-se um programa para gerar um triângulo de Pitágoras a partir de um número ímpar.
Considere o seguinte algoritmo para gerar um triângulo de Pitágoras, partindo de um número par (e não um número ímpar):
- Comece por um ler um número par, x.
- Seja y igual a esse número mais 2, sendo que y é também par.
- Crie duas frações unitárias, com x e y no denominador (1/x e 1/y), e some-as.
- Simplifique a fração obtida.
- A fração simplificada tem no numerador e no denominador os dois lados de um triângulo de Pitágoras, a e b
- A hipotenusa ser calculada com a fórmula: h = √(a² + b²)
Este algoritmo pode ser ilustrado, começando por escolher 4
- x = 4
- y = x + 2 = 6
- 1/4 + 1/6 = 10/24
- 10/24 = 5/12
- a = 5 (numerador), b= 12 (denominador)
- h = √(5² + 12²) = 13
Resulta, nesta ilustração do algoritmo, o rectângulo com os lados 5, 12 e 13.
Escreva em Octave este algoritmo num documento pitagoras.m e envie o mesmo. Teste o programa antes de o enviar.
Resposta
# ler o primeiro numero x = input("Numero?"); # calcular o segundo numero y = x + 2 # somar as fracoes 1/x + 1/y # que dao y/x*y + x/x*y numerador = y+x denominador = y*x # simplificar a fracao resultante mdc = gcd(numerador,denominador) a = numerador/mdc b = denominador/mdc # calcular a hipotenusa h = sqrt(a^2 + b^2) # apresentar o triangulo resultante printf("O triangulo de pitagoras tem os lados %d, %d e %d\n", a, b, h);
Possíveis melhorias
Nota: Esta validação não era necessária para ter a cotação toda
Em vez de:
x = input("Numero?");
podia-se garantir que o número lido era par e positivo, com:
do x = input("Numero?"); until (rem(x,2)==0 & x>0)
Pergunta 3 (Preencher espaços): Escrever matrizes
Pergunta 4 (Escolha múltipla): Gerar matriz
Pergunta 5 (Valor): Ciclo while
Considere o seguinte excerto de um programa, onde aparece um ciclo while.
x = 1; while (x < 8) disp('Acabou o teste?') x = x + 2.5 end
Quantas vezes é executada a instrução disp ao executar este excerto?
- 3