Sunteți pe pagina 1din 3

Universidade Federal de Minas Gerais - UFMG

Instituto de Cincias Exatas - ICEx


Disciplina: Programao de Computadores
Professor: David Menoti (menoti@dcc.ufmg.br)
Monitor: Joo Felipe Kudo (joao.felipe.kudo@terra.com.br)

Data: 01/10/2005

Aluno: ___________________________________________________________ No. ______

A prova individual e sem consulta, exceto o contido em sua mente;


A interpretao das questes faz parte da avaliao;
Faa as observaes que achar necessrio, por escrito, na folha de reposta.
1. Avaliao 28/26 pontos (2 pontos extras)

1) (9 pontos) Construa um algoritmo em PORTUGOL (9 pontos) e sua respectiva


implementao em MATLAB (1 ponto extra) que calcule e imprima a soma dos N
(deve ser lido) primeiros termos da srie:
0! 2! 4! 6! 8! 10! 12! 14!
+ +
+
...
1 4 2 3 6 4
5
8
Os termos tambm devem ser impressos.
2) (9 pontos) Um nmero dito ser capicua quando lido da esquerda para a direita o
mesmo que quando lido da direita para a esquerda. O ano 2002, por exemplo,
capicua. Ento, escreva um algoritmo em PORTUGOL (9 pontos) e sua respectiva
implementao em PASCAL (1 ponto extra) para verificar se um nmero inteiro e
no-negativo (deve ser lido) possui essa caracterstica. Caso o nmero seja capicua, o
algoritmo deve emitir a mensagem capicua, e no capicua em caso contrrio.
3) (8 pontos) Suponha que voc foi contratado por um sistema cooperativo de trabalho
mdico (plano de sade), para desenvolver um programa de computador que auxilie o
clculo da tarifa/mensalidade dos plano de sade. O usurio do sistema ir fornecer o
sexo (codificado como: 1 para feminino e 2 para masculino) e a idade (nmero real)
do segurado, bem como o tipo (1 para ambulatrio e 2 para quarto particular) do
plano. O valor da tarifa baseado no salrio mnimo (nmero real), que sempre
informado pelo usurio no incio do uso do sistema.
A cooperativa utiliza as seguintes regras para o clculo da mensalidade:
- At 20 anos, inclusive, um tero do salrio mnimo;
- A partir de 20 at 30 anos, inclusive, meio salrio mnimo;
- A partir de 30 at 50 anos, 1 salrio mnimo;
- E a partir dos 50 anos, 1 salrio mnimo e meio.
Sabe-se que o valor da mensalidade 20% mais caro para mulheres com mais de 15
anos, inclusive, e menos de 40 anos, inclusive. Sabe-se tambm que os clientes que
possuem planos do tipo quarto particular, pagam 50% a mais sobre o valor final da
tarifa. Aps o clculo de cada tarifa, deve-se apresentar o montante.
O programa deve estar apto a processar vrios clientes, encerrando a execuo quando
um cdigo invlido para o sexo do cliente seja digitado. Ento, pede-se que seja
elaborado um algoritmo em PORTUGOL a fim de gerar o produto desejado para a
cooperativa.
TODOS OS DADOS DIVULGADOS NESTE ENUNCIADOS SO FICTCIOS.

UFMG ICEx DCC Programao de Computadores 2. Sem 2005 David Menoti 1

algoritmo T1E1;
var
inteiro : C, N, NUM, DEN, N;
real : S, T;
incio
leia(N);
S <- 0;
DEN <- 1;
NUM <- 1;
para C de 1 at N faa:
T <- (-1)**(C+1) * NUM / DEN;
imprima(T);
S <- S + T;
NUM <- NUM * (2 * C) * (2 * C - 1);
se ( C mod 3 = 1 ) ento
DEN <- DEN + 3;
seno-se ( C mod 3 = 2 ) ento
DEN <- DEN - 2;
seno-se ( C mod 3 = 0 ) ento
DEN <- DEN + 1;
fim-se
fim-para
imprima(S);
fim
N = input('Digite o nmero de termos: ');
S = 0;
DEN = 1;
NUM = 1;
for C = 1 : N
T = (-1)^(C+1) * NUM / DEN;
fprintf(1,'%d / %d = %.6f\n', NUM, DEN, T);
S = S + T;
NUM = NUM * (2 * C) * (2 * C - 1);
if ( mod( C , 3) == 1 )
DEN = DEN + 3;
elseif ( mod( C , 3 ) == 2 )
DEN = DEN - 2;
elseif ( mod( C , 3 ) == 0 )
DEN = DEN + 1;
end
end
fprintf(1,'Soma dos %d primeiros termos = %.6f\n', N, S);
algoritmo T1E2;
var
inteiro : N, NUM, REV, RET;
incio
leia(N);
se ( N < 0 ) ento
imprima("nmero digitado invlido");
seno
NUM <- N;
REV <- 0;
enquanto ( NUM <> 0 ) faa
RET <- NUM mod 10;
NUM <- NUM div 10;
REV <- REV * 10 + RET;
fim-enquanto
se ( REV = NUM ) ento
imprima(N," eh capicua!")
seno
imprima(N," nao eh capicua!");
fim-se
fim-se
fim

UFMG ICEx DCC Programao de Computadores 2. Sem 2005 David Menoti 2

program T1E2;
var
N, NUM, REV, RET : integer;
begin
write('Digite um numero: ');
readLn(N);
if ( N < 0 ) then
writeLn('numero digitado invalido')
else
begin
NUM := N;
REV := 0;
while ( NUM <> 0 ) do
begin
RET := NUM mod 10;
NUM := NUM div 10;
REV := REV * 10 + RET;
end;
if ( REV = N ) then
writeLn(N,' eh capicua!')
else
writeLn(N,' nao eh capicua!');
end;
end.
algoritmo PLANSAUDE;
var
inteiro: SEXO,TIPO;
real: IDADE, SM, TARIFA;
incio
leia(SM);
leia(SEXO);
enquanto ( SEXO = 1 ) ou ( SEXO = 2 ) faa:
leia(IDADE,TIPO);
se ( IDADE <= 20 ) ento
TARIFA <- 1/3 * SM;
seno-se ( IDADE <= 30 ) ento
TARIFA <- 1/2 * SM;
seno-se ( IDADE <= 50 ) ento
TARIFA <- 1 * SM;
seno
TARIFA <- 1.5 * SM;
fim-se
se (SEXO = 1) e ( (IDADE >= 15) e (IDADE <= 40) ) ento
TARIFA <- 1.2 * TARIFA;
fim-se
se (TIPO = 2) ento
TARIFA <- 1.5 * TARIFA;
fim-se
imprima(TARIFA);
leia(SEXO);
fim-enquanto
fim

UFMG ICEx DCC Programao de Computadores 2. Sem 2005 David Menoti 3

S-ar putea să vă placă și