Lista de Exercícios – Repetição (Contável e Condicional

Propaganda
Lista de Exercícios – Repetição (Contável e Condicional)
Prof: Yuri Frota
1) Interpretar e traduzir para Fortran a sequência de comandos em Português a
seguir:
Programa { escrita dos termos de Fibonacci menores que L }
leia o valor L
{Processamento dos dois primeiros termos}
Atribua o valor 1 ao termo1
se ele for menor do que L então
escreva-o
fim se
Atribua o valor 1 ao termo2
se ele for menor do que L então
escreva-o
fim se
{Processamento dos termos restantes}
enquanto novo termo1 mais termo2 for menor ou igual a L faça
Calcule o novo termo somando os 2 anteriores
escreva o termo
Atribua termo2 a termo1
Atribua termo a termo2
fim enquanto
Fim algoritmo.
1
6
11
16
21
26
31
36
41
46
51
56
61
|----|----|----|----|----|----|----|----|----|----|----|----|
program algoritmo
c
escrita dos termos de Fibonacci
integer L,v1, t1, t2
c
Le o valor de L
print *,'L?'
read *, L
c
Os dois primeiros termos da são 1 e 1
v1 = 1
c
Processamento dos dois primeiros termos
t1 = v1
if (t1 .lt. L) then
print *, t1
end if
t2 = v1
if (t2 .lt. L) then
print *, t2
end if
c Processamento dos termos restantes
do while (t1+ t2 .le. L)
v1 = t1 + t2
print *, v1
t1 = t2
t2 = v1
end do
end
2) Faça um programa em Fortran que:
a) Escreva um programa que permita que o usuário indique um número de
inteiros “n” a serem lidos (entre 1 e 30). Após a leitura dos “n” números,
escreva na tela a média, a soma, o produto, o menor valor e o maior valor.
1
6
11
16
21
26
31
36
41
46
51
56
61
|----|----|----|----|----|----|----|----|----|----|----|----|
c
calcula média, a soma, o produto, o menor valor e o maior valor
program ex2a
integer v, max, min, n, soma, prod, i
c
Le a quantidade de inteiros
print *, 'Entre c/ o número de inteiros'
read *, n
if (n .lt. 1 .or. n .gt. 30) then
print *, 'Quantidade de inteiros invalida'
stop
end if
soma = 0
prod = 1
do i=1,n,1
c
Le os valor
print *, 'Entre c/ um valor'
read *, v
c
calcula cada um dos calculos
if (i .eq. 1) then
min = v
max = v
else
if (v .lt. min ) then
min = v
else
if (v .gt. max) then
max = v
end if
end if
end if
soma = soma + v
prod = prod * v
end do
c
escreve na tela cada um dos calculos
print *, 'media: ', float(soma) / n
print *, 'soma: ', soma
print *, 'produto: ', prod
print *, 'menor: ', min
print *, 'maior: ', max
end
b) Faça um programa para construir a tabela de multiplicação de números de 1
a 10 (ex.: 1 x 1 = 1, 1 x 2 = 2, ….,2 x 1 = 2, 2 x 2 = 4, …., etc.).
1
6
11
16
21
26
31
36
41
46
51
56
61
|----|----|----|----|----|----|----|----|----|----|----|----|
program tabela
integer x, y
print *, 'Tabela de multiplicação de números de 1 a 10'
do x=1,10,1
do y=1,10,1
print *, x, ' x ', y, ' = ', x*y
end do
end do
end
c) gerar os cinqüenta primeiros termos da série: 1 + N, 5 * N, 9 + N, 13 * N, ...,
onde N é um valor lido.
1
6
11
16
21
26
31
36
41
46
51
56
61
|----|----|----|----|----|----|----|----|----|----|----|----|
program ex6f
integer i, n, v
c
Le N
print *, 'Entre c/ um inteiro'
read *, n
v = 1
do i=1,50,1
if (mod(i,2) .eq. 0) then
print *, v*n
else
print *, v+n
end if
v = v + 4
end do
end
d) determinar todos os números de 3 algarismos, cujas somas dos cubos dos algarismos sejam iguais ao próprio número. Exemplo: 153 = 1**3 + 5**3 +
3**3
1
6
11
16
21
26
31
36
41
46
51
56
61
|----|----|----|----|----|----|----|----|----|----|----|----|
program ex6g
integer i, j, z
do i=1,9,1
do j=0,9,1
do z=0,9,1
if (i**3 + j**3 + z**3 .eq. i*100+j*10+z) then
print *, i,j,z
end if
end do
end do
end do
end
e) determinar todos os números de 4 algarismos que possam ser separados em
dois números de dois algarismos que somados e elevando-se a soma ao quadrado obtenha-se o próprio número. Exemplo: 3025 = (30 + 25) = 55, e
55**2 = 3025.
1
6
11
16
21
26
31
36
41
46
51
56
61
|----|----|----|----|----|----|----|----|----|----|----|----|
program ex6h
integer i, p1, p2
do i=1000,9999,1
p1 = i/100
p2 = MOD(i,100)
if ((p1 + p2)**2 .EQ. i ) then
print *, i
endif
end do
end
3) Escreva um programa para gerar dois valores aleatórios inteiros “x” e “y” entre 1
e 10 (para gerar o número aleatório, vamos usar o comando “rand” da seguinte
forma: x = rand(0)*10 e y = rand(0)*10 ). Após isso, deve-se gerar a seguinte
mensagem: “quanto é x multiplicado por y ?”, substituindo os números gerados por
“x” e “y”. Depois da mensagem, deve ser lida uma resposta do teclado e deve ser
exibido uma mensagem indicando acerto ou erro.
A função deve usar um comando “do while” para implementar um laço que obrigue
o usuário a acertar pelo menos três vezes a resposta antes de sair. Ao final devem
ser indicado o número de tentativas, de acertos e de erros.
1
6
11
16
21
26
31
36
41
46
51
56
61
|----|----|----|----|----|----|----|----|----|----|----|----|
program rand
integer x, y, z, r, w
r = 0
w = 0
do while (r .lt. 3)
x = rand(1)*10
y = rand(1)*10
print *, 'quanto é ',x,' multiplicado por', y,' ?'
read *, z
if (z .eq. x*y) then
r = r +1
print *, ‘ACERTOU!’
else
w = w + 1
print *, ‘ERROU!’
end if
end do
print *, 'N. De tentativas: ',r+w
print *, 'N. Acertos: ', r,' N. De erros: ', w
end
Download