Exercícios sem solução cadastrada.

0 exercícios selecionados


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}

xxxx
x  x
x  x
xxxx
4x4
xxxxx
x   x
x   x
x   x
xxxxx
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:
3 4
4 0
6 7 8 9
5 6 3 4 9
5
7
8 2 1 0 5 6 6 2


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:

062

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 :
1 0 4 6
1 3 2 5
7 6 2 1
4 1 5 6

Matriz resultante :
3 0 4 6
1 9 2 5
7 6 6 1
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

acima de 23.400 até 216.000

26,6

4.516,68

acima de 216.000

35,0

22.659,00

 

 

 

 

 

 

A Base de cálculo é o rendimento tributável diminuído das despesas dedutíveis. Por exemplo, o 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:


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
2 4
3 6 9
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 :


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
2 3
4 5 6
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
1 3 6 7

Tabela B
2 4 5

Tabela C
1 2 3 4 5 6 7

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
1 2
1 2 3
1 2 3 4
1 2 3 4 5


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;