Вы находитесь на странице: 1из 84

001 )

Dê o valor e o tipo do resultado das expressões PASCAL abaixo:

a) 37 mod 7
b) trunc(45.3)
c) abs(round(-6.7))
d) sqr(3.5)
e) not(not(93>57))
f) 91 div 8
g) (7>6) and (3<=4)
h) 2.0+3.0*4.0-7.0/7.0+4.5

002 )

Escreva a saída que será dada pelo computador ao executar o trecho de programa abaixo:

........
a:=40;
write ('votos nulos, ');
writeln ('brancos e ');
write ('abstencoes chegam ');
write ('a',a:3,' %');
........

003 )

Substitua cada um dos pares de comandos de atribuição abaixo por um único comando de
atribuição:

a) l:=a+5;
l:=b-2;

b) m:=a+5;
m:=m*2;

c) n:=2*n-2;
n:=n div 2 - 3
004 )

Faça um programa Pascal para determinar se um número fornecido é primo ou não.

{Danielly de Azevedo Pereira DRE: 100179664}


{06/04/2001}

005 )

Escreva as expressões abaixo em Pascal:

A)

B)

006 )

Escreva um programa Pascal para ler do teclado as medidas de dois ângulos, ambas
expressas por valores inteiros de graus, minutos e segundos, e em seguida calcular e
imprimir a medida da soma destes dois ângulos, também em graus, minutos e segundos.

007 )

O algoritmo a seguir, criado pelo astrônomo napolitano Aloysius Lilius e pelo matemático e
jesuíta alemão Christopher Clavius, no fim do século 16, é utilizado para calcular a data do
domingo de Páscoa para qualquer ano após 1582.

Seja Y o ano para o qual se deseja calcular a data do domingo de Páscoa.

Obs: O símbolo {b} corresponde ao maior inteiro menor ou igual a b.


1. Cálculo do número dourado:
G = ( Y MOD 19 ) + 1
G é chamado de número dourado para o ano, em ciclos de 19 anos.

2. Cálculo do século
C = {Y/100} + 1

3. Correções
X = {3C / 4} - 12
Z = {(8C+5) / 25 } - 5
X é o número de anos, como 1990, que não são bissextos, Z é uma correção especial
para sincronizar a Páscoa com a órbita lunar.

4. Achar o domingo
D = {5Y / 4} - X - 10

5.
E = (11G + 20 + Z - X) MOD 30
Se E = 25 e G é maior que 11, ou se E = 24, então some 1 a E

6. Achar a lua cheia


N = 44 - E
Se N < 21 então some 30 a N
A Páscoa é supostamente o "primeiro domingo após a primeira lua cheia que ocorre
antes ou durante 21 de março".

7. Avanço do domingo
N = N + 7 - (( D + N ) MOD 7)

8. Cálculo do mês
Se N > 31 então a data é (N-31) de abril senão é N de março.

Faça um programa que siga esses passos e calcule o domingo de Páscoa em um ano
fornecido pelo usuário, imprimindo nos formato:

11/4/1993
ou
31 de março de 1991

008 )

Mostre o que será impresso quando o programa Q1 for executado com cada um dos cinco
conjuntos de dados abaixo.
program Q1;
var
x, y : real;

begin
writeln ('Entre com as coordenadas do ponto');
readln (x, y);
if x < 0.0
then if y < (x-4.0)/2.0
then writeln ('Mensagem 1')
else writeln ('Mensagem 2')
else if x = 0.0
then writeln ('Mensagem 3')
else if x < 4.0
then if (y > (x-4.0)/2.0) and (y < 0.0)
then writeln ('Mensagem 4')
else writeln ('Mensagem 5')
else if x = 4.0
then writeln ('Mensagem 6')
else if (y < (x-4.0)/2.0) and (y > 0.0)
then writeln ('Mensagem 7')
else writeln ('Mensagem 8');
writeln ('Mensagem 9');
end.

Dados:
8.0 4.0
-4.0 -6.0
1.0 -1.0
10.0 2.0
-6.0 -4.0

009 )

Complete o programa CEDULAS dado abaixo. Este programa deve ler um inteiro N,
calcular e imprimir a quantidade mínima de cédulas de R$ 500, R$ 100, R$ 50, R$ 10, R$
5, R$ 1 que são necessárias para pagar exatamente a importância dada pelo inteiro N. Por
exemplo, se a importância a pagar for R$ 309 então o programa deverá imprimir :

3 cedula(s) de R$ 100
1 cedula(s) de R$ 5
4 cedula(s) de R$ 1
Nota: As cedulas com quantidade igual a zero não devem ser listadas.

program CEDULAS;
var
N : integer; {importancia a pagar}
a, b, c, d, e, f : integer; {quantidade de cedulas}
begin
writeln ('Entre com a importancia a ser paga')
readln (N);
if N >= 500 then
...
end.

010 )

Para cada uma das expressões Pascal abaixo, indique a ordem de execução e o tipo de
resultado (inteiro, real ou booleano) de cada operação e do valor final da expressão:

a) 4 div 3 + sqr ( sqrt (5 mod 2 + cos (0.0) * 3) + 3) / 2


b) (trunc (11/2) > 5) or not (5 mod 2 + (5 div 2) * 2 <> 5)

011 )

Escreva um programa Pascal que leia os valores x (real) e n (inteiro) e calcule o valor da
série abaixo:

012 )

Considere a última expressão de cada um dos dois trechos de programa Pascal abaixo. Para
cada uma destas expressões indique a ordem de avaliação, o valor e o tipo de cada resultado
intermediário bem como o valor final da expressão e seu tipo.

program primeiro;
var a,b,c : real;
r1 : ... ;

begin
a := 2.0; b:= -14.0; c:= 24.0;
r1:= (-b+sqrt(sqr(b)-4*a*c))/(2*a);
...
end.

program segundo;
var x,y,z: integer;
r2 : ... ;

begin
x:= 3; y:= 7; z:= 9;
r2:= odd(trunc(sqrt(z/x*z*y)) mod y div 2) and (x+y=z+1);
...
end.

013 )

Mostre o que aparecerá na tela do terminal quando o programa teste for executado para
cada um dos conjuntos de dados abaixo:

a) 5 9 4
b) 4 4 3
c) 3 5 -2

program teste ;
var a,c,d: integer;
b : boolean;

begin
writeln ('Entre com tres numeros inteiros: ');
readln (a,c,d);
if (a>=c-d div 2) or (c>d-2) and (d>c mod 2)
then b:= a= c
else b:= a= round (c/2);
writeln ('O teste deu ', b);
end.

014 )

Considere três regiões definidas abaixo:


região 1: (3,0 <= x <= 13,0) e ( 5,0 <= y < 7,0)
região 2: (3,0 <= x <= 13,0) e ( 7,0 <= y <= 11,0)
região 3: (3,0 <= x <= 13,0) e (11,0 < y <= 17,0)

Pede-se escrever um programa Pascal para ler os valores reais das coordenadas x e y de um
ponto P do plano, fornecidas pelo usuário por meio do teclado, e em seguida determinar e
exibir na tela se o ponto P está na região 1 ou na região 2 ou na região 3 ou em nenhuma
das três regiões consideradas.

015 )

A e B são dois números inteiros maiores que zero. Escrever um programa Pascal para ler os
valores de A e B fornecidos pelo teclado, e em seguida exibir na tela todos os divisores
comuns de A e B, isto é, todos os números que simultâneamente, dividem A e B.

016 )

V é um vetor de vinte elementos reais, cujo índice é do tipo 1 .. 20. Pede-se um programa
Pascal para ler os valores dos vinte elementos de V fornecidos pelo usuário através do
teclado e, em seguida determinar e exibir na tela (com mensagem apropriada) o maior valor
da diferença entre cada elemento V[i] e o elemento V[i-1], isto é, o maior valor das
diferenças

V[2] - V[1]
V[3] - V[2]
V[4] - V[3]
...
V[20] - V[19]

017 )

Escreva um programa Pascal para determinar se um ponto P de coordenadas x e y


fornecidas pelo usuário, pertence à figura (abaixo) formada por quatro retas .
018 )

Escreva um programa Pascal que leia um número inteiro positivo cujo valor esteja
compreendido entre 100 e 999 inclusive (100 <= N <= 999) e apresente no vídeo em linhas
diferentes os 3 dígitos que compõem o número submetido.

Ex: N = 609
6
0
9

019 )

Considere o programa Pascal abaixo:

Program questao4;
var
a, b, c, I : integer;
F: boolean;

begin
F:= false;
c:= 6;
read (a, b);
for I := 1 to 4 do
begin
if c mod b = 0
then begin
c := c + a;
write (a, F);
end
else begin
c := c - b;
b := b + 1;
end;
F := F or (a=b);
a := a div 2;
writeln (b, c);
end;
end.

Para os valores lidos de a = 6 e b = 3 diga o que aparecerá escrito no terminal de vídeo?

020 )

Escreva um programa em Pascal que a partir de um número N real lido do terminal calcule
o valor da série abaixo:

021 )

V é um vetor com n <= 50 elementos reais. Escreva um programa Pascal para obter pelo
teclado o inteiro n e em seguida os n valores reais para os n primeiros elementos de V.
O seu programa deve então mostrar na tela os n elementos do vetor dado, bem como todos
os pares de valores

Vi e Vi+1
para os quais
Vi > Vi+ 1

022 )
No plano XOY considere os quadrados ABCD e EFGH:
A(5.0, 5.0), B(-5.0, 5.0), C(-5.0, -5.0), D(5.0, -5.0)
E(3.0, 3.0), F(-3.0, 3.0), G(-3.0, -3.0), H(3.0, -3.0)
Estes quadrados determinam três regiões no plano XOY:

região 1: interior do quadrado EFGH (exclusive os lados);


região 2: exterior do quadrado ABCD (exclusive os lados);
região 3: o restante, isto é, a área compreendida entre o quadrado ABCD e o quadrado
EFGH, incluindo os lados de ambos os quadrados.

Pede-se um programa Pascal para ler as coordenadas x, y de um ponto P do plano,


determinar e exibir na tela do monitor uma mensagem informando a qual das três regiões
citadas pertence o ponto dado.

023 )

Sendo do tipo real as variáveis x e y e do tipo inteiro as variáveis w e z e seus respectivos


valores:

x = 15.2 y = 11.4 w = 23 z = 7 ,

avalie mostrando a ordem de execução e o tipo do resultado final, as seguintes expressões


Pascal:

a) w * abs(-w) mod ( round(x+y))


b) (-w) div z * x / y
c) w div 3 mod z >= 0
d) odd (w + z) or (w = z)
e) trunc(x-y) = (w div z)

024 )
Escreva um programa Pascal para ler um número inteiro N e em seguida ler N números
reais, todos dados pelo teclado. Determinar e apresentar na tela quantos destes N números
reais são negativos, quantos são nulos e quantos são positivos.

025 )

Faça um programa em Pascal para calcular e mostrar no vídeo o valor aproximado para PI
obtido por meio da soma dos primeiros 200 termos da série dada abaixo:

026 )

Faça um progama para escrever uma tabela de 20 linhas e 5 colunas contendo na primeira
coluna os números de 1 a 20, na segunda seus quadrados, na terçeira suas raízes quadradas,
na quarta seus cubos e na quinta suas raízes cúbicas. Os valores devem ser apresentados
com quatro casas decimais.

027 )

Se n > 0,

é chamado de número harmônico. Faça um programa que imprima Hn para um número n


fornecido pelo usuário.

028 )

Um número de Armstrong é um número de n dígitos que é igual à soma de cada um de seus


dígitos elevado à n-ésima potência. Por exemplo, 153 (que tem 3 dígitos) é igual à 1
elevado a 3 + 5 elevado a 3 +3 elevado a 3. Faça um programa PASCAL para escrever
todos os números de Armstrong menores que 999.
029 )

Escreva um programa Pascal para ler um número real, positivo T, calcular e imprimir o
valor de :

f(T) =

onde wj = 2P j/0.1 P = 3.1416

No cálculo de f(T) considere a soma dos 50 primeiros termos da série, isto é, os termos em
w1, w3, w5 ..., w99.

030 )

Faça um programa Pascal que leia um valor real, armazenando em um vetor e verifique se o
mesmo já foi digitado anteriormente. Caso este valor já tenha sido digitado, substitua o
valor anterior por zero e interrompa imediatamente o processo de pesquisa.
O programa terminará quando 100 valores forem digitados.
Imprima os 100 valores armazenados.

031 )

Cria um programa Pascal, no qual a partir de três valores ele diga o tipo de triângulo
existente.
{Marcus Vinicius de Araujo Lessa}
{28/03/2001}

032 )

Faça um programa pascal que diga se três pontos estao sobre uma mesma reta ou não!
{Flavio de Souza Gatto DRE: 101133182}
{02/04/2001}

033 )
Faça um programa Pascal que dado 2 pontos de coordenada XoY dar a equação da reta.
{Flavio de Souza Gatto DRE 101133182}
{02/04/2001}

034 )

Faça um programa que calcule a distância entre dois pontos fornecidos na forma P(X,Y):
{RAFAEL OLIVEIRA DA MOTA DRE: 101128616}
{02/04/2001}

035 )

Faça um programa para o calculo da velocidade media em plano inclinado em cm/s. Seu
programa deverá ler os valores da altura e comprimento do plano inclinado e as distâncias
percorridas nos instantes t1 e t2.
{Danielly de Azevedo Pereira DRE: 100179664}
{06/04/2001}

036 )

Faça um programa para o cálculo da idade de uma pessoa. Seu programa deve perguntar a
data de nascimento e a data de hoje e apresentar apenas quantos anos a pessoa possui.
{Danielly de Azevedo Pereira DRE: 100179664}
{06/04/2001}

037 )

Faça um programa Pascal para determinar os n termos de uma PA.


{Danielly de Azevedo Pereira DRE: 100179664}
{06/04/2001}

038 )

Fazer um programa que pergunte ao usuário o tamanho do quadrado, feito somente com a
letra x conforme exemplos abaixo.
{Thiago R. Takaki DRE: 100113090}
{06/04/2001}

xxxxx
xxxx
x x
x x
x x
x x
x x
xxxx
xxxxx
4x4
5x5

039 )

José tem cartões de creditos de dois bancos. Para saques em dinheiro sobre cartão, o Banco
Popular cobra juros simples de 0,41333% ao dia sobre a quantia inicialmente emprestada.
O Banco Estrelas cobra uma taxa fixa (independente do valor) de R$20,00 para cada
operação de saque em dinheiro mais juros simples de 0,26666% ao dia sobre a quantia
inicialmente emprestada. Fazer um programa para que o computador diga a José qual dos
dois cartões ele deve usar. O programa pergunta a quantia e o numero de dias até a data
prevista do pagamento do saque sobre o cartão. Logo em seguida indica o cartão mais
vantajoso (aquele que resultará no menor pagamento) escrevendo uma mensagem com o
nome do banco. Exemplo:

-------------------------tela deexecução---------------------------------------
PROGRAMA DE APOIO À DECISÃO FINANCEIRA
De quanto será o emprestimo? R$540,00
Por quantos dias? 8
O cartão mais vantajoso é o do Banco Popular.
-------------------------------------------------------------------------------------
{Thiago R. Takaki DRE: 100113090}
{06/04/2001}

040 )

Faça um programa que leia três valores e apresente como resultado uma mensagem
indicando se estes formam um triângulo.
{Anderson Teixeira Kreischer DRE: 101105804}
{06/04/2001}

041 )
Faça um programa Pascal que determine o número de vertices d um poliedro convexo que
tem 3 faces triangulares, 1 face quadrangular , 1 pentagonal e 1 hexagonal.
{Diane Yuki Murayama DRE: 101120870}
{06/04/2001}

042 )

Faça um programa Pascal que calcule a área de um certo triângulo equilátero inscrito em
uma circunferência com raio a ser fornecido.
{Diane Yuki Murayama DRE: 101120870}
{06/04/2001}

043 )

Um hotel que recebe hóspedes em regime de pensão completa tem preços diferenciados por
idade e sexo conforme está indicado abaixo:

PREÇOS EM REAIS POR IDADE E SEXO

até 12 anos de 12 a 55 anos mais de 55 anos


FEMININO 20 50 40
MASCULINO 20 60 45

Faça um programa que primeiro pergunte a idade do hóspede e depois, somente se for
necessário,o sexo, para em seguida fornecer o preço da diária. Uma possível tela de
execução do seu programa seria:

ROTINA DE CALCULO DA DIARIA

Qual a idade do hospede?19


Qual o sexo do hospede(1 para feminino, 2 para masculino)?1
O preco da diaria e RS$ 50,00.

E uma outra tela possivel seria a seguinte:

ROTINA DE CALCULO DA DIARIA

Qual a idade do hospede?10


O preco da diaria e RS$20,00.
{Samuel H. Tatizawa DRE:100111200}
{09/04/2001}

044 )

Crie um programa que verifique se n números estão em progressão geométrica.

{Samuel H. Tatizawa DRE:100111200}


{09/04/2001}

045 )

Faça um programa para calcular quantas diagonais possui um poligono.


{Anderson T Kreischer - DRE 101105804}
{09/04/2001}

046 )

Fazer um programa que escreva na tela os números de 4 algarismos que obedecem a


seguinte propriedade:

número : xyzw
(xy + zw)2 = xyzw

Ex: (20 + 25) = 2025

{Thiago R. Takaki eqa 100113090}


{09/04/2001}

047 )

Este programa nos indica entre um número n de clientes, aquele que fez a maior solicitação
de empréstimo ao banco.
Uma tela possível de seu programa seria:

Selecao do cliente que fez a maior solicitacao


Quantas solicitacoes foram recebida hoje?3
Entre com os 3 numeros dos clientes e os valores de suas solicitacoes
(atencao dois numeros por linha!):
1 345
4 789
2 100
O cliente que fez a maior solicitacao de emprestimo hoje foi o cliente 4

{Samuel H. Tatizawa DRE: 100111200}


{09/04/2001}

048 )

Faça um programa para calcular a equação da reta dado dois pontos ou o angulo da reta e
um ponto.

{Eduardo Müller Simas DRE: 101143048}


{11/04/2001}

049 )

Faça um programa Pascal para calcular a soma dos N primeiros termos da série dada
abaixo:

050 )

Faça um programa Pascal para ler 200 notas e apresentar uma mensagem se todas as notas
são válidas ou seja, se todas as notas estão no intervalo de 0 à 10. Após apresentação da
mensagem apresentar a média apenas dos valores válidos e em seguida apresentar estes
valores.

051 )

Um aluno ao entrar em uma Universidade recebeu um código numérico composto de 7


dígitos, para sua identificação. O código possui a seguinte regra: dois dígitos mais à
esquerda representam o ano de ingresso; o dígito seguinte, o período (1 ou 2); depois, dois
dígitos representando o código da carreira escolhida e finalmente dois dígitos representando
sua classificação.
Faça um programa que leia um número inteiro correspondente ao código do aluno e
apresente na tela as informações do aluno, uma em cada linha, como no exemplo abaixo:

Ex:
Informação de Entrada:
9621453

Informação de Saída:
Ano: 96
Semestre: 2
Carreira: 14
Aluno: 53

052 )

O país está vivendo uma crise no setor energético. Para melhor planejar os investimentos
no setor é preciso saber a média do consumo no período diurno e no noturno. O período
diurno vai de 7 h até às 19 h e o noturno das 19h até às 7h.
Faça um programa que leia o consumo de 0h até 1h, de 1h até 2h, de 2h até às 3h etc
(obedecendo esta ordem), e imprima as médias referentes aos períodos diurno e noturno.

053 )

Faça um programa que leia 50 valores reais e imprima quantas vezes o último valor foi
digitado.

054 )

Faça um programa em pascal onde uma matriz [3*3] será preenchida com zeros, exceto a
diagonal principal, onde cada elemento receberá 1.

{MARCUS VINICIUS LAURIA DE FARIA DRE: 101128195}


{18/04/2001}

055 ) Rescreva o trecho de programa abaixo utilizando o comando REPEAT no lugar do


comando WHILE.
readln (A);
while not (A = 0.0) do
begin
A := sin (A);
writeln (A:10:3);
readln (A);
end;

056 ) Reescreva a função PRIMO abaixo na forma de procedimento, alterando o programa


principal no que for necessário.

program DECIDE;
var
N : integer;

function primo (x : integer) : boolean;


var
i : integer;
begin
primo := true;
for i := 2 to sqrt(x) do
if (x mod i) = 0 then primo := false;
end;

begin
write ('Forneca valor : ');
readln (N);
if primo
then writeln (N:5, ' E UM NUMERO PRIMO')
else writeln (N:5, 'NAO E UM NUMERO PRIMO');
end.

057 ) Sejam dois conjuntos de caracteres: TA de tamanho A e TN de tamanho N. Faça um


procedimento (INSERE) que insira o conjunto TN no conjunto TA a partir de uma posição
P.

EX: Com os valores : TA = ABCDEFG A = 7 TN = WZ N = 2 P = 2


executando o procedimento INSERE (TN, N, TA, A, P) obtemos como resultado :

TA = ABWZCDEFG A = 9 TN = WZ N = 2 P = 2

ATENÇÃO : O tamanho máximo do conjunto TA é de 80 posições. Considere que um tipo


LINHA = ARRAY [1..80] OF CHAR foi definido no programa principal.
058 ) Dado um conjunto com N notas do tipo real, faça um procedimento chamado
DISTRIB que retorne em um vetor HIST, inteiro com 10 posições, o número de ocorrências
de cada faixa de notas.

Total de notas entre :


0 e 0.9 em HIST [1]
1 e 1.9 em HIST [2]
2 e 2.9 em HIST [3]
.
.
9 e 10 em HIST [10]

Assuma que no programa principal os seguintes tipos foram declarados:


type
notas = array [1..100] of real;
resp = array [1..10] of integer;

059 ) O programa abaixo lê os termos de uma matriz e os imprime de forma diferente. Os


dados de leitura estão fornecidos depois do programa. Diga como os números lidos serão
mostrados na tela. Preste atenção aos índices utilizados quando da leitura e impressão.

program questao;
const lim=10;
var
mat: array [1..lim,1..lim] of integer;{matriz }
dim1,dim2:integer; {dimensões da matriz}
ind1,ind2:integer; {índices da matriz}
begin
writeln ('Forneca as dimensoes da matriz');
readln ( dim1,dim2);
for ind1:=1 to dim1 do
begin
for ind2:=1 to dim2 do read ( mat[ind1,ind2] );
readln;
end ;
for ind2:=1 to dim2 do
begin
for ind1:=1 to dim1 do write(mat[ind1,ind2]:3);
writeln;
end;
end.
Dados fornecidos pelo teclado para este exercício:
34
40
6789
56349
5
7
82105662

060 )

O programa abaixo lê um nome e determina quantas vogais existem neste nome. Prepare
uma função de nome NumVogais que determina quantas vogais existem no nome,
retornando um número inteiro como valor. O nome é fornecido somente com letras
minúsculas.

program questao2;
type str=array [1..50] of char;
var nome:str;
{------------------------------}
procedure LeNome( var dados:str);
var k,n:integer; {contadores}
begin
k:=1;
while not eoln and (k<51) do
begin
read(dados[k]);
k:=k+1
end;
for n:=k to 50 do dados[n]:=' ';
readln;
end {LeNome};
{------------------------------}
function NumVogais( ...
PREPARE ESTA FUNÇÃO
{------------------------------}
begin
writeln('Forneca um nome com ate 50 caracteres');
LeNome ( nome);
writeln ('Este nome contem ', Numvogais(nome):3, ' vogais');
end.

061 )
Prepare um programa que:
a-Leia VÁRIOS conjuntos de 3 coeficientes da equação da parábola: y= a*x*x + b*x + c,
b-Discuta a equação, escrevendo as seguintes mensagens:

se a=0: 'Fim do programa'. O PROGRAMA NESTE CASO É ABANDONADO.


se a>0: Curvatura da parabola é no sentido positivo de Oy,
se a<0: Curvatura da parabola é no sentido negativo de Oy,
se b*b-4*a*c <0: Parabola nao corta Ox,
se b*b-4*a*c =0: Parabola tangencia Ox,
se b*b-4*a*c >0: Parabola corta Ox.

062 )

Prepare um programa para calcular a série:

Se abs(x) for maior ou igual a 1 o programa emite mensagem de erro: 'Não há definição
para valor fornecido'.
Calcular a série até que o valor absoluto de termo seja menor que 1.0E-20.

063 )

Escreva um procedimento Pascal que receba um conjunto de 10 valores reais e retorne o


próprio conjunto modificado onde, cada elemento é a média aritmética dele com seus
vizinhos da direita e esquerda. No caso dos extremos calcule apenas a média do elemento
com seu vizinho único.

Assuma que no programa principal existe definido o seguinte tipo:


TYPE LISTA = ARRAY[1..10] OF REAL;

Exemplo:
fornecido -- 1.0 5.0 3.0 4.0 8.0 9.0 7.0 5.0 3.0 1.0
calculado -- 3.0 3.0 4.0 5.0 7.0 8.0 7.0 5.0 3.0 2.0

064 )

Mostre o que será impresso pelo programa questao2. O valor dado para x é o inteiro 4.
Justifique sua resposta.
program questao2;
var x : integer;
{------------------------------}
procedure pa( var y:integer);
begin
y := y*2;
end {pa};
{------------------------------}
procedure pb (x : integer);
begin
x := x + 5;
end {pb};
{------------------------------}
begin
writeln('Entre com um valor inteiro para x');
readln (x);
pb(x);
writeln (x);
pa(x);
writeln (x);
end.

065 )

O programa questao3 lê os inteiros m, n e as matrizes de reais A, B com m linhas e n


colunas; constrói e imprime a matriz C tal que C[i,j] é sempre o menor entre A[i,j] e B[i,j]
( ou o seu valor comum, se forem iguais). Complete a definição do procedimento
CONSTROI que recebe m, n, as matrizes A e B, constrói e devolve a matriz C.

program questao3;
const TamMax = 10;
type matriz = array [1..TamMax, 1..TamMax] of real;
var A, B, C : matriz;
m, n : integer;
procedure le (p, q : integer; var x : matriz);
var i, j : integer;
begin
for i := 1 to p do
begin
writeln ('Entre com os elementos da linha', i:4);
for j := 1 to q do read (x[i,j]);
readln;
end;
end;
procedure constroi (.....);
{ voce deve escrever a definição deste procedimento }

procedure escreve (p, q: integer; x : matriz);


{ voce nada precisa fazer; este procedimento imprime uma matriz }

begin {programa principal}


write ('Entre com a quantidade de');
writeln (' linhas e colunas das matrizes');
readln (m, n);
le (m, n, A);
le (m, n, B);
constroi (m, n, A, B, C);
escreve (m, n, C);
end.

066 )

Escreva um único programa Pascal para


- ler um texto com no MÁXIMO 80 caracteres em que as letras são sempre minúsculas,
dado numa única linha;
- imprimir este texto numa única linha substituindo cada vogal por um único espaço em
branco.

067 )

Reescreva o programa abaixo utilizando o comando WHILE no lugar do comando FOR.

program fatorial;
var num, i, fat: integer;
begin
write ('Qual o numero?');
readln (num);
if num < 0 then
writeln ('OPS!!!')
else
begin
fat :=1;
for i :=1 to num do
fat := fat * i;
writeln ('Fatorial',fat);
end;
end.
068 )

Reescreva o programa abaixo substituindo o procedimento CALCULA por uma função que
não utiliza variáveis globais.

program q2;
const NT=5;
type p = array [1 .. NT] of integer;
var i, result: integer;
pol : p;
procedure calcula (pol:p);
begin
result := 1;
for i := 1 to NT do
result := result+i*pol[i];
end;

begin
for i := 1 to NT do
read (pol [i]);
calcula (pol);
writeln (result);
end.

069 )

Escolha e escreva uma sequencia de 6 números inteiros ao acaso. O que será impresso pelo
programa q3 abaixo quando fornecida a sequencia escolhida?

program q3;
const
NL=2;
NC=3;
type
IL = 1..NL;
IC = 1..NC;
var
l,c,i,j, elem : integer;
mat: array[IL, IC] of integer;
begin
for l:= 1 to NL do
for c:= 1 to NC do
begin
read (elem);
if odd (elem) then
mat [l,c]:= 2*elem
else
mat[l,c]:=elem div 2;
end;
for i:= 1 to NC do
begin
for j:=1 to NL do
write (mat [j,i]);
writeln;
end;
end.

070 )

Escolha e escreva uma sequencia de 5 números ao acaso que contenha o número zero e seja
terminada por um número negativo. O que será impresso pelo programa q4 abaixo quando
esta sequencia for fornecida?

program q4;
const N = 10;
BASE = 16;
var
pilha : array [1 .. N] of integer;
digito : array [0 .. 15] of char;
numero : integer;
procedure inicializa;
var i : integer;
begin
for i := 0 to 9 do digito [i] := chr (ord ('0') + i);
for i := 10 to 15 do digito [i] := chr (ord ('A') + i - 10);
end;

procedure converte (num : integer);


var i,j : integer;
begin
i := 0;
repeat
resto := num mod BASE;
i := i+1;
pilha [i] := resto;
num := num div BASE;
until num = 0;
for j := i downto 1 do write (digito [pilha [j]]);
writeln;
end;

begin
inicializa;
readln (numero);
while not (numero < 0) do
begin
converte (numero);
readln (numero);
end;
end.

071 )

Faça um programa Pascal que leia do teclado uma constante K e uma matriz de números
inteiros de 4 linhas por 4 colunas e imprima a matriz resultante da multiplicação da
constante K pelos elementos da diagonal principal, no formato de saída dado no exemplo
abaixo.

Entre com K:
3

Entre com matriz 4X4 :


1046
1325
7621
4156

Matriz resultante :
3046
1925
7661
4 1 5 18

072 )

Faça um programa que leia do teclado uma frase (máximo 80 caracteres) e imprima a
mesma espelhada no mesmo formato apresentado pelo exemplo abaixo.

Entre com a frase :


ESSA EH FACIL!
Frase espelhada :
!LICAF HE ASSE

073 )

Voce é dono de uma loja e recebe encomendas de mercadorias que tem diferentes prazos de
entrega. Faça um programa que receba a data de encomenda, o prazo de entrega (em dias),
e dê como resultado a data prevista para entrega da mercadoria ao cliente. Suponha que
todos os meses do ano têm 30 dias. O formato de saída deverá ser o seguinte (como
exemplo):

Entre com a data de encomenda :


28 12 1991
Entre com o prazo (dias) :
60
Data de entrega :
28/ 2/1992

074 )

Escreva uma função calcula que implementa uma calculadora de quatro operações soma,
subtração, multiplicação e divisão. A função recebe três parâmetros: os dois operandos (tipo
real) e mais a operação. O tipo da operação é representado pelos seguintes caracteres: '+'
(soma), '-' (subtração), '*' (multiplicação), '/' (divisão). Escreva um programa que utilize
esta função, onde são lidos os operandos e impresso o resultado.

Sugestão: O comando Case facilita a implementação da função.

075 )

Supondo que o seu compilador Pascal não possui os operadores DIV, MOD e a função
ABS, escreva funções que implementem estas operações.

Obs. Suponha que a função MOD só recebe parâmetros positivos.

076 )
Escreva uma função Pascal que receba como parâmetros dois vetores de tipo inteiro e
tamanho 10. A função deve calcular a média aritmética dos elementos do primeiro vetor
cujo elemento correspondente de mesmo índice no segundo vetor seja igual a 1. Se nenhum
elemento do segundo vetor for igual a 1 a média vale 0.

Assuma que no programa principal existe definido o seguinte tipo


TYPE conjunto = ARRAY [1..10] of integer;

Exemplo
fornecidos
1º vetor -- 3 5 8 9 1 0 6 5 7 6
2º vetor -- 1 0 1 0 0 1 1 0 1 1
média calculada: (3 + 8 + 0 + 6 + 7 + 6)/6 = 5.0

077 )

Escreva um programa Pascal que leia uma linha do teclado de até 80 caracteres. O
programa deve substituir a letra que aparece em seguida a cada caracter branco pela sua
correspondente maiúscula. Assuma que entre grupos de caracteres somente pode existir um
único caracter branco.

Obs. Não é necessário conhecimento dos códigos da tabela ASCII, mas se você precisar:
ord('A') = 65
ord('a') = 97
e a diferença entre os códigos das letras minúsculas e das maiúsculas correspondentes é
sempre igual a 32.

Exemplo
Entrada: O numero 4 e divisivel Por 2.
Saida: O Numero 4 E Divisivel Por 2.

078 )

Assuma que no programa as seguintes linhas de comando foram declaradas:

const
Max = 3;
MaxCadeia = 40;
type
Matriz = array[1..Max,1..Max] of integer;
Cadeia = array[1..MaxCadeia] of char;
var
A: Matriz;
k, i, j, Posicao: integer;
Linha: Cadeia;

a) Faça um trecho de programa para fazer a variável Posicao indicar a primeira ocorrência
da seqüência de caracteres 'abc' na variável Linha. Se Linha não contém a seqüência, o
valor de Posicao deverá ser zero. Por exemplo:
Linha = 'cadeia que contem a sequencia abc. '
Posicao = 31

b) Qual o valor da matriz A após a execução do trecho de programa abaixo:


k := 1;
for i := 1 to Max do
for j := 1 to Max do
begin
while (i+j) mod k = 0 do k := k + 1;
A[i,j] := k;
end;

079 )

a) Faça uma procedure Imprime(A:Matriz), que imprima a matriz A, pulando de linha em


cada linha da matriz.
Assuma que no programa as seguintes linhas de comando foram declaradas:

const
Max = 3;
type
Matriz = array[1..Max,1..Max] of integer;
var
A: Matriz;

b) Quais os valores impressos pelo programa abaixo:


Program Questaob;
var
a, b, c, d: integer;
procedure Proc1(a: integer; var b: integer);
var c: integer;
begin
a := 1; b := 2; c := 3;
end;

function Func1(c,d:integer): integer;


begin
Func1 := c + d;
end;

{Programa principal}
begin
a := 5; b:= 6; c:= 7; d :=8;
Proc1(a, d);
b := Func1(a, c);
writeln('a = ',a,' b = ',b,' c = ',c,' d = ',d);
end.

080 )

Faça um programa que leia uma expressão em Pascal e indique se esta expressão é válida
ou não em relação ao balanceamento de parênteses. Por exemplo:

(x * 3) + 4 * (5 * a) --> válida
(k - 1 * 5 * (5 * b - a) --> inválida
(b * 3)) * (a --> inválida

081 )

Mostre o que será impresso pelo programa abaixo:

program Q1;
var
G, A : integer;
x : char;
procedure PA (A:integer; M:char; var B:char);
begin
writeln (A:4, M:3);
B:= succ (M);
A:= sqr (G);
writeln (A:4, M:3, B:3);
end;

procedure PB (V:integer; var S:char);


var X:char;
function succ (x: char): char;
begin
succ := chr ( ord(x) + 1);
end;
begin
writeln (V:4, S:3);
V:= sqr(V) + 3;
S:= succ(S);
X:= 'B';
writeln (V:4, S:3, X:3);
end;

begin
G:= 7;
A:= 12;
PA (A,'E',X);
writeln (A:4, X:3);
PB (5, X);
writeln (G:4, A:3, X:3);
end.

082 )

Seja uma função f de 3 variáveis inteiras:


f(a,b,c) = ab + ac + bc

Escreva um programa Pascal para tabular os valores dessa função para todas as
combinações dos valores de seus argumentos nos intervalos abaixo:

a: [0 1 2 3 4 5]
b: [1 2 3]
c: [2 3 4]

O resultado deverá ser impresso na forma da apresentação abaixo:


a b c ab+ac+bc
-----------------------------------------
0 1 2 2
0 1 3 3
0 1 4 4
0 2 2 4
....................
5 3 4 47

083 )

Escreva um procedimento para inserir um caractere em uma frase dada. O procedimento


poderá ser chamado da forma seguinte:
insere (frase, pos, c)
onde os parâmetros são:
frase um vetor de caracteres de 80 posições.
pos a posição no vetor frase onde deve ser inserido o caractere.
c o caractere a ser inserido.

Todos os caracteres originalmente situados a partir da posição pos serão deslocados para a
direita de 1 posição. O caractere situado na posição 80 será perdido.
Por exemplo, se f é uma variável do programa principal que contém um vetor com os
caracteres: (o caractere _ abaixo representa um espaço em branco)

A_pova_estava_facil_______... _______

Então a chamada insere(f,4,'r') fará com que f passe a conter os caracteres seguintes:

A_prova_estava_facil_______..._______

084 )

Complete o programa PASCAL abaixo que le um texto formado por 10 linhas de até 60
caracteres cada linha. Para cada uma das linhas o programa faz as seguintes substituições:
'a' por '1'; 'e' por '2'; 'i' por '3'; 'o' por '4'; e 'u' por '5'.

A procedure modifica, que efetua as substituições, deve utilizar dois parâmetros: o


primeiro, do tipo variável, com a linha lida que retornará com as modificações efetuadas; e
o segundo, do tipo valor, com o tamanho da linha.

A procedure Leitura le uma linha do teclado, e a procedure Imprime lista uma linha no
vídeo. Assuma que o texto é formado apenas por letras minúsculas.

Program Questao;
Var
...
... {declare as variáveis ...}
...
Procedure Leitura (.......)
...
... {faça a procedure Leitura ...}
...
{----------------------------------------------------------}
Procedure Modifica (......)
...
... {faça a procedure Modifica ...}
...
{----------------------------------------------------------}
Procedure Imprime (......)
...
... {faça a procedure Imprime ...}
...
{----------------------------------------------------------}
Begin
For i:=1 to 10 do
Begin
Leitura (linha, tamanho);
Modifica (linha, tamanho);
Imprime (linha, tamanho);
End;
End.

085 )

Considere as declarações abaixo:


Type Matriz = array [1..10, 1..10] of Integer;
Vetor = array [1..10] of Integer;
Var m,n: Integer;
A: Matriz;
X, Colunas: Vetor;

Escreva uma procedure PASCAL de nome Max que recebe m, n e A, e retorna X


constituído pelos elementos máximos de cada linha de A, e Colunas constituído pelos
números das colunas de A onde os elementos de X foram encontrados.
As variáveis m e n são as dimensões de A. No caso de alguma linha possuir mais de um
elemento máximo considere a primeira ocorrência.

Por exemplo, se:


2 1 3
A = -5 2 0
7 9 9

então o procedimento retornará X = [3 2 9] e Colunas = [3 2 2].

086 )

As gravidades relativas de alguns planetas em relação a da Terra são dadas abaixo:


1) 0.37 ( Mercúrio )
2) 0.88 ( Vênus )
3) 0.38 ( Marte )
4) 2.64 (Júpiter )
5) 1.15 ( Saturno )
6) 1.17 (Urano )

Escreva um programa que leia seu peso na Terra, o índice do planeta desejado e imprima o
valor de seu peso neste planeta.

087 )

Um processo de codificação de uma frase de 40 caracteres com código (chave) igual a 8


consiste em iniciar arrumando a frase em forma de uma matrtiz de 5 linhas por 8 colunas.
Por exemplo, a frase:

A PREGUICA E A MAE DE TODOS OS VICIOS

A P R E G U I

C A E A M

A E D E T O

D O S O S V

I C I O S

A codificação transposta é completada reescrevendo a matrtiz em forma de vetor


observando que no lugar de linhas utilizaremos os colunas. Completando o exemplo acima
temos:

ACADI AEOCP SIRED OE EOSGA S U T IMOV

Escreva uma procedure (CODIFICA) que receba uma frase como parâmetro e devolva o
mesmo parâmetro modificado segundo a codificação descrita acima.

Suponha que no programa principal o seguinte tipo está definido:


TYPE FRASE = ARRAY[1..40] OF CHAR;

088 )
Para resolver esta questão você vai programar uma forma peculiar de fazer a multiplicação
de dois números inteiros quaisquer. O algoritmo é o seguinte: para multiplicar os dois
números comece duas séries dividindo o maior por dois e multiplicando o menor por dois.
Sempre que o primeiro número (o que era originalmente maior) for impar, e somente neste
caso, acumule o segundo número. Continue até que o primeiro número tenha sido reduzido
à unidade. Despreze as partes fracionárias nas divisões por dois do primeiro número. O
produto é igual à soma dos segundos números acumulados. Por exemplo, no caso de 53
vezes 26 temos:

Maior (primeiro) 53 26 13 6 3 1

Menor (segundo) 26 52 104 208 416 832

+ + + +

26 130 546 1378

O produto de 53*26 é 1378 que é a soma de 26+104+416+832

Faça uma função (MULTI)que receba dois números inteiros, a e b, e retorne o produto
calculado pelo método descrito acima. Atenção: o maior valor pode ser passado no
parâmetro a ou b.

089 )

O número 2025 tem a seguinte propriedade: se você pega o número formado pelos seus
dois primeiros dígitos (20), soma com o número formado pelos seus dois últimos dígitos
(25), e eleva o resultado (45) ao quadrado, você obtém de volta o valor original do número
(452 = 2025). Faça um programa que escreva na tela todos os números de quatro algarismos
que têm esta propriedade (se você depois rodar o programa descobrirá que além de 2025
existem mais dois).

090 )

Um programador teve necessidade de operar com números inteiros positivos muito maiores
do que os que normalmente usamos. Por exemplo, números de 500 dígitos! Para isto ele
definiu o tipo "longuissimo" como abaixo:
const tamanho=500;

type longuissimo=array [1..tamanho] of


integer;

Por exemplo, se o número 12345678901234567890123456789 está em "a" do tipo


"longuissimo", então a[1]=0, a[2]=0, etc, a[470]=0, a[471]=0, a[472]=1, a[473]=2, etc,
a[499]=8, a[500]=9. Mas é claro que o trabalho não acaba aí, pois PASCAL (assim como as
outras linguagens de programação) não tem prontas as rotinas que fazem as quatro
operações aritméticas para este tipo de número. Nosso amigo programou então a procedure
"some" de três parâmetros tipo "longuissimo", que coloca a soma dos parâmetros "a" e "b"
no parâmetro "c".

Sua questão na prova é substituir abaixo cada ..... por ou um inteiro, ou uma variável, ou
um identificador PASCAL, ou ainda uma palavra predefinida em PASCAL, para que a
procedure "some" faça o equivalente a "c:=a+b" para "a", "b" e "c" do tipo "longuissimo".

1) procedure some(a,.....:longuissimo; var c:.....);


2) var i,aux:integer;
3) begin
4) for i:= 1 to tamanho do c[.....]:=0;
5) for i:= tamanho downto ..... do
6) begin
7) aux:=a[i]+b[i]+c[i];
8) if aux<10 then c[i]:=.....
9) else if i=1 then writeln('ERRO: soma grande demais')
10) else begin
11) c[i]:=aux-10;
12) c[i-1]:=1;
13) end;
14) end;
15) end;

091 )

A quantidade de informação (QI) das ocorrências das vogais em um texto pode ser definida
pela fórmula

QI = - ln P (menos logaritmo neperiano de P)

em que P é a probabilidade da ocorrência da vogal depois de uma determinada consoante


ou grupo consonantal. Por exemplo, a QI da ocorrência da letra "u" depois da letra "q" em
um texto na lingua portuguesa é 0 (zero, não tem nenhuma informação), uma vez que
depois de "q" vem sempre "u" (a probabilidade da ocorrência é 1). Queremos fazer um
trecho de programa que ajude um linguista em suas pesquisas sobre a quantidade de
informação das ocorrências de letras nos textos. Para tanto escreva uma "procedure",
chamada "adepoisdej" que examina um texto já dado em uma variável recebida como
parâmetro do tipo "livro" declarado como abaixo
type
livro:array [1..10000] of char;

e retorne três parâmetros com os seguintes valores:

(1) quantas vezes a letra "j" aparece no texto;


(2) em quantas destas aparições o "j" é seguido de "a";
(3) - ln (2)/(1), isto é, menos o logaritmo do número de aparições de "ja" dividido pelo
número total de aparições de "j" (como uma estimativa da QI de "a" depois de "j").

092 )

Faça, colocando as mensagens que orientem a entrada dos dados, um programa que:

1) leia os nomes (cada um fixo com 40 caracteres) dos alunos de uma turma de até 60
alunos;
2) após o nome de cada aluno leia suas três notas de 0.0 a 10.0;
3) interrompa a lista de alunos digitando um nome qualquer iniciando pelo digito "1" (a
lista pode ter 60 alunos ou menos).
4) em seguida, pule três linhas, escreva o título "RELACAO DOS ALUNOS PARA
PROVA FINAL", pule outra linha e escreva então apenas os nomes daqueles alunos que
tiveram média das três notas menor do que sete.

093 )

Faça um programa Pascal que leia do teclado um número inteiro positivo e imprima na
linha seguinte a menor potência de dois maior que este número.

094 )

Escreva o código Pascal de uma função real IR que calcule o imposto de renda devido a
partir de dois parâmetros reais, RT (rendimento tributável) e DD (despesas dedutíveis),
segundo a tabela progressiva abaixo, que constou dos formulários para declaração de 1995:
Tabela progressiva em UFIR

Base de cálculo Alíquota Parcela a deduzir


%

até 12.000 0,0 0,00

acima de 12.000 até 23.400 15,0 1.800,00


A Base de cálculo é o
acima de 23.400 até 216.000 26,6 4.516,68 rendimento tributável
diminuído das despesas
dedutíveis. Por exemplo, o
acima de 216.000 35,0 22.659,00 imposto de renda devido de
quem teve rendimento
tributável de 30.000,00 UFIRs e despesas dedutíveis de 10.000,00 UFIRs foi 1.200,00
UFIRs (isto é, 15% de 20.000,00 menos 1.800,00).

Atenção: Não escreva o programa principal. Escreva somente a função.

095 )

Um posto de gasolina cadastrou seus clientes, atribuindo-lhes números inteiros. Durante um


mês, cada vez que um cliente enchia o tanque, o seu número foi colocado numa urna. Na
festa do dia do sorteio, de acordo com o regulamento, era para se ir retirando números da
urna até que 50 clientes diferentes fossem contemplados.Faça um programa para que o
gerente use o micro do posto na hora da festa de modo a não perder tempo ou errar na
verificação de que um mesmo cliente não seria contemplado mais de uma vez. O programa
deve:

(1) Emitir a mensagem: "Retire um numero da urna e escreva: ".


(2) Ler o número do teclado.
(3) Comparar o número lido com todos os outros números que foram lidos
anteriormente.
(4) Se o número lido for igual a um deles o programa escreve a mensagem
"NUMERO DUPLICADO" e volta a executar o ítem (1).
(5) Se o número lido for diferente de todos os que o precederam o programa vai
executar (6) se já tiverem sido retirados 50 números sem contar as duplicações, ou
volta a executar (1) no caso desta condição não estar satisfeita (menos de 50
contemplados).
(6) Saltar duas linhas, escrever a mensagem "OS 50 NUMEROS SORTEADOS
FORAM: " e, a partir da linha seguinte, escrever todos os números retirados da
urna, um em cada linha, SEM REPETIR OS QUE FORAM RETIRADOS MAIS
DE UMA VEZ, e terminar.

096 )

Faça um procedimento que receba como parâmetro um número inteiro 1 <= n <= 49, n
impar, e a partir daí desenhe à esquerda da tela um triângulo tipo "árvore de Natal" cuja
base tem comprimento n, preenchido com asteristicos. Os desenhos para os diversos n
seriam os seguintes:

para n = 1,

para n = 3,
 *
***

para n = 5,
  *
 ***
***** 

para n = 7,
   *
  ***
 *****
*******

etc.

097 )

Escreva o que aparecerá no vídeo quando os programas abaixo forem executados:

Programa 1:
program Q1P1;
var x,y,z: integer;

function Verifica (k: integer): boolean;


begin
if (k mod 2 = 0)
then Verifica := true
else Verifica := false;
end;

procedure Proc1(a,b: integer; var c: integer);


var
d: integer;
T: boolean;
begin
d := 2 * c;
c := a + b * d;
T := Verifica(c);
if T then c := c*2
else c := c*3;
end;

{Programa principal}
begin
x := 3; y := 2; z := 1;
Proc1(x,y,z); writeln(z);
x := 6; y := 4; z := 1;
Proc1(x,y,z); writeln(z);
end.

Programa 2:
program Q1P2;
var
a, b, c, d, e, f: integer;

procedure Pega(a: integer; var b: integer)


var d: integer;
begin
d := a; a := b; b:= d;
c := 30;
end;

{Programa principal}
begin
a := 1; b := 2; c := 3; d := 4; e := 5; f := 6;
Pega(e, f);
writeln(a, b, c, d, e, f)
end.

098 )
Escreva um procedimento que receba como parâmetro 2 vetores do tipo:
type VETOR = array[1..100] of integer;
e SÓ TROQUE os valores dos 2 vetores nas posições CORRESPONDENTES, caso haja
algum valor do primeiro vetor MAIOR do que o respectivo valor do segundo vetor. Esta
troca deve alterar os vetores do programa principal.

099 )

Faça um procedimento que leia um nome através do teclado contendo até 40 posições. No
caso do usuário digitar um nome menor do que 40, preencha o restante das posições com
branco. Assuma que a definição abaixo está no programa principal:
type vetor= array [1..40] of char;
Restições:
Só é permitido armazenar no vetor os seguintes caracteres :
. Caracteres maiúsculos de A a Z;
. Caracter "BRANCO" ou "ESPAÇO" para separação;
. Caracter "." para abreviação.
No caso do digitador entrar com algum caracter do nome que não atenda às regras
explicitadas acima, o procedimento deve solicitar a entrada do nome completo novamente,
QUANTAS VEZES forem NECESSÁRIAS para o correto armazenamento. Não se esqueça
de completar as posições que não pertençam ao nome com "brancos".

100 )

Em uma pesquisa popular realizada com 100 famílias, foi averiguado quantos salários
mínimos aproximadamente cada família recebia mensalmente. Estes dados já estão em um
vetor do tipo:
type V = array[1..100] of integer;
cujo conteúdo é o numero de salários mínimos por família.

Fazer um procedimento que receba este vetor, calcule e imprima:


. A média do número de salários da população pesquisada;
. Quantas famílias recebem 1 salário mínimo mensalmente;
. Quantas famílias recebem de 5 a 10 salários mínimos.

101 )

Faça um procedimento pegadigito (num,n : integer; var vet : cpf); que recebe um número
inteiro de n dígitos e coloca cada dígito no array vet (dígito n na posição n, dígito n-1 na
posição n-1, ..., dígito 1 na posição 1). Tipo cpf definido no programa principal como
array[1..11] of integer.

102 )

Faça uma função multivet (n:integer; v1, v2:cpf):integer; que retorna a soma dos produtos
dos elementos correspondentes dos vetores (v1[1]*v2[1] + v1[2]*v2[2] + v1[3]*v2[3]+ ...+
v1[n]*v2[n]). Considere que o tipo cpf foi declarado no programa principal:
type cpf = array[1..9] of integer;

103 )

Faça um procedimento desloca (n:integer; var v:cpf) que desloca de uma posição os
elementos de um vetor (vn+1 = vn, vn = vn-1, ..., v2 = v1), onde n é o número de posições
ocupadas no vetor, cuja dimensão é no mínimo n + 1. Considere que o tipo cpf foi
declarado no programa principal:
type cpf = array[1..9] of integer;

104 )

Escreva uma função Pascal cos(x, valor) para calcular o valor de Cosseno em torno do
ponto zero utilizando a série abaixo.

Pare de adicionar novos termos quando o valor absoluto do próximo termo for menor que
um certo valor fornecido como parâmetro à função.

105 )

Um CPF é um número com 11 dígitos, sendo que os dois últimos dígitos são calculados em
função dos nove restantes e são chamados de dígitos verificadores, pois permitem validar o
CPF. O processo de validação é bastante simples e está descrito a seguir:

CPF = d9d8d7d6d5d4d3d2d1 - v2v1


v2 = 2*d1 + 3*d2 + 4*d3 + 5*d4 + 6*d5 + 7*d6 + 8*d7 + 9*d8 + 10*d9
resto = v2 mod 11
Se resto <= 1 então v2 = 0
senão v2 = 11 - resto;
v1 = 2*v2 + 3*d1 + 4*d2 + 5*d3 + 6*d4 + 7*d5 + 8*d6 + 9*d7 + 10*d8 + 11*d9
resto = v1 mod 11
se resto <= 1 então v1 = 0
senão v1 = 11 - resto;

Faça uma função que receba um vetor de 11 inteiros contendo os dígitos do CPF calcule os
valores v2 e v1 usando os 9 primeiros dígitos, compare estes dígitos com os recebidos no
vetor e retorne true se forem iguais e caso contrário.false.

106 )

Mostre o que será impresso pelos seguintes trechos de programas:

A)
M:= +3.0; N:= -4.0; X:= +0.75; Y:= 0.0;
Y:= 2 * (sqr(M) + sqr(N));
Y:= sqrt (Y - sqr(sin(X)) - sqr(cos(X)));
writeln ('O valor de Y eh=', Y:5:2);

B)
S:=0; K:=1;
for K:=6 to 10 do
begin
if (K mod 3) = 0 then S:= S + 1
else if (K mod 3) = 1 then S:= S + 2
else S:= S * K;
writeln (K:3, 'JUNTO COM ', S:5);
end;

C)
program ITEM_C;
var X,Y: real;

function VALOR (A,B: real): integer;


var V: integer;
begin
if odd (round(B/A)) then
V:= trunc(B) div trunc(A)
else
V:= trunc(B) mod trunc(A);
VALOR:=V;
end;
begin
X:= +2.0; Y:= +5.0;
writeln ('Calculei V= ', VALOR(X,Y));
X:= 2.5;
writeln ('Agora V= ', VALOR(X,Y));
end.

D)
program ITEM_D;
var I,X: integer;

procedure CALC (A: integer; var S: integer);


var
J: integer;
begin
for J:=1 to 3 do S:= S + A * J;
end;

begin
X:= 12;
for I:=4 to 6 do
begin
CALC (I,X);
writeln ('O valor eh:', X:5);
end;
end.

E)
program ITEM_E;
type
PALA= array[1..6] of char;
var
FONTE, SENHA: PALA;

procedure MUDA (P:PALA; var Q:PALA);


var J,K: integer;
begin
for J:=1 to 6 do Q[J]:= '#';
J:=1;
for K:=6 downto 1 do
if P[K] <> '-' then
begin
Q[J]:= P[K];
J:= J+1;
end;
write ('A Senha eh=');
for J:=1 to 6 do
write (Q[J]);
writeln;
end; {fim da procedure MUDA}

begin
FONTE:='ARARAS'; MUDA(FONTE,SENHA);
FONTE:='ROMA--’; MUDA(FONTE,SENHA);
FONTE:='AR-DOR'; MUDA(FONTE,SENHA);
end.

107 )

Faça uma funçäo para calcular o fatorial de um número inteiro N, sendo N>0, utilizando o
comando de repetiçäo REPEAT....UNTIL.

108 )

Um pesquisador fez 50 medidas de temperaturas em 20 locais diferentes, e resolveu fazer


um programa PASCAL para armazenar estas medidas em uma matriz com 20 linhas e 50
colunas, onde cada linha possui as temperaturas referentes a um determinado local. O
programa já lê todos os dados do teclado e monta a matriz, considerando que os locais säo
identificados por números inteiros de 1 a 20. Faça um procedimento que receba como
parâmetros de entrada a matriz lida e o número do local a considerar. Calcule para este
local, as temperaturas média e mínima; devolvendo estes 2 resultados para o programa
principal.

OBS- não é necessário fazer o programa principal, o qual por sua vez já tem a
seguinte definição para a matriz de temperaturas:

type Matemp = array [1..20,1..50] of real;

109 )

O seguinte somatório representa o valor de ; Pi/4

Para se calcular um valor aproximado de Pi , pode-se utilizar um número finito de parcelas


deste somatório. Para isto, normalmente interrompe-se o cálculo do somatório quando o
valor absoluto da próxima parcela a ser somada é menor do que uma fraçäo pré-definida do
valor já acumulado no somatório.

Escreva uma funçäo que receba como parâmetro um número real especificando a fraçäo
mencionada e devolve como resultado o valor calculado de Pi.

110 )

Faça um procedimento que receba como parâmetro um vetor de 50 caracteres contendo


uma mensagem codificada segundo o critério descrito abaixo, e decodifique-a devolvendo
como resultado a mensagem original.
Assuma que no programa principal o seguinte tipo foi declarado:
lista = array [1..50] of char;

CRITÉRIO DE CODIFICAÇÄO:

 cada letra do alfabeto, seja ela maiúscula ou minúscula, é substituída pela sua
subseqüente em ordem alfabética, ou seja o 'A' vira 'B', o 'B' vira 'C' e assim por
diante.
 A letra 'Z', por ser a última do alfabeto, é transformada em 'A'.
 Todos os demais caracteres diferentes de letras são mantidos, a menos do espaço ou
caracter "branco" (' ') que é substituído pela barra '/'.

111 )

Mostre o que será impresso pelos seguintes trechos de programa:

a)
m:= +3.0; n:= -4.0; h:= 0.0;
h:= sqrt (h + sqr (m) + sqr (n));
writeln ('O h calculado eh= ', h:4:1);

b)
s:=0;
for i:=2 to 5 do
begin
if (i mod 2) = 0 then s:= s + i
else s:= s * i;
writeln (i:2, ' JUNTO COM', s:5);
end;
writeln (i:2, ' ACABOU COM', s:5);
c)
x:=2.0; y:=3.0; z:=5.0;
if odd (round (y/x))
then writeln (trunc (z/y):3)
else writeln (trunc (z) mod trunc (x));

d)
program ITEM_D;
var i,x: integer;
procedure CALC (a:integer; var s:integer)
var j:integer;
begin
for j:=1 to 3 do s:= s + a * j;
end;

begin
x:=1;
for i:=4 to 6 do
begin
CALC (i,x);
writeln ('O valor eh: ', x:5);
end;
end.

e)
program CALCULA;
var s:real;
function V (t:real): real;
begin
V:= t/2 * 5.0;
end;

begin
s:=0.0;
while (s < 5.0) do
begin
s:= s + 1.;
writeln ('Resultado= ', V(s):5:1);
end;
end.

f)
letra:= 'A'; trab:= 2; i:=0;
repeat
i:= i + 1;
trab:= ord(letra) + 1;
letra:= chr(trab);
writeln ('A nova letra eh: ', letra);
until (i > 3);

112 )

Reescreva o trecho de programa abaixo, substituindo o comando de repetição while..do por


outro que utilize repeat..until, de tal modo que os resultados obtidos sejam exatamente os
mesmos.

.................................
i:=1; j:=100;
while (VETOR[i] <> VETOR [j]) do
begin
i:= i + 1;
writeln (i:4, j:4);
j:= j + 1;
end;
.................................

113 )

Faça um programa que imprima na tela todos os números inteiros de quatro algarismos que
tenham a seguinte propriedade: os dois números formados respectivamente pelos dois
primeiros e pelos dois últimos algarismos do número, sejam ambos impares, diferentes
entre sí e o primeiro seja maior do que o segundo. Por exemplo, se voce quiser enumerá-los
em ordem crescente, seriam impressos os seguintes numeros: 1101, 1103, 1105, 1107, 1109,
1301, 1303, 1305, etc...

114 )

Faça uma procedure que troque a posição de dois caracteres de uma frase contida em um
vetor do seguinte tipo:

type LINHA = array [1..80] of char;

Sua procedure deverá se chamar TROCA, e receberá como parâmetros de entrada os


índices dos dois caracteres a serem trocados de lugar entre si, além da própria frase que
deverá ser devolvida com a troca efetuada. Caso os índices sejam iguais, não faça a troca e
imprima uma mensagem na tela.
115 )

Construa uma função chamada MEDIA, que receba como parâmetros dois vetores MA e
MB do tipo MEDIDAS descrito abaixo, contendo medidas obtidas em laboratório.

type MEDIDAS = array [1..70] of real;

Esta função está incumbida de calcular a média de cada um dos pares de valores
correspondentes de MA e MB, devolvendo o resultado em um vetor do mesmo tipo
MEDIDAS, de tal sorte que o primeiro elemento do vetor-resultado seja a média do
primeiro elemento de MA com o primeiro de MB, e assim sucessivamente até o
septuagesimo elemento. Entretanto, a média aritmética será usada apenas até ser encontrado
em MB um elemento que seja o inverso do elemento correspondente de MA, a menos de
um erro de 1.0e-05, a diferença entre os dois valores se manifestar apenas depois da quinta
casa decimal. A partir deste elemento inclusive, a média a ser calculada será a geométrica
(raiz quadrada do produto dos dois valores).

116 )

O que será impresso pelo programa abaixo quando os valores a seguir são fornecidos:

a = 10, b = 20, c = 30.

program q;
var a, b, c : integer;

procedure lesc ( var i, j, k);


begin
readln (i, j, k );
writeln (i, j, k);
end;

procedure muda ( var a, b : integer; c : integer);


var z : integer;
begin
if c > 0 then
begin
z := a; a := b; b := z;
end else
begin
a := b; b := a;
end;
end;

procedure troca ( l, m : integer; var n : integer);


begin
if l > m then n := -n;
end;

begin
lesc (a, b, c);
muda (a, b, c);
writeln (a, b, c);
troca (a, b, c);
writeln (a, b, c);
muda (a, b, c);
writeln (a, b, c);
end.

117 )

As temperaturas médias diárias de uma determinada região medidas ao longo de vários


anos foram armazenadas de forma compactada em um array de 50 posições. A compactação
foi feita da seguinte maneira: as temperaturas no array são sempre precedidas por um
número que mostra quantas vezes ela ocorreu ao longo do tempo. Deste modo no array
temos sempre um número seguido de uma temperatura e portanto 25 pares número e
temperatura.

Escreva uma função que calcule a temperatura média do período em que foi feita a medida.
Assuma que este array contém somente números reais e foi declarado como: type temp =
array [1..50] of real;
Não é necessário escrever o programa principal.

118 )

Escreva uma função para calcular o MDC de dois números inteiros pelo algoritmo de
Euclides, que está mostrado abaixo. O algoritmo consiste em:
1) dividir o maior valor pelo menor.
2) o divisor vira dividendo e o resto do passo anterior vira divisor
3) repetir o passo 2 até que o resto seja zero.
O MDC será o divisor da última operação.
Não é necessário escrever o programa principal.

Exemplo:
passo 1 passo 2 passo 3

dividendo 42 24 18

divisor 24 18 6

quociente 1 1 3

resto 18 6 0

119 )

Considere um array que pode conter no máximo 41 números inteiros definido da seguinte
maneira:

TYPE pilha = ARRAY [0..40] OF INTEGER;

VAR estante : pilha;

Para guardar ou tirar um número neste array você deve sempre consultar o valor
armazenado em estante[0]. Este valor serve para indicar a posição no array onde você
deverá armazenar o número. Sempre após guardar um número o valor em estante[0] deve
ser somado de um. Para tirar um número do array basta primeiro decrementar estante[0]
para obter a posição correta, depois transferir o valor contido nesta posição do array para
uma variável qualquer.

Importante: Não se pode escrever mais de 40 números no array, nem tirar um número
quando todos foram retirados. Assuma que o valor inicial de estante[0] é 1.

Escreva:
a) Uma função para indicar que o array está cheio;
b) Uma função para indicar que o array está vazio;
c) Uma procedure para escrever um número no array, utilize a função do item a;
d) Uma procedure para tirar um valor do array, utilize a função do item b.

120 )
Diga o que aparecerá no vídeo ao final do PROGRAM QUESTÃO1 abaixo para os valores
iniciais fornecidos pelo teclado de x=2 e y=1.

Program QUESTAO;
Var
x,y: integer;

PROCEDURE pa (y: Integer);


Begin
y:= y*2;
x:= x+y;
End;

PROCEDURE pb (Var x: Integer);


Var
I: integer;
Begin
FOR I:=1 TO 4 DO x:= x+1;
End;

Begin
writeln ('Forneca os valores de x e y');
readln (x,y);
pa(x);
writeln (x,y);
pb(y);
writeln (x,y);
End.

121 )

Dada uma sequência de N frases de N caracteres cada (N fornecido pelo teclado e <80)
fornecidas em linhas sucessivas pelo teclado, fazer um programa em Pascal que escreva as
frases no vídeo do terminal na mesma ordem em que foram submetidas, só que na forma
vertical como no exemplo abaixo:

Ex.:
TECLADO
FRASE 1 A Maria e bonita
FRASE 2 Antenor e baiano
FRASE 3 Voce e um aluno.
.
.
FRASE N Esta e a ultima.
VÍDEO

A A V .. E
n o .. s
M t c .. t
a e e .. a
r n ..
i o e .. e
a r ..
u .. a
e e m ..
.. u
b b a .. l
o a l .. t
n i u .. i
i a n .. m
t n o .. a
a o . .. .

122 )

Fazer uma PROCEDURE em PASCAL que receba como parâmetros uma matriz quadrada
Q de elementos inteiros e um número inteiro N (N<100) onde N é a dimensão de Q. A
PROCEDURE deverá retornar para o programa principal um vetor H de uma linha e N
colunas (H[1,N]) onde cada elemento [1,J] de H é a soma de todos os elementos da coluna
de ordem J da matriz Q. Não é necessário fazer o programa principal. Suponha apenas que
tanto a matriz Q como o vetor H foram previamente definidos no programa principal por
meio de declarações types (matriz e vetor) e que:

Var
Q: matriz;
H: vetor;

123 )

Como mostrado nos exemplos abaixo, um palíndromo é uma frase que lida tanto no sentido
normal como de trás para a frente produz a mesma sequência de caracteres, ou seja,
reproduz a própria frase. Evidentemente, para o caso de palíndromos ortográficos, só são
considerados os caracteres letras; os demais tais como espaços em branco, pontuações,
dígitos, etc., não são levados em consideração.
Faça um programa em Pascal que leia uma frase do teclado, de tamanho variavel porem
menor que 80, elimine os caracteres diferentes de letras, detecte e imprima uma mensagem
no vídeo caso a frase submetida seja um palíndromo. Suponha que todas as letras da frase
submetida sejam maiúsculas.

Ex.: OTO COME MOCOTO.


E palindromo.

A CARA RAJADA DA JARARACA.


E palindromo.

O DIA ESTA BONITO.


Nao e palindromo.

124 )

Complete o programa abaixo. O programa lê uma matriz quadrada A de tamanho dim por
dim. Em seguida calcula a soma dos elementos de cada linha e os armazena em um vetor V.
Ao final o programa imprime cada linha da matriz e sua soma.

program m;
type
vetor = array[1..10] of integer;
matriz = array[1..10, 1..10] of integer;
var

procedure lematriz ( );
var
begin
end;

procedure calcula ( );
var
begin
end;

procedure imprime ( );
var
begin
end;

begin
writeln ('Entre com a dimensao da matriz');
readln ( dim );
lematriz ( A, dim ) ;
calcula ( V, A, dim );
imprime ( A, V, dim );
end.

125 )

Faça um programa que imprima um triângulo de números como indicado abaixo. O valor
de n deve ser lido do teclado.

1
24
369
4 8 12 16
...
n 2*n 3*n 4*n ... n*n

126 )

Escreva um programa que leia uma linha de até 80 caracteres do teclado e imprima quantos
são letras maiúsculas, letras minúsculas, dígitos numéricos e finalmente quantos não
pertencem a nenhuma destas três categorias.

127 )

Escreva um programa que calcule e imprima uma aproximação para o valor de Pi usando a
fórmula abaixo.

Pi/4 = 1/2n[f(0) + 2f(1/n) + 2f(2/n) + ... + 2f((n-1)/n) + f(1)],


onde f(x) = 1 / (1+x*x).
O valor de n deve ser lido do teclado.

128 )

a) Escreva a parte var, de modo consistente, para um programa que contenha os comandos
abaixo. O tamanho de cada dimensão deve ser de 20 elementos. Escreva as definições para
as variáveis: Nota, Y, W, X, K ,A e C.
Nota[2] := Y div 2;
W[X,Nota[K+1]] := 5/2;
if X > Y then A := X > Y else C := 'C';

b) Suponha que seu programa tem a seguinte declaração:


type
Vetor = array [1..10] of integer;

Escreva o corpo da procedure com o cabeçalho abaixo:


procedure Inverte(var A: Vetor);

Esta procedure inverte o vetor A de 10 elementos. Por exemplo:


valor original de A : 1 3 2 4 5 8 2 5 4 8
valor retornado pela procedure: 8 4 5 2 8 5 4 2 3 1

c) Faça uma função que recebe como parâmetro uma frase (vetor de 40 caracteres) e retorna
o número de vírgulas que esta frase contém.

129 )

Faça um programa que leia uma matriz de tamanho 10 x 10 e diga se ela é uma matriz
triangular superior, triangular inferior ou não é matriz triangular. Uma matriz triangular
superior é aquela em que todos os elementos abaixo da diagonal principal são nulos; uma
mariz triangular inferior é aquela em que todos os elementos acima da diagonal principal
são nulos.

130 )

Uma série de Fibonacci:


F0 F1 F2 F3 F4 ...
é definida da seguinte forna:
F0 = 0; F1 = 1; Fn = Fn-1 + Fn-2

Por exemplo: 0, 1, 1, 2, 3, 5, 8, 13, 21,...

Faça um programa que calcule e imprima a soma dos termos da série de Fibonacci menores
que 1000.

131 )
Escreva um programa Pascal que leia uma frase de no máximo 80 caracteres submetidos
pelo teclado e mande imprimir as palavras da frase em linhas diferentes na tela do terminal.

Observações:
1) A frase começa por caracter diferente de branco.
2) É permitido pular apenas uma linha na tela do terminal no caso de palavras consecutivas
estarem separadas por mais de um caracter branco.

132 )

Faça um programa Pascal que leia do teclado uma matriz de 20 x 20 elementos, determine
se todos os elementos que estão acima da diagonal principal são iguais a zero imprimindo
"SIM" no caso afirmativo e "NÃO" caso contrário.

133 )

Faça uma função para verificar se um valor inteiro V está contido em um conjunto
composto de 300 valores inteiros podendo ter repetições. Se o valor for encontrado,
interromper a pesquisa e retornar sua posição no conjunto caso contrário retornar zero. A
função receberá como parâmetros o conjunto de valores e o valor V. Assuma que o seguinte
tipo foi definido no programa principal:

Tabela = array[1..300] of integer;

134 )

Para garantir o sigilo de uma mensagem foi elaborado um critério de codificação usando
uma tabela composta de duas colunas: na primeira as letras maiúsculas em ordem crescente
e na segunda as mesmas letras fora de ordem. Faça um procedimento que receba uma
mensagem com N caracteres, a tabela de codificação e retorne a própria mensagem
codificada.

Assuma que a mensagem não contém letras minúsculas e que os seguintes tipos foram
definidos no programa principal:

Mensagem = array[1..80] of char;


Chave = array[1..26, 1..2] of char;

Ex da tabela
A K

B P

C Z

D G

E M

… …

135 )

Faça uma função de nome NumVogais para determinar quantas vogais existem em um
nome, de 50 caracteres fornecido pelo programa principal, retornando um número inteiro
como valor. O nome é fornecido somente com letras minúsculas. Assuma que o seguinte
tipo foi declarado no programa principal:

type str=array [1..50] of char;

136 )

Escreva um procedimento Pascal que receba como parâmetros dois conjuntos de valores do
tipo inteiro e tamanho 10. O procedimento deve calcular e retornar a média aritmética dos
elementos do primeiro vetor cujo elemento correspondente de mesmo índice no segundo
vetor seja igual a 1. Se nenhum elemento do segundo vetor for igual a 1 a média vale 0.

Assuma que no programa principal existe definido o seguinte tipo


TYPE conjunto = ARRAY [1..10] of integer;

Exemplo:
1º vetor -- 3 5 8 9 1 0 6 5 7 6
2º vetor -- 1 0 1 0 0 1 1 0 1 1
média calculada: (3 + 8 + 0 + 6 + 7 + 6)/6 = 5.0
137 )

Faça uma função Pascal chamada POTENCIA que receba um número inteiro positivo e
retorne a menor potência de dois maior que este número.

138 )

Você é o responsável pela gerência de um posto de abastecimento de combustíveis. Seu


posto possui um tanque com 50.000 litros de combustível que é reabastecido antes de
chegar ao final e você deseja saber quantos automóveis seriam abastecidos por este tanque.
Faça um programa Pascal que leia valores de abastecimento parando ao atingir os 50.000
litros e imprima a quantidade de carros abastecidos.

139 )

Faça uma função chamada DESLOCA que receba um caracter qualquer e :

 Caso o caracter seja uma letra ( maiúscula ou minúscula) retorne a posição da tabela
ASCII correspondente a letra seguinte. No caso do caracter ser a letra "z", retornar a
posição relativa ao "a".
 Caso o caracter seja diferente de uma letra, retornar o valor zero.

140 )

Faça um procedimento Pascal que receba uma lista com 200 valores inteiros e um valor x
também inteiro retornando a posição da primeira e da última ocorrência de x. Caso o valor
de x não seja encontrado na lista, o procedimento deve retornar zero para a primeira e
última ocorrência.

Assuma que no programa principal exista o seguinte tipo:


Type lista = array [1..200] of integer;

141 )

Escreva um procedimento Pascal que receba uma frase de n caracteres e imprima as


palavras da frase em linhas diferentes na tela do terminal.
Observações:
1) A frase começa por caracter diferente de branco.
2) Entre palavras existe apenas um espaço em branco.
3) No programa principal foi definido o tipo:
Type frase = array [1..80] of char;

142 )

As placas de automóveis possuem 3 caracteres possibilitando uma representação maior que


3 valores numéricos. Cada letra representa a possibilidade de 26 valores diferentes(A
corresponde ao zero e Z corresponde à 25). Faça uma função que receba um conjunto
formado por 3 letras e retorne a conversão para seu correspondente numérico. Assuma que
no programa principal foi definido um tipo PLACA = ARRAY[1..3] OF CHAR.

Ex:
AAA 0
AAB 1
ACA 52

143 )

Suponha que um computador integrado ao sistema de radar de um navio militar seja


imediatamente informado, no instante do disparo de um míssil inimigo, que este míssil,
distante 1000km no instante do disparo, se aproxima do navio em movimento acelerado
cobrindo a distância D em km em direção ao navio segundo a fórmula D = t3+t2+t onde t é
o tempo em minutos após o instante do disparo. Faça um programa que calcule com uma
precisão de um centésimo de minuto o instante em que se dará o impacto.

144 )

Faça um programa que leia do teclado um número inteiro N e gere na tela as N primeiras
linhas da seguinte série (suponha que N é no máximo 20):

Ex: Para n = 8 temos

1
23
456
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 32 33 34 35 36

145 )

Escreva um programa Pascal que leia uma frase de no máximo 80 caracteres submetidos
pelo teclado e mande imprimir o número de palavras encontradas.

a- A frase começa por caracter diferente de branco


b- Entre palavras pode existir mais de um caracter branco
{Thiago Rodrigues Takaki DRE:100113090}
{16/05/2001}

146 )

Faça um programa que leia um arquivo de nome PROVADAT do tipo text contendo linhas
de um texto e imprima as linhas, trocando todo 'n' antes de 'p' ou 'b' por 'm' .Suponha que
que o texto so contenha letras maiusculas.
{Thiago Rodrigues Takaki DRE:100113090}
{16/05/2001}

147 )

Faça um programa que inicialmente leia do teclado um texto de uma linha. Em seguida seu
programa lê também do teclado um padrão ( que será sempre mais curto do que o texto ).
Seu programa então verifica quantas vezes este padrão aparece no texto de uma linha
anteriormente lido e emite um relatório de uma linha, conforme exemplificam as execuções
abaixo.Seu programa deve reproduzir rigorosamente o formato das telas-exemplos abaixo.

*************************** TELA EXEMPLO


*******************************
ANALISADOR SUPERSIMPLIFICADO

Entre com o seu texto de uma linha:


Deficientes alegam que carioca e mais generoso e solidario.
Entre com o seu padrao: rio
Numero de ocorrencias do padrao [rio]: 2
PROGRAMA TERMINADO.
**************************** FIM DA TELA EXEMPLO
**********************

*************************** TELA EXEMPLO


******************************
ANALISADOR SUPERSIMPLIFICADO

Entre com o seu texto de uma linha:


A maratona de filhos de pais separados na noite de natal.
Entre com o seu padrao: na
Numero de ocorrencias do padrao [na]: 3

PROGRAMA TERMINADO.
***************************** FIM DA TELA EXEMPLO ********************

{Samuel H. Tatizawa Turma: EQA DRE: 100111200}


{23/05/2001}

148 )

Faça um programa para o cálculo do seno, cosseno, tangente, cotangente, secante e


cosecante.

{Marcus Vinicius Lauria de Faria DRE: 101128195}


{23/05/2001}

149 )

Faça um prog que entre 100 numeros e para cada numero imprima uma msg dizendo se ele
e ou não multiplo de 6.

{Marcus Vinicius Lauria de Faria DRE: 101128195}


{23/05/2001}

150 )

Faça um programa em pascal onde uma matriz [3*3] será preenchida com zeros, exceto a
diagonal principal, onde cada elemento receberá 1.
{Marcus Vinicius Lauria de Faria DRE: 101128195}
{23/05/2001}

151 )

Faça um programa em pascal, que leia um número inteiro e mostre seu sucessor e
antecessor.

{Marcus Vinicius Lauria de Faria DRE: 101128195}


{23/05/2001}

152 )

Faça um programa para calcular os juros simples sobre um capital fornecido com taxa de de
juros e tempo do empréstimo tambem fornecidos pelo usuário.

{Anderson Teixeira Kresicher DRE:101105804 ET1}


{23/05/2001}

153 )

Faça um programa para converter uma temperatura dada. As opções de conversão deverão
ser apresentadas ao usuário na forma de um menu.
1- cel p far
2- far p cel
3- cel p kel
4- kel p cel
5- far p kel
6- kel p far

{Anderson Teixeira Kresicher DRE: 101105804}


{23/05/2001}

154 )

Faça um programa onde o usuário fornece 3 valores e estes são apresentados em ordem
crescente.
{Anderson Teixeira Kresicher DRE: 101105804}
{23/05/2001}

155 )

Bole um programa que dado 3 pontos dê a área caso exista.


{Flavio de Souza Gatto DRE :101133182}
{23/05/2001}

156 )

Bole um progarma que dados três pontos diga o baricentro do triângulo formado caso
exista.
{Flavio de Souza Gatto DRE :101133182}
{23/05/2001}

157 )

Bole um programa que dado 4 pontos no plano XoY forneça a área do quadrilátero formado
caso exista.
{Flavio de Souza Gatto DRE :101133182}
{23/05/2001}

158 )

Prepare um programa para calcular a série:

Se abs(x) for maior ou igual a 1 o programa emite mensagem de erro: 'Nao ha definicao
para valor fornecido' e encerre o programa, caso contrário calcule a série até que o valor
absoluto do termo seja menor que 1.0E-20.

159 )
Escreva um procedimento Pascal que receba uma linha do teclado de até 80 caracteres e um
inteiro com o número de caracteres da frase. O procedimento deve retornar o próprio vetor,
substituindo a letra que aparece em seguida a cada caracter branco pela sua correspondente
maiúscula.

Assuma que no programa principal existe o seguinte tipo:


TYPE FRASE=ARRAY[1..80] OF CHAR;

Exemplo
Entrada: O numero 4 e divisivel Por 2.
Saida: O Numero 4 E Divisivel Por 2.

160 )

Tem-se uma estrada ligando várias cidades. Cada cidade tem seu marco quilométrico. Fazer
um programa que:

1-leia vários pares de dados,contendo cada par os valores dos marcos quilométricos, em
ordem crescente ,de duas cidades.o último par contém estes dois valores iguais.
2-calcule os tempos decorridos para percorrer a distância entre essas duas cidades,com as
seguintes velocidades:20, 30, 40, 50, 60, 70 e 80km/h,sabendo que :t=e/v.
3-escreva os marcos,a velocidade e o tempo decorrido entre as duas cidades,apenas quando
este tempo for superior a 2 horas.

{José Carlos Nogueira Trindade Junior DRE: 100173642}


{19/06/2001}

161 )

Dadas duas matrizes reais Amxn e Bnxp, calcular o produto de A por B.

{ Marcus Vinicius de Araujo Lessa DRE: 101103420}


{19/06/2001}

162 )

Escreva um programa que lê uma matriz real Anxm , e um número inteiro k; utilizando as
funções abaixo definidas o programa deve transformar a matriz k vezes, imprimindo a
matriz inicial e depois de cada transformação.
(a) Escreva uma função que recebe como parâmetros uma matriz real Anxm , e uma
posição (i,j) da matriz, e calcula a média aritmética dos vizinhos de (i,j), ou seja, a média
entre Ai-1, j , Ai+1, j , Ai, j+1 ,Ai, j+1. Desconsidere os vizinhos que não pertencem a
matriz (por exemplo, os vizinhos de (0, 0) são somente (0,1) e (1,0) ).

(b) Escreva um procedimento que recebe como parâmetro uma matriz real Anxm e devolve
uma matriz Amédia, onde aijmédia é a média aritmética dos vizinhos de (i,j). Para isto,
utilize a função do item anterior.

{ Marcus Vinicius de Araujo Lessa DRE: 101103420}


{19/06/2001}

163 )

Intercalação é o processo utilizado para construir uma tabela ordenada, de tamanho n + m, a


partir de duas tabelas já ordenadas de tamanho n e m. Por exemplo, a partir das tabelas:

Tabela A
1367

Tabela B
245

Tabela C
1234567

a) leia NA, número de elementos do conjunto A (NA <= 100);


b) leia, em seguida, os elementos do conjunto A;
c) ordene os dados na tabela A;
d) leia, logo após o valor de NB, número de elementos do conjunto B (NB <= 100);
e) ordene os dados na tabela B;
f) leia, finalmente, os elementos do conjunto B;
g) crie e imprima um conjunto C, ordenado, de tamanho NA + NB, a partir dos conjuntos
originais A e B.

Observações:
1. Considerar os elementos de A e B como inteiros.
2. A tabelas C deverá ser construida já ordenada, sem usar qualquer tipo de ordenação.

{ Marcus Vinicius de Araujo Lessa DRE:101103420 }


{19/06/2001}
164 )

Faça um programa para converter temperaturas em graus Celsius (Cº) para Farinnhait (Fº),
armazenando os valores numa matriz. A fórmula de conversão é dada por F = (9*C+160)/5.
Faça a matriz de tamanho máximo = 10 elementos.

Celsius Farennhait
5 f1
10 f2
15 f3
20 f4
... ...
50 f10

{ Marcus Vinicius de Araujo Lessa DRE: 101103420}


{19/06/2001}

165 )

Faça um programa que leia um conjunto de 100 valores inteiros e verifique se existem
elementos iguais a 30. Se existirem, exiba as posições em que estão armazenados.

{Diane Yuki Murayama DRE: 101120870}


{19/06/2001}

166 )

Fazer um programa que leia uma matriz 4x4, multiplicar os elementos da diagonal principal
por uma constante igual a 3, e escreva a matriz resultante.

{Diane Yuki Murayama DRE: 101120870}


{19/06/2001}

167 )

Fazer um programa que calcule a media de alunos so sexo masculino de uma turma. Sexo
igual a zero indica que acabou.
{ Felippe Thiago Camilo Reis DRE 101117796}
{20/06/2001}

168 )

Dada uma tabela de 4 por 5 ,calcular a soma de cada linha ea soma de todos os elementos .

{José Carlos Nogueira Trindade Junior DRE: 100173642}


{20/06/2001}

169 )

Em um certo município,varios proprietários estão em atraso com o pagamento do imposto


predial.Desenvolver um programa que calcule e escreva o valor da multa a ser paga por
estes proprietários considerando que:

até p/mês de atraso


0,00 5.000,00 1%
5.001,00 18.000,00 2%
18.001,00 50.000,00 4%
50.001,00 120.000,00 7%
120.000,00 10%

{José Carlos Nogueira Trindade Junior DRE: 100173642}


{20/06/2001}

170 )

Entrar com um angulo em graus e imprimir:seno, co-seno e tangente

{ Bruno Varanda De Oliveira DRE:101147474 }


{20/06/2001}

171 )

Entrar com a base e a altura de um retangulo e imprimir a seguinte saida:


Perimetro:
Area:
Diagonal:

{ Bruno Varanda De Oliveira DRE:101147474 }


{20/06/2001}

172 )

Entrar com o raio de um circulo e imprimir a seguinte saida:

Perimetro:
Area:

{ Bruno Varanda De Oliveira DRE:101147474 }


{20/06/2001}

173 )

Entrar com a razao de uma p.a. e o valor do primeiro termo. Calcular e imprimir o enesimo
termo da serie.

{ Bruno Varanda De Oliveira DRE:101147474 }


{20/06/2001}

174 )

Entrar com um número e imprimir a raiz quadrada do número caso ele seja positivo ou zero
e imprimir o quadrado do numero caso ele seja negativo.

{ Bruno Varanda De Oliveira DRE:101147474 }


{20/06/2001}

175 )

No Brasil existem moedas de 1, 5, 10, 25 e 50 (e 100) centavos. Faça um programa que leia
o valor da mercadoria, leia o valor da quantia entregue pelo comprador e então especifique
quantas moedas de cada valor devem ser dadas de troco ao comprador, adotando sempre a
estratégia de entregar o número mínimo de moedas ( isto é, utiliza o máximo possível de
cada moeda, considerando a utilização das moedas de maior valor antes das de menor
valor). Suponha que o valor máximo da mercadoria e da quantia entregue pelo comprador
seja 100 centavos ( R$ 1,00 ). Seu programa deve escrever apenas "Não há troco" quando o
troco for zero centavos.

Exemplo:
PROGRAMA CAIXA REGISTRADORA
Qual o valor da mercadoria? 29 ENTER
Qual o valor da quantia entregue pelo comprador? 100 ENTER
O troco é:
1 moeda(s) de 50
2 moeda(s) de 10
1 moeda(s) de 1

{ Gustavo de Barros Ferreira DRE 100111412 }


{20/06/2001}

176 )

Faça um programa para calcular valores da função definida no gráfico abaixo. Note que f(-
1)=1 ; f(0)=1; f(0.2)=0.8 ; f(0.5)=0.5 ; f(1.5)=0; f(2.5)=0.5; f(3.5)=0.5; f(4.5)=0 etc.
repetindo-se o padrão triangular para todo o eixo "x" positivo. Seu programa pergunta
inicialmente quantos pontos da função o usuário deseja calcular. Em seguida, solicita ao
usuário que forneça os valores das coordenadas "x" dos pontos a serem calculados. Depois
disto escreve na tela uma tabela {x,f(x)}. Faça o seu programa aceitar até o máximo de 50
pontos a calcular.

{ Gustavo de Barros Ferreira DRE 100111412 }


{20/06/2001}

177 )
A tela de computador é formada por 25 linhas cada uma com 80 colunas. Um programa
Pascal armazena uma tela em uma matriz de 25x80 caracteres. Para isso existe a seguinte
declaração no programa principal:
TYPE
VIDEO = ARRAY [1..25 , 1..80] OF CHAR;

Deseja-se fazer a rotina que implementa o processo de "rolar a tela para cima" (ou scroll
up). Nesse processo a primeira linha (linha inferior) passa para o local da segunda, a
segunda para o local da terceira, e assim sucessivamente até que a linha 24 passa para o
local da linha 25 (linha superior). No local da primeira linha é colocada uma linha em
branco.

Faça a procedure scrollup que receba como parâmetro a variável com a tela (matriz 25x80)
e retorne nessa mesma variável a tela "rolada para cima".

178 )

Faça uma função ECONSOANTE que receba como parâmetro um caracter e retorne
TRUE se esse caracter for uma uma consoante e caso contrário retorne FALSE.
Essa função deverá funcionar para caracteres maiúsculos e minúsculos.

179 )

O programa abaixo lê uma linha de até 80 caracteres, retira os caracteres vizinhos repetidos
e imprime a linha sem os caracteres repetidos. Exemplo:

ENTRADA : aaabbbcddddaaaadddccceeeeeeeeeFFFgg
SAÍDA: abcdadceFg

program repetido;
type linha80 = array [1..80] of char;
var
linha : linha80;
tamanho : integer;

procedure lelinha (....................);


{ le uma linha de ate 80 letras }
-----------------

procedure proclinha (...............);


{ tira as letras duplicadas }
-----------------
procedure implinha (..................);
{ imprime a linha processada }
-----------------

{programa principal}
begin
lelinha (linha , tamanho);
proclinha (linha , tamanho);
implinha (linha , tamanho);
end.

Complete o programa acima fazendo as três procedures, sabendo que a variável LINHA é a
linha que será lida, processada e impressa, e TAMANHO é o número de caracteres que
LINHA tem.

180 )

Faça um programa Pascal que leia um valor N e apresente o seguinte resultado na tela.

Supondo que o número 5 foi digitado.


1
12
123
1234
12345

181 )

Faça um programa que leia 100 valores e uma posição, gere um conjunto eliminando o
valor apontado por posição e apresente o conjunto modificado na tela. Observe que o
conjunto modificado possuirá 1 posição a menos que o conjunto inicial.

182 )

Calcular o consumo de um carro, sabendo-se a quantidade de combustível e o consumo


médio.

{Raphael Araújo da Figueiredo e Silva DRE:101107165}


{05/03/2002}
183 )

Faça um programa que transforme graus Celsius em Kelvin e vice-versa.

{Raphael Araújo da Figueiredo e Silva DRE:101107165}


{05/03/2002}

184 )

Faça um programa que calcule o consumo de um aparelho eletrônico durante um mês dado
o número de horas que o equipamento ficou ligado em media por dia, a potencia e o
numero de dias que foi ligado!!

{Raphael Araújo da Figueiredo e Silva DRE:101107165}


{05/03/2002}

185 )

Faça um programa que dado o consumo elétrico de três meses consecutivos , calcular a
meta de energia a ser alcançada durante o período de racionamento sabendo que a
economia deve ser de 20%.

{Raphael Araújo da Figueiredo e Silva DRE:101107165}


{05/03/2002}

186 )

Faça um programa para calcular o peso ideal de uma pessoa sendo fornecidos o sexo,
altura. Sabe-se que para pessoas do sexo masculino a relação entre a altura e o peso é de
72.7*altura-58 e para pessoas do sexo feminino de 62.1*altura-44.7.

{Marcus Vinicius de Araújo Lessa DRE:101103420}


{06/03/2002}

187 )
Faça um programa para o cálculo do salário de uma pessoa onde as informações fornecidas
ao programa são: valor do salário mínimo; quantidade de horas normais e horas extras
trabalhadas e número de dependentes. As regras para o cálculo do salário são:
a) O valor da hora é 20% do salário mínimo;
b) A parcela referente aos dependentes é determinada multiplicando o número de
dependentes por 32;
c) O valor da hora extra é 150% o valor da hora normal;
d) Se o salário bruto for menor que 200 a pessoa está isenta de imposto;
e) Se o salário bruto estiver entre 200 e 500 o imposto é de 10%;
f) Se o salário bruto for maior que 500 o imposto é de 20%;
g) Se o salário líquido for menor ou igual a 350 a pessoa recebe uma gratificação de 100 e
h) para um salário líquido maior que 350 a gratificação é de 50.

{Marcus Vinicius de Araújo Lessa DRE:101103420}


{06/03/2002}

188 )

Crie um programa que leia de 20 usuários o nome, o cargo e o salário. Em seguida mostre
todos os nomes, cargos e os salários aumentados em 10%}

{Marcus Vinicius de Araújo Lessa DRE:101103420}


{06/03/2002}

189 )

Um determinado material radioativo perde metade de sua massa a cada 50 segundos. Dada
a massa inicial, em gramas, fazer um programa que determine o tempo necessário para que
essa massa se torne menor que 0,5 grama. Escreva a massa inicial , a massa final em
gramas e o tempo calculado em horas, minutos e segundos.

{Vinícius Young Moura DRE: 100132989}


{06/03/2002}

190 )

O dia da semana para uma data qualquer pode ser calculada pela seguinte fórmula:
Dia da semana = Resto( trunca( 2,6*m-0,1)+d +a+ quociente(a,4) + quociente (s,4) –
2*s),7)
Onde:
M – representa o número do mês. Janeiro e fevereiro são os meses 11 e 12 do ano
precedente, março é o mês 1 e dezembro é o mês 10;
D – representa o dia do mês;
A – representa o número formado pelos dois últimos algarismos do ano;
S – representa o número formado pelos dois primeiros algarismos do ano.

Os dias da semana são numerados de zero a seis; Domingo corresponde a 0, Segunda a 1, e


assim por diante.

Fazer um programa que:


- leia um conjunto de 50 datas (dia, mês, ano)
- determine o dia da semana correspondente à data lida, segundo o método
especificado;
- escreva, para cada data lida, o dia, mês, ano e o dia da semana calculado.

{Vinícius Young Moura DRE: 100132989}


{06/03/2002}

191 )

Fazer um programa que:


a) Leia duas variáveis compostas unidimensionais, contendo, cada uma, 25 elementos
numéricos;
b) Intercale os elementos destes dois conjuntos formando uma nova variavel composta
unidimencional de 50 elementos;
c) escreva o novo conjunto, assim obtido.

{Vinícius Young Moura DRE: 100132989}


{06/03/2002}

192 )

Fazer um procedimento que receba do programa principal dois inteiros e devolva o mdc
entre eles

{Lúcio Jose Machado Cançado DRE: 101163349}


{08/03/2002}
193 )

Fazer um procedimento que, dado um numero inteiro, retorne a soma dos divisores do
numero diferentes do próprio número.

{Lúcio Jose Machado Cançado DRE: 101163349}


{08/03/2002}

194 )

Fazer um procedimento Pascal que calcule o valor aproximado do número "e" através da
série 1+1/2!+1/3!+..., o número de termos deve ser fornecido ao procedimento como
parâmetro.

{Lúcio Jose Machado Cançado DRE: 101163349}


{08/03/2002}

195 )

Fazer um procedimento onde: dia, mês e ano são parâmetros de entrada e n é um parâmetro
de saída que conterá o número de dias do ano até a data fornecida.
Obs: lembre-se que o mês de fevereiro pode ter 28 ou 29 dias, dependendo de o ano ser
ou não bissexto. Todo ano bissexto é um múltiplo de 4

{Lúcio Jose Machado Cançado DRE: 101163349}


{08/03/2002}

196 )

Escreva uma função booleana que receba como parâmetros a medida de três segmentos de
reta e verifique se eles podem formar um triângulo.

{Marcus Vinícius de Araújo Lessa DRE: 101103420}


{08/03/2002}

197 )
Uma matriz complexa Z é representada por um par (Zr, Zi) de valores reais, de modo que Z
= Zr + i Zi . Faça um procedimento. que calcule o produto de duas matrizes complexas A e
B, isto é:
Zr + i Zi = ( Ar + i Ai ) (Br + i Bi)
Veja que:
( A + i A ) (B + i B) = ( ArBr - AiBi ) + i ( ArBi + AiBr )
O procedimento recebe as duas matrizes A e B assim como o número de linhas L e devolve
a matriz resultado Z.
Assuma que no programa principal foi declarado o seguinte tipo:
Type matriz = array[1..20, 1..2] of real;

{Marcus Vinícius de Araújo Lessa DRE: 101103420}


{08/03/2002}

198 )

Fazer um programa para calcular e escrever a seguinte soma:

{Roberto Luis de Oliveira Lourenço DRE: 100171276}


{11/03/2002}

199 )

Fazer um programa que:


a) leia uma matriz quadrada real A, de dimensão M X M(M<=20).O valor de M é
fornecido inicialmente;
b)verifique se a matriz é simétrica,ou seja, se a[i,j] = a[j,i] para qualquer i,j <=M;
c)imprima a palavra simétrica se a matriz A for simétrica, e não-simétrica em caso
contrário.

{Roberto Luis de Oliveira Lourenço DRE: 100171276}


{11/03/2002}

200 )

Segundo a conjectura de Goldbach, qualquer número par , maior do que 2, pode ser escrito
como a soma de dois números primos.Ex:8=3+5,16=3+13..etc
Dado um conjunto de números inteiros positivos, pares, fazer um programa que calcule,
para cada numero, um par de números primos cuja soma seja igual ao próprio
numero.Adotar como "flag" um numero negativo. Para verificar se o número é primo, fazer
um procedimento que deverá retornar em uma variável lógica o valor verdadeiro,se o
numero for primo e falso, em caso contrário.

{Roberto Luis de Oliveira Lourenço DRE: 100171276}


{11/03/2002}

201 )

A avaliação de aproveitamento de uma certa disciplina é feita através de quatro provas


mensais no valor de 20 pontos e uma prova final no valor de 40 pontos.A nota final é obtida
somando-se as três melhores notas,dentre as provas mensais,com a nota da prova final. O
conceito final é dado atendendo-se ao seguinte critério:
de 90 a 100 --Conceito A;
de 80 a 89 ---Conceito B;
de 70 a 79 ---Conceito C;
de 60 a 69 ---Conceito D;
de 40 a 59 ---Conceito E;
de 0 a 39 ---Conceito F.
Fazer um procedimento que, recebendo como parâmetro 4(quatro) números inteiros,
devolva ao módulo que o chamou a soma dos 3(três) maiores números recebidos.
Fazer um programa que:
-leia as quatro notas mensais e a nota da prova final
-calcule sua nota final, utilizando o procedimento anterior
-verifique o conceito obtido;
-escreva a sua nota final e o seu conceito.

{Roberto Luis de Oliveira Lourenço DRE: 100171276}


{11/03/2002}

202 )

Dois arquivos tipo texto em disco contêm séries de números reais, todos menores do que
dez elevado a sexta, separados pelo caracter de fim de linha e ordenados em ordem
crescente. Chame o primeiro arquivo de "alfa" e o segundo de "beta". Faça um programa
que, sem alterar alfa e beta, crie e grave no disco um novo arquivo(chame-o de "zeta") que
contenha, também ordenada, a série de números formada pala junção da série contida em
alfa com a série em beta. Por exemplo:

alfa beta zeta


3.0 2.0 2.0
4.0 4.05 3.0
4.1 4.1 4.0
5.8 79.4 4.05
79.4 92.5 4.1
85.2 109.3 4.1
230.5 5.8
403.2 79.4
79.4
85.2
92.5
109.3
230.5
403.2

Seu programa deve ainda colocar na tela do computador duas mensagens: a primeira,
"Iniciando junção dos arquivos...", ao iniciar o processamento , e a segunda, "Novo arquivo
criado.", ao terminar.

{ Samuel H. Tatizawa DRE: 100111200}


{19/06/2001}

203 )

Fazer um programa com dois procedimentos: um para ler uma matriz de tamanho M1 X
M2, e um para multiplicar a matriz por um constante, e imprima o valor da matriz
resultante.

{ Nívea Boechat DRE.: 101106012}


{19/06/2001}

204 )

Faça um procedimento em Pascal que receba uma frase de no máximo 80 caracteres e


devolva amesma frase observando a seguinte regra: sempre que uma palavra (com mais de
1 caracter) iniciar com letra maiúscula, a letra seguinte deve ser minúscula.
Ex: O MArcelo foi ao MaraCana.
O Marcelo foi ao MaraCana.

205 )

Faça um programa Pascal que leia do teclado valores inteiros, positivos, pertencentes ao
intervalo de 0 à 99 (inclusive). Quando um número fora deste intervalo for digitado o
programa deverá listar cada valor e o respectivo número de vezes que ele foi fornecido e
terminar a execução. Os números que não foram digitados não deverão ser impressos.

206 )

Escreva um programa Pascal para calcular a soma dos N primeiros termos da série abaixo:

207 )

Escreva um programa Pascal que leia 100 valores e apresente como resultado, após a leitura
dos mesmos uma seqüência de 100 valores com a seguinte regra: se o valor for divisível por
2 apresente 2, se for divisível por 3 apresente 3 caso contrário apresente 0.

208 )

Faça um programa Pascal que leia 200 valores e determine a média eliminando o maior e o
menor valor.

209 )

Faça uma função chamada DIADASEMANA cujo objetivo é determinar qual o dia da
semana correspondente à um determinado dia do mês. O dia do mês é representado por um
valor inteiro e o dia da semana por um valor inteiro sendo que o 0 corresponde ao domingo,
1 à segunda-feira e assim sucessivamente até o valor 6 que representa o sábado. A função
receberá como parâmetros o dia do mês e o dia da semana correspondente ao primeiro dia
do mês e deverá devolver um inteiro que representará o dia da semana do dia do mês
fornecido.

210 )

Uma empresa possui em uma tabela o registro de todas as compras de matéria prima para
sua produção. Esta tabela possui duas colunas: a primeira o código do produto,
representado por um valor inteiro e na segunda o valor da mercadoria em reais ignorando
os centavos. Uma mesma matéria prima aparece diversas vezes na tabela, cada uma
correspondendo à uma compra. Faça um procedimento que receba esta tabela, a quantidade
de linhas desta, o código de uma mercadoria e retorne o maior valor de compra existente da
mercadoria fornecida.
Assuma que no programa principal exista um tipo chamado TABELA: array[1..10000, 1..2]
of integer;

211 )

Faça um procedimento para trocar a senha de um usuário. O procedimento recebe do


programa principal um vetor S contendo a senha atual assim como o número N de
caracteres da senha, pede para que o usuário digite no teclado a senha atual e uma nova
senha. Caso a senha passada como parâmetro seja igual a senha atual digitada, o
procedimento retornará a nova senha assim como o novo tamanho nos mesmos parâmetros
de entrada S e N, caso a senha digitada seja diferente da atual, a senha de entrada deverá ser
retornada.

Assuma que no programa principal exista o seguinte tipo:


Senha: array[1..30] of char;

Dica:
A primeira linha do procedimento é:
Procedure troca (var s : senha; N : integer);

212 )

Escreva um procedimento PASCAL chamado "QUE" que receba uma frase de 80 caracteres
e retorne quantas vezes ocorre a seqüência de letras que. Por exemplo, na frase

lkjaljquelkjalquhjhkjhamnvhdque
a seqüência acima aparece 2 vezes. Assuma que no programa principal o tipo
frase = array[1..80] of char foi declarado.

213 )

Um editor de textos foi desenvolvido dividindo cada operação em PROCEDURES


PASCAL. Você foi escolhido para desenvolver o procedimento de inserção de um caracter
em uma linha. Faça um procedimento PASCAL que:

a) receba uma frase com 80 caracteres, a posição dentro da frase onde deve ser
inserido o caracter e o próprio caracter;

b) retorne a mesma frase alterada observando que a partir da posição dada , toda a
frase deve ser deslocada de uma posição para a direita, criando espaço para o novo
caracter.

Atenção com o tamanho máximo de 80 caracteres na frase.

Ex: Inserir na frase F o caracter B na posição 12


O DIA ESTA ONITO...
O DIA ESTA BONITO...

214 )

Um professor de português desenvolveu um programa com regras gramaticais. Cada regra


foi escrita em PROCEDURES independentes. Você foi escolhido para fazer uma procedure
que:

a) recebe uma linha com N caracteres

b) Substitua nesta linha toda ocorrência da letra "n" antes de "p" ou "b" pela letra
"m".

c) Não esqueça de devolver a própria linha modificada para o programa principal.

Assuma que a frase contém apenas letras minúsculas e que o seguinte tipo foi definido:
FRASE = ARRAY [1..80] OF CHAR

215 )
Faça uma PROCEDURE PASCAL que:

a) receba um conjunto E, com 1000 elementos com 50 valores diferentes. Estes


valores podem ser qualquer inteiro maior que zero.

b) devolva um conjunto S com 50 posições, contendo apenas os 50 valores diferentes,


armazenados no conjunto E.

Assuma que no programa principal foram definidos os seguintes tipos :


LISTAINICI = ARRAY [1..1000] OF INTEGER;
LISTAFINAL = ARRAY [1..50] OF INTEGER;

Вам также может понравиться