lfasfas
TRANSCRIPT
-
8/15/2019 Lfasfas
1/36
Lista de Exercícios (Resolvidos) - Pascal
1. Escreva um programa em Pascal para ler, calcular e escrever a média aritmética entre dois
números.
program ex1;
uses crt;
var n1, n2, m: real;
begin
clrscr;
write('Informe um numero: ');
readln(n1);
write('Informe outro numero: ');
readln(n2);
m:=(n1+n2)/2;writeln('A media ‚: ',m:0:2);
readkey;
end.
2. Escreva um programa em Pascal para ler um número positivo qualquer, calcular e escrever
o quadrado e a raiz quadrada do mesmo.
program ex2;uses crt;
var x, q: integer;
r: real;
begin
clrscr;
write('Informe um numero: ');
readln(x);
q:= sqr(x);
writeln('O quadrado de ', x, ' ‚ ', q);
if x>=0 then
beginr:= sqrt(x);
writeln('A raiz quadrada de ', x, ' ‚ ', r:0:2);
end
else
begin
writeln('Nao existe raiz de ',x);
end;
readkey;
end.
3. Escrever um programa em Pascal que leia 3 valores: a, b, c e calcule e escreva a médiaaritmética, harmônica e geométrica correspondente.
-
8/15/2019 Lfasfas
2/36
program ex3;
uses crt;
var a, b, c, ma, mg, mh: real;
begin
clrscr;write('Informe o primeiro numero: ');
readln(a);
write('Informe o segundo numero: ');
readln(b);
write('Informe o terceiro numero: ');
readln(c);
ma:= (a+b+c)/3;
mh:= 3/(1/a + 1/b +1/c);
mg:= exp(ln(a*b*c)*(1/3));
writeln('Media Aritmetica: ',ma:0:2);
writeln('Media Harmonica: ',mh:0:2);
writeln('Media Geometrica: ',mg:0:2);
readkey;
end.
4. Escrever um programa em Pascal que lê o número de um funcionário, seu número de
horas trabalhadas, o valor que recebe por hora, e o número de filhos com idade menor do
que 14 anos e calcula o salário deste funcionário.
program ex4;
uses crt;
varnf, nfil: integer;
nht, vph, sf, st: real;
begin
clrscr;
write('Informe o numero do funcionario: ');
readln(nf);
write('Informe o numero de horas trabalhadas: ');
readln(nht);
write('Informe o valor que recebe por hora: ');
readln(vph);
write('Informe o numero de filhos: ');
readln(nfil);
write('Informe o valor do salario familia: ');
readln(sf);
st:= nht * vph + nfil * sf;
writeln('O funcionario ', nf, ' recebe um salario total de R$ ',
st:0:2);
readkey;
end.
-
8/15/2019 Lfasfas
3/36
5. Escrever um programa em Pascal que lê o número de um vendedor, o seu salário-fixo, o
tota1 de vendas por ele efetuadas e o percentual que ganha sobre o total de vendas.
Calcular o salário tota1 do vendedor. Escrever número do vendedor e o salário total.
program ex5;
uses crt;
var
nv: integer;
sf, tv, per, st: real;
begin
clrscr;
write('Informe o numero do vendedor: ');
readln(nv);
write('Informe o salario fixo: ');
readln(sf);
write('Informe o total de vendas: ');
readln(tv);
write('Informe o percentual sobre as vendas: ');
readln(per);
st:= sf + tv * per / 100;
writeln('O vendedor ', nv, ' recebe um salario total de R$ ', st:0:2);
readkey;
end.
6. Escrever um programa em Pascal que lê 3 valores a, b, c que são lados de um triângulo e
calcule a área deste triângulo.
program ex6;
uses crt;
var a, b, c, s, at: real;
begin
clrscr;
write('Informe o primeiro numero: ');
readln(a);
write('Informe o segundo numero: ');
readln(b);
write('Informe o terceiro numero: ');
readln(c);
s:= (a+b+c)/2;
at:=sqrt(s*(s-a)*(s-b)*(s-c));
writeln('Area do triangulo: ',at:0:2);
readkey;
end.
7. Uma revendedora de carros usados paga a seus funcionários vendedores, um salário fixopor mês, mais uma comissão também fixa para cada carro vendido e mais 5% do valor das
-
8/15/2019 Lfasfas
4/36
vendas por ele efetuadas. Escrever um programa em Pascal que lê o número do vendedor, o
número de carros por ele vendidos, o valor tota1 de suas vendas, o salário fixo e o valor
que recebe por carro vendido e calcula o salário mensal do vendedor, escrevendo-o
juntamente com o seu número de identificação.
program ex7;uses crt;
var
nv, ncv: integer;
sf, tv, vpcv, st: real;
begin
clrscr;
write('Informe o numero do vendedor: ');
readln(nv);
write('Informe o numero de carros vendidos: ');
readln(ncv);
write('Informe o total de vendas: ');readln(tv);
write('Informe o salario fixo: ');
readln(sf);
write('Informe o valor por carro vendido: ');
readln(vpcv);
st:= sf + tv * 5 / 100 + ncv * vpcv;
writeln('O vendedor ', nv, ' recebe um salario total de R$ ', st:0:2);
readkey;
end.
8. Escrever um programa em Pascal que lê 3 valores a, b, c, e escreva os 3 valores em ordem
crescente.
program ex8;
uses crt;
var a, b, c, aux: integer;
begin
clrscr;
write('Informe o primeiro numero: ');readln(a);
write('Informe o segundo numero: ');
readln(b);
write('Informe o terceiro numero: ');
readln(c);
if a>b then
begin
aux:=a;
a:=b;
b:=aux;
end;
if a>c then
beginaux:=a;
a:=c;
-
8/15/2019 Lfasfas
5/36
c:=aux;
end;
if b>c then
begin
aux:=b;
b:=c;
c:=aux;end;
writeln('Valores em ordem crescente: ', a:6, b:6, c:6);
readkey;
end.
9. Escrever um algoritmo/programa em Pascal que lê um conjunto de 4 valores i,a, b, c, onde i é um valor inteiro e positivo e a, b, c, são quaisquer valores reais e osescreva. A seguir:Se i = 1 escrever os 3 valores a, b, c em ordem crescente.Se i = 2 escrever os 3 valores a, b, c em ordem decrescente.Se i = 3 escrever os 3 valores de forma que o maior valor entre a, b, c fica entre os
outros 2.
program ex9;
uses crt;
var i, a, b, c, aux: integer;
begin
clrscr;
write('Informe um valor [1, 2, 3]: ');
readln(i);
write('Informe o primeiro numero: ');
readln(a);write('Informe o segundo numero: ');
readln(b);
write('Informe o terceiro numero: ');
readln(c);
if a>b then
begin
aux:=a;
a:=b;
b:=aux;
end;
if a>c then
begin
aux:=a;a:=c;
c:=aux;
end;
if b>c then
begin
aux:=b;
b:=c;
c:=aux;
end;
if i=1 then
begin
writeln('Valores em ordem crescente: ', a:6, b:6, c:6);
end;if i=2 then
begin
-
8/15/2019 Lfasfas
6/36
writeln('Valores em ordem decrescente: ', c:6, b:6, a:6);
end;
if i=3 then
begin
writeln('Maior Valor no meio: ', a:6, c:6, b:6);
end;
readkey;end.
10. Escrever um algoritmo/programa em Pascal que lê o número de um vendedorde uma empresa, seu salário fixo e o total de vendas por ele efetuadas.Cada vendedor recebe um salário fixo, mais uma comissão proporcional às vendaspor ele efetuadas.A comissão é de 3% sobre o total de vendas até $ 1.000,00 e 5% sobre o queultrapassa este valor.
Escrever o número do vendedor, o total de suas vendas, seu salário fixo e seusalário total.
program ex10;
uses crt;
var
nv: integer;
sf, tv st: real;
begin
clrscr;
write('Informe o numero do vendedor: ');
readln(nv);write('Informe o total de vendas: ');
readln(tv);
write('Informe o salario fixo: ');
readln(sf);
if tv b + c não formam triângulo algum.Se a2 = b2 + c2 formam um triângulo retângulo.Se a2 > b2 + c2 formam um triângulo obtusângulo.Se a2 < b2 + c2 formam um triângulo acutângulo.
-
8/15/2019 Lfasfas
7/36
Se forem todos iguais formam um triângulo equilátero.Se a = b ou b = c ou a = c então formam um triângulo isósceles
program ex11;
uses crt;
var a, b, c, aux: integer;
begin
clrscr;
write('Informe o primeiro numero: ');
readln(a);
write('Informe o segundo numero: ');
readln(b);
write('Informe o terceiro numero: ');
readln(c);
if a sqr(b)+sqr(c) then writeln('Formam um triangulo
obtusangulo.');
if sqr(a) < sqr(b)+sqr(c) then writeln('Formam um triangulo
acutangulo.');if (a=b) and (b=c) then
begin
writeln('Formam um triangulo equilatero.');
end
else
begin
if (a=b) or (a=c) or (b=c) then writeln('Formam um triangulo
isosceles.');
end;
end;
readkey;
end.
-
8/15/2019 Lfasfas
8/36
12. Escrever um algoritmo/programa em Pascal que lê a hora de início de um jogoe a hora do final do jogo (considerando apenas horas inteiras) e calcula a duraçãodo jogo em horas, sabendo-se que o tempo máximo de duração do jogo é de 24horas e que o jogo pode iniciar em um dia e terminar no dia seguinte. program ex12;
uses crt;
var
hi, hf, dj: integer;
begin
clrscr;
write('Informe a hora inicial do jogo: ');
readln(hi);
write('Informe a hora final do jogo: ');
readln(hf);
if hf > hi then
begin
dj:=hf - hi;
writeln('O jogo durou ',dj,' horas.');
end
else
begin
dj:=hf - hi + 24;
writeln('O jogo durou ',dj,' horas.');
end;
readkey;
end.
15. A empresa Enxuga Gelo SA decidiu conceder um aumento de salários a seusfuncionários de acordo com a tabela abaixo:
Salário Atual Índice De Aumento0 - 400,00 15%400,01 - 700,00 12%700,01 - 1.000,00 10%1.000,01 - 1.800,00 7%1.800,01 - 2.500,00 4%acima de 2.500,00 sem aumento
Escrever um algoritmo/programa em Pascal que lê, para cada funcionário, o seunúmero e o seu salário atual e escreve o numero do funcionário, seu salário atua1,o percentual de seu aumento e o valor do salário corrigido.
program ex15;
uses crt;
var
nf: integer;
pa, sc, sa: real;
begin
clrscr;write('Informe o numero do funcionario: ');
readln(nf);
-
8/15/2019 Lfasfas
9/36
write('Informe o salario atual: ');
readln(sa);
if sa400) and (sa700) and (sa1000) and (sa1800) and (sa2500) then pa:=0;
sc:=sa + sa * pa/100;
writeln('Funcionario: ', nf);
writeln('Salario Atual: ',sa:0:2);
writeln('Percentual de Aumento: ',pa:0:2,'%');
writeln('Salario Corrigido: ',sc:0:2);
readkey;
end.
end.
17. Escrever um algoritmo/programa em Pascal que lê 5 valores para a, um decada vez, e conta quantos destes valores são negativos, escrevendo esta informação.
program ex17;
uses crt;
var i, a, cont: integer;
begin
clrscr;
cont:=0;
for i:= 1 to 5 do
begin
write('Informe um valor: ');
readln(a);
if a
-
8/15/2019 Lfasfas
10/36
for i:= 100 to 200 do
begin
if i mod 2 = 0 then
begin
write(i:8);
end;end;
readkey;
end.
19. Escrever um algoritmo/programa em Pascal que escreve a soma dos númerosentre 0 e 100.
program ex19;
uses crt;
var i, soma: integer;
begin
clrscr;
soma:=0;
for i:= 0 to 100 do
begin
soma:= soma + i;
end;
writeln('A soma dos numeros de 0 a 100 e: ', soma);
readkey;
end.
20. Escrever um algoritmo/programa em Pascal que escreve a soma dos númerospares entre 0 e 100.
program ex20;
uses crt;
var i, soma: integer;
begin
clrscr;
soma:=0;
for i:= 0 to 100 do
begin
if i mod 2 = 0 then
begin
soma:= soma + i;
end;
end;writeln('A soma dos numeros pares de 0 a 100 e: ', soma);
-
8/15/2019 Lfasfas
11/36
readkey;
end.
21. Escrever um algoritmo/programa em Pascal que escreve a soma dos números
múltiplos de 7 entre 100 e 200.
program ex21;
uses crt;
var i, soma: integer;
begin
clrscr;
soma:=0;
for i:= 100 to 200 do begin
if i mod 7 = 0 then
begin
soma:= soma + i;
end;
end;
writeln('A soma dos numeros multiplos de 7 de 100 a 200 e: ', soma);
readkey;
end.
22. Escrever um algoritmo/programa em Pascal que escreve a soma dos númerosque não são múltiplos de 13 entre 100 e 200.
program ex22;
uses crt;
var i, soma: integer;
beginclrscr;
soma:=0;
for i:= 100 to 200 do
begin
if i mod 13 0 then
begin
soma:= soma + i;
end;
end;
writeln('A soma dos numeros nao multiplos de 13 de 100 a 200 e: ', soma);
readkey;
-
8/15/2019 Lfasfas
12/36
end.
23. Escrever um algoritmo/programa em Pascal que lê 20 valores, um de cada vez,e conta quantos deles estão em cada um dos intervalos [0, 25], (25, 50], (50, 75],
(75, 100], escrevendo esta informação
program ex23;
uses crt;
var i, x, cont1, cont2, cont3, cont4: integer;
begin
clrscr;
cont1:=0; cont2:=0; cont3:=0; cont4:=0;
for i:= 1 to 20 do begin
write('Informe um valor (0-100): ');
readln(x);
if (x>=0) and (x25) and (x50) and (x75) and (x
-
8/15/2019 Lfasfas
13/36
for i:= 1 to 20 do
begin
write('Informe um valor (0-100): ');
readln(x);
if (x>=0) and (x25) and (x50) and (x75) and (x
-
8/15/2019 Lfasfas
14/36
cont:=0;
for i:= 1 to x do
begin
if x mod i = 0 then cont:=cont + 1;
end;
writeln('O numero ', x, ' possui ', cont, ' divisores.');readkey;
end.
26. Escrever um algoritmo/programa em Pascal que lê um número e calcula eescreve o seu fatorial.
program ex26;
uses crt;
var x, i: integer;
fat: longint;
begin
clrscr;
write('Informe um numero: ');
readln(x);
fat:=1;
for i:= 1 to x do
begin
fat:=fat * i;
end;
writeln('O fatorial de ', x, ' e: ', fat);
readkey;
end.
27. Escrever um algoritmo/programa em Pascal que lê um número e escreva se ele"é primo" ou "não é primo"
program ex27;
uses crt;
var x, i, cont: integer;
begin
clrscr;
write('Informe um numero: ');
readln(x);
cont:=0;
for i:= 1 to x do begin
-
8/15/2019 Lfasfas
15/36
if x mod i = 0 then cont:=cont + 1;
end;
if cont
-
8/15/2019 Lfasfas
16/36
30. Escrever um algoritmo/programa em Pascal que lê um número nãodeterminado de valores para m, todos inteiros e positivos, um de cada vez. Se m forpar, verificar quantos divisores possui e escrever esta informação. Se m for ímpare menor do que 12 calcular e escrever o fatorial de m. Se m for ímpar e maior ouigua1 a 12 calcular e escrever a soma dos inteiros de l até m.
Questão do Trabalho.
31. Escrever um algoritmo/programa em Pascal que lê um número nãodeterminados de valores a, todos inteiros e positivos, um de cada vez, e calcule eescreva a média aritmética dos valores lidos, a quantidade de valores pares, aquantidade de valores impares, a percentagem de valores pares e a percentagem devalores ímpares.
Questão do Trabalho.
32. Escrever um algoritmo/programa em Pascal que escreve os números primosentre 100 e 200, bem como a soma destes números.
program ex32;
uses crt;
var x, i, cont: integer;
begin
clrscr;
for x:= 100 to 200 do
begincont:=0;
for i:= 1 to x do
begin
if x mod i = 0 then cont:=cont + 1;
end;
if cont
-
8/15/2019 Lfasfas
17/36
program ex33;
uses crt;
var i, a, b, c, d, aux: integer;
begin
clrscr;
for i:= 1 to 5 do
begin
write('Informe um valor: ');
readln(a);
write('Informe um valor: ');
readln(b);
write('Informe um valor: ');
readln(c);
write('Informe um valor: ');readln(d);
writeln('Numeros digitados: ', a:6, b:6, c:6, d:6);
if a
-
8/15/2019 Lfasfas
18/36
begin
aux := c;
c := d;
d := aux;
end;
writeln('Em ordem decrescente: ', a:6, b:6, c:6, d:6);readkey;
end;
end.
34. Escrever um algoritmo/programa em Pascal que lê 10 valores para n, um decada vez, todos inteiros e positivos, e para cada n lido, escreva a tabuada de 1 até nde n.
program ex34;uses crt;
var i, j, n: integer;
begin
clrscr;
for i:= 1 to 10 do
begin
write('Informe um n£mero: ');
readln(n);
for j:= 1 to n do
begin
writeln(j, ' x ', n, ' = ', j * n);
end;
end;
readkey;
end.
35. Escrever um algoritmo/programa em Pascal que lê 5 pares de valores a, b,
todos inteiros e positivos, um par de cada vez, e com a < b, e escreve os inteirospares de a até b, incluindo o a e b se forem pares.
program ex35;
uses crt;
var i, j, a, b, aux: integer;
begin
clrscr;
for i:= 1 to 5 do begin
-
8/15/2019 Lfasfas
19/36
write('Informe um n£mero: ');
readln(a);
write('Informe um n£mero: ');
readln(b);
if a>b then
beginaux:=a;
a:=b;
b:=aux;
end;
for j:= a to b do
begin
if j mod 2 = 0 then writeln(j);
end;
end;
readkey;
end.
36. A série de Fibonacci tem como dados os 2 primeiros termos da série que sãorespectivamente 0 e 1. A partir deles, os demais termos são construídos pelaseguinte regra: tn = tn-1 + tn-2. Escrever um algoritmo/programa em Pascal quegera os 10 primeiros termos da Série de Fibonacci e calcula e escreve a somadestes termos.
program ex36;
uses crt;
var ult, pen, nt, i: integer;
begin
clrscr;
writeln('Termos Serie Fibonacci:');
pen:=0;
ult:=1;
writeln(pen);
writeln(ult);for i:= 1 to 8 do
begin
nt:=ult + pen;
writeln(nt);
pen:=ult;
ult:=nt;
end;
readkey;
end.
-
8/15/2019 Lfasfas
20/36
39. Escrever um algoritmo/programa em Pascal que lê 5 conjuntos de 2 valores, oprimeiro representando o número de um aluno e o segundo representando a suaaltura em centímetros. Encontrar o aluno mais alto e o mais baixo e escrever seusnúmeros, suas alturas e uma mensagem dizendo se é o mais alto ou o mais baixo.
Questão do Trabalho.
40. Escrever um algoritmo/programa em Pascal que gera e escreve os 5 primeirosnúmeros perfeitos. Um número perfeito é aquele que é igual a soma dos seusdivisores. (Ex.: 6 = l + 2 + 3; 28 = 1 + 2 + 4 + 7 + 14 etc.).
program ex40;
uses crt;
var cont, x, soma, i: integer;
begin
clrscr;
cont:=0;
x:=0;
writeln('Os numeros perfeitos sao: ');
repeat
x:=x+1;
soma:=0;
for i:= 1 to x-1 do
begin
if x mod i = 0 then soma:=soma + i;
end;
if soma = x then
begin
writeln(x);
cont:=cont+1;
end
until cont=4;
writeln('Pressione qualquer tecla para finalizar...');
readkey;end.
41. Escrever um algoritmo/programa em Pascal que lê 50 valores, um de cada vez,e encontra e escreve o maior deles.
program ex41;
uses crt;
var i, x, m: integer;
-
8/15/2019 Lfasfas
21/36
begin
clrscr;
for i:= 1 to 50 do
begin
write('Informe o ',i,'.o valor: ');
readln(x);if i=1 then
begin
m:=x;
end;
if x > m then
begin
m:=x;
end;
end;
writeln('O maior valor e: ', m);
readkey;end.
42. Escrever um algoritmo/programa em Pascal que gera os números de 1000 a1999 e escreve aqueles que divididos por 11 dão um resto igual a 5.
program ex42;
uses crt;
var
i: integer;
begin
clrscr;
for i:= 1000 to 1999 do
begin
if i mod 11 = 5 then write(i:8);
end;
readkey;
end.
43. Escrever um algoritmo/programa em Pascal que lê um valor N e calcula eescreve os 20 primeiros termos da série: 1 + 1/x2 + 1/x3 + 1/x4 + ...
program ex43;
uses crt;
var
x, i: integer;
t, soma: real; begin
-
8/15/2019 Lfasfas
22/36
clrscr;
soma:=0;
write('Informe um valor: ');
readln(x);
writeln('Termos:');
t:=1;writeln(t:0:8);
soma:=soma+t;
for i:= 2 to 20 do
begin
t:= 1/ (exp(ln(x)*i));
writeln(t:0:8);
soma:=soma+t;
end;
writeln('A soma e: ', soma:0:8);
readkey;
end.
44. Escrever um algoritmo/programa em Pascal que calcula e escreve o produtodos números primos entre 92 e 1478.
Questão do Trabalho.
45. Escrever um algoritmo/programa em Pascal que lê N, inteiro e positivo ecalcula e escreve o termo de ordem N da sucessão abaixo: ordem: 1 2 3 45 6 7 8 ... sucessão: -1 0 5 6 11 12 17 18 ...
program ex45;
uses crt;
var x, i, nro: integer;
begin
clrscr;
write('Informe um numero: ');
readln(x);nro:=-1;
for i:= 1 to x do
begin
write(nro:4);
if i mod 2 0 then
begin
nro:=nro+1;
end
else
begin
nro:=nro+5;end;
-
8/15/2019 Lfasfas
23/36
end;
readkey;
end.
47.Escrever um algoritmo/programa em Pascal que lê um vetor V[6] e oescreve. Conte, a seguir quantos valores de V são negativos e escrevaesta informação.
program ex47;
uses crt;
var v: array[1..6] of integer;
i, cont: integer;
begin
clrscr;
for i:= 1 to 6 do
begin
writeln('Informe o ', i ,'§ valor: ');
readln(v[i]);
end;
for i:= 1 to 6 do
begin
writeln(v[i]);
end;
cont:=0;
for i:= 1 to 6 do
begin
if v[i]
-
8/15/2019 Lfasfas
24/36
x[i]:=1;
end;
end;
for i:= 1 to 100 do
begin
writeln(x[i]);
end;readkey;
end.
49. Escrever um algoritmo/programa em Pascal que lê um vetor C[50] e o
escreve. Encontre, a seguir, o maior elemento de C e o escreva.
program ex49;
uses crt;
var
c: array[1..50] of integer;
m, i: integer;
begin
clrscr;
for i:= 1 to 50 do
begin
writeln('Informe o ', i ,'§ valor: ');
readln(c[i]);
end;
for i:= 1 to 50 do
begin
writeln(c[i]);
end;
m:=c[1];
for i:= 1 to 50 do
begin
if c[i]>m then
begin
m:=c[i];
end;
end;
writeln('O maior valor e: ', m);
readkey;
end.
50. Escrever um algoritmo/programa em Pascal que lê um vetor N[80] e o
escreve. Encontre, a seguir, o menor elemento e a sua posição no vetor
N e escreva: "o menor elemento de n é = ", M, "e a sua posição é = ",P.
program ex50;
uses crt;
var
n: array[1..80] of integer;
m, p, i: integer;
begin
clrscr;
for i:= 1 to 80 do
begin
writeln('Informe o ', i ,'§ valor: ');
readln(n[i]);end;
-
8/15/2019 Lfasfas
25/36
for i:= 1 to 80 do
begin
writeln(n[i]);
end;
m:=n[1];
p:=1;
for i:= 1 to 80 dobegin
if n[i]a[j] then
begin
aux:=a[i];a[i]:=a[j];
a[j]:=aux;
end;
end;
end;
writeln;
writeln('Vetor em ordem crescente: ');
for i:= 1 to 15 do
begin
write(a[i]:5);
end;
readkey;
end.
-
8/15/2019 Lfasfas
26/36
52. Escrever um algoritmo/programa em Pascal que lê um vetor N[20] e o
escreve. Troque, a seguir, o 1º elemento com o último, o 2º com o
penúltimo, etc., até o 10º com o 11º e escreva o vetor N assim
modificado.
program ex52;uses crt;
var
n: array[1..20] of integer;
aux, i: integer;
begin
clrscr;
for i:= 1 to 20 do
begin
writeln('Informe o ', i ,'§ valor: ');
readln(n[i]);
end;
writeln('Vetor original: ');
for i:= 1 to 20 do
begin
write(n[i]:5);
end;
for i:= 1 to 10 do
begin
aux:=n[i];
n[i]:=n[21-i];
n[21-i]:=aux;
end;
writeln;
writeln('Vetor alterado: ');
for i:= 1 to 20 do
begin
write(n[i]:5);
end;
readkey;
end.
53. Escrever um algoritmo/programa em Pascal que lê um vetor K(20) e o
escreve. Troque, a seguir, os elementos de ordem ímpar com os de ordem
par imediatamente seguintes e escreva o vetor k modificado.
program ex53;
uses crt;
var
k: array[1..20] of integer;aux, i: integer;
begin
clrscr;
for i:= 1 to 20 do
begin
writeln('Informe o ', i ,'§ valor: ');
readln(k[i]);
end;
writeln('Vetor original: ');
for i:= 1 to 20 do
begin
write(k[i]:5);
end;for i:= 1 to 20 do
-
8/15/2019 Lfasfas
27/36
begin
if i mod 20 then
begin
aux:=k[i];
k[i]:=k[i+1];
k[i+1]:=aux;
end;end;
writeln;
writeln('Vetor alterado: ');
for i:= 1 to 20 do
begin
write(k[i]:5);
end;
readkey;
end.
54. Escrever um algoritmo/programa em Pascal que lê um vetor N[20] e o
escreve. Troque, a seguir, o 1º elemento com 11º, o 2º com o 12º,
etc., até o 10º com o 20º e escreva o vetor assim modificado.
program ex54;
uses crt;
var
n: array[1..20] of integer;
aux, i: integer;
begin
clrscr;
for i:= 1 to 20 do
begin
writeln('Informe o ', i ,'§ valor: ');
readln(n[i]);
end;
writeln('Vetor original: ');
for i:= 1 to 20 do
begin
write(n[i]:5);
end;
for i:= 1 to 10 do
begin
aux:=n[i];
n[i]:=n[10+i];
n[10+i]:=aux;
end;
writeln;
writeln('Vetor alterado: ');for i:= 1 to 20 do
begin
write(n[i]:5);
end;
readkey;
end.
55. Escrever um algoritmo/programa em Pascal que lê um vetor G[20]
(gabarito) e a seguir lê um número não determinado de números de
alunos e vetores R[20] (resposta), um número e um vetor R de cada vez.
O número representa o número de um aluno e o vetor R representa o
conjunto de respostas daquele aluno. Para cada aluno calcular o nº deacertos e ca1cular a nota.
-
8/15/2019 Lfasfas
28/36
nota = número de acertos * 0.5
Escrever o nº do aluno, sua nota e a mensagem "aprovado" se tiver
nota maior ou igual a 5 ou "reprovado" se a nota for menor do que 5.
program ex55;
uses crt;
varg, r:array[1..20] of integer;
numal, acertos, i: integer;
nota: real;
begin
clrscr;
writeln('Informe o Gabarito: ');
for i:= 1 to 20 do
begin
write('Resposta ',i,': ');
readln(g[i]);
end;
repeat
clrscr;
writeln('Informe o Numero do Aluno (0 para sair): ');
readln(numal);
if numal>0 then
begin
writeln('Informe as respostas do aluno ',numal);
for i:= 1 to 20 do
begin
write('Resposta ',i,': ');
readln(r[i]);
end;
acertos:=0;
for i:= 1 to 20 do
begin
if r[i]=g[i] then
begin
acertos:=acertos+1;
end;
end;
nota:=acertos * 0.5;
writeln('O aluno ', numal, ' obteve a nota ', nota:0:1);
if nota>=5 then
begin
writeln('Esta aprovado!')
end
else
beginwriteln('Esta reprovado!');
end;
readkey;
end;
until numal=0;
end.
56. Escrever um algoritmo/programa em Pascal que lê 2 vetores K[10] e
N[10] e os escreve. Crie, a seguir, um vetor M que seja a diferença
entre K e N (M = K - N) e escreva o vetor M.
program ex56;uses crt;
-
8/15/2019 Lfasfas
29/36
var
k, n, m: array[1..10] of integer;
i: integer;
begin
clrscr;
for i:= 1 to 10 do
beginwriteln('Informe o ', i ,'§ valor do vetor N: ');
readln(n[i]);
end;
for i:= 1 to 10 do
begin
writeln('Informe o ', i ,'§ valor do vetor K: ');
readln(k[i]);
end;
for i:= 1 to 10 do
begin
m[i]:=k[i]-n[i];
end;
writeln('Vetor N: ');
for i:= 1 to 10 do
begin
write(n[i]:5);
end;
writeln;
writeln('Vetor K: ');
for i:= 1 to 10 do
begin
write(k[i]:5);
end;
writeln;
writeln('Vetor M: ');
for i:= 1 to 10 do
begin
write(m[i]:5);
end;
readkey;
end.
57. Escrever um algoritmo/programa em Pascal que lê um vetor G[13] que
é o Gabarito de um teste da loteria esportiva, contendo os valores 1
(coluna 1), 2(coluna 2), e 3 (coluna do meio). Ler, a seguir, para
cada apostador, o nº de seu cartão e um vetor Resposta R[13].
Verificar para cada apostador o nº de acertos e escrever o nº do
apostador e seu número de acertos. Se tiver 13 acertos, acrescentar
a mensagem: "ganhador, parabéns!".
program ex57;
uses crt;
var
g, r:array[1..13] of integer;
numcart, acertos, i: integer;
begin
clrscr;
writeln('Informe o Resultado da Loteria (Gabarito): ');
for i:= 1 to 13 do
begin
write('Jogo ',i,': ');readln(g[i]);
-
8/15/2019 Lfasfas
30/36
end;
repeat
clrscr;
writeln('Informe o Numero do Cartao (0 para sair): ');
readln(numcart);
if numcart>0 then
beginwriteln('Informe as respostas do cartao ',numcart);
for i:= 1 to 13 do
begin
write('Jogo ',i,': ');
readln(r[i]);
end;
acertos:=0;
for i:= 1 to 13 do
begin
if r[i]=g[i] then
begin
acertos:=acertos+1;
end;
end;
writeln('O cartao ', numcart, ' obteve ', acertos,' acertos!');
if acertos=13 then
begin
writeln('Ganhador, Parabens!')
end;
readkey;
end;
until numcart=0;
end.
58. Escrever um algoritmo/programa em Pascal que lê, um vetor V[20] e
o escreve. Compacte, a seguir, o vetor Y, retirando dele todos os
valores nulos ou negativos e escreva o vetor compactado.
program ex58;
uses crt;
var
v, y: array[1..20] of integer;
cont, i: integer;
begin
clrscr;
for i:= 1 to 20 do
begin
writeln('Informe o ',i, '§ valor: ');
readln(v[i]);end;
cont:=0;
for i:= 1 to 20 do
begin
if v[i]>0 then
begin
cont:=cont+1;
y[cont]:=v[i];
end;
end;
clrscr;
writeln('Vetor original:');
for i:= 1 to 20 dobegin
-
8/15/2019 Lfasfas
31/36
write(v[i]:5);
end;
writeln;
writeln('Vetor compactado: ');
for i:= 1 to cont do
begin
write(y[i]:5);end;
readkey;
end.
59. Escrever um algoritmo/programa em Pascal que lê um vetor V(20) e o
escreve. Retire, a seguir, os elementos em duplicata, compactando o
vetor Y, e escrevendo o vetor compactado.
program ex59;
uses crt;
var
v, y: array[1..20] of integer;
contpos,cont, i, j: integer;
begin
clrscr;
for i:= 1 to 20 do
begin
writeln('Informe o ',i, '§ valor: ');
readln(v[i]);
end;
contpos:=0;
for i:= 1 to 20 do
begin
cont:=0;
for j:=1 to contpos do
begin
if y[j]=v[i] then
begin
cont:=cont+1;
end;
end;
if cont=0 then
begin
contpos:=contpos+1;
y[contpos]:=v[i];
end;
end;
clrscr;
writeln('Vetor original:');for i:= 1 to 20 do
begin
write(v[i]:5);
end;
writeln;
writeln('Vetor compactado: ');
for i:= 1 to contpos do
begin
write(y[i]:5);
end;
readkey;
end.
-
8/15/2019 Lfasfas
32/36
61. Escrever um algoritmo/programa em Pascal que lê o 1º termo e a
razão de uma progressão aritmética e gera os vinte termos seguintes
desta progressão, armazenando-os em 2 vetores de 10 elementos cada, no
1º os termos de ordem ímpar de geração e no 2º os de ordem par de
geração. Escreva a seguir os 2 vetores de forma que os termos
apareçam na ordem em que foram gerados.
program ex61;
uses crt;
var
vpar, vimpar: array[1..10] of integer;
t1, r, x, i: integer;
begin
clrscr;
writeln('1.o termo: ');
readln(t1);
writeln('Razao: ');
readln(r);
x:=t1;
for i:= 1 to 10 do
begin
vimpar[i]:=x;
x:=x+r;
vpar[i]:=x;
x:=x+r;
end;
for i:= 1 to 10 do
begin
write(vimpar[i]:5, vpar[i]:5);
end;
readkey;
end.
62. Escrever um algoritmo/programa em Pascal que gera os 10 primeiros
números primos acima de 100 e os armazena em um vetor X(10)
escrevendo, no final, o vetor X.
program ex62;
uses crt;
var
x: array[1..10] of integer;
i, num, contdiv, contprimo: integer;
begin
clrscr;
contprimo:=0;
num:=100;repeat
num:=num+1;
contdiv:=0;
for i:= 1 to num do
begin
if num mod i=0 then
begin
contdiv:=contdiv+1;
end;
end;
if contdiv
-
8/15/2019 Lfasfas
33/36
end;
until contprimo=10;
writeln('Os numeros primos sao: ');
for i:= 1 to 10 do
begin
writeln(x[i]);
end;readkey;
end.
63. Escreva um algoritmo/programa em Pascal que lê uma matriz M(5,5) e
calcula as somas:
a) da linha 4 de M
b) da coluna 2 de M
c) da diagonal principal
d) da diagonal secundária
e) de todos os elementos da matriz
Escreva estas somas e a matriz.
program ex63;
uses crt;
var
m: array[1..5,1..5] of integer;
i, j, sl4, sc2, sdp, sds, soma: integer;
begin
sl4:=0; sc2:=0;
sdp:=0; sds:=0;
soma:=0;
clrscr;
writeln('Informe a matriz: ');
for i:= 1 to 5 do
begin
for j:= 1 to 5 do
begin
gotoxy(j*6,i+1);
readln(m[i,j]);
end;
end;
clrscr;
writeln('Matriz: ');
for i:= 1 to 5 do
begin
for j:= 1 to 5 do
begin
gotoxy(j*6,i+1);
write(m[i,j]:6);end;
end;
for j:= 1 to 5 do
begin
sl4:=sl4+m[4,j];
end;
for i:= 1 to 5 do
begin
sc2:=sc2+m[i,2];
end;
for i:= 1 to 5 do
begin
sdp:=sdp+m[i,i];sds:=sds+m[i,6-i];
-
8/15/2019 Lfasfas
34/36
end;
for i:= 1 to 5 do
begin
for j:= 1 to 5 do
begin
soma:=soma+m[i,j];
end;end;
writeln;
writeln('Soma linha 4: ',sl4);
writeln('Soma coluna 2: ',sc2);
writeln('Soma diagonal principal: ',sdp);
writeln('Soma diagonal secundaria: ',sds);
writeln('Soma de toda matriz: ',soma);
readkey;
end.
64. Escrever um algoritmo/programa em Pascal que lê uma matriz M(6,6)
e calcula as somas das partes hachuriadas.
x X X X X X X X X X X x x X X X X x x x x x x x
x x X X X X X X X X x x x x X X x x X x x x x x
x x x X X X X X X x x x x x x x x x X X x x x x
x x x x X X X X x x x x x x x x x x X X x x x x
x x x x x X X x x x x x x x x x x x X x x x x x
x x x x x x x x x x x x x x x x x x x x x x x x
Escrever a matriz M e as somas calculadas
65. Escrever um algoritmo/programa em Pascal que lê uma matriz
M(10,10) e a escreve. Troque, a seguir:
- a linha 2 com a linha 8.
- a coluna 4 com a coluna 10
- a diagonal principal com a secundária
- a linha 5 com a coluna 10
Escreva a matriz assim modificada.
program ex65;
uses crt;
var
m: array[1..10,1..10] of integer;
aux, i, j: integer;
begin
clrscr;
writeln('Informe a matriz: ');
for i:= 1 to 10 do
beginfor j:= 1 to 10 do
begin
gotoxy(j*6,i+1);
{readln(m[i,j]);}
m[i,j]:=(i-1)*10+j;
end;
end;
clrscr;
writeln('Matriz: ');
for i:= 1 to 10 do
begin
for j:= 1 to 10 do
begingotoxy(j*6,i+1);
-
8/15/2019 Lfasfas
35/36
write(m[i,j]:6);
end;
end;
readkey;
clrscr;
writeln('Troca da linha 2 com a linha 8:');
for j:= 1 to 10 dobegin
aux:=m[2,j];
m[2,j]:=m[8,j];
m[8,j]:=aux;
end;
for i:= 1 to 10 do
begin
for j:= 1 to 10 do
begin
gotoxy(j*6,i+1);
write(m[i,j]:6);
end;
end;
readkey;
clrscr;
writeln('Troca da coluna 4 com a coluna 10:');
for i:= 1 to 10 do
begin
aux:=m[i,4];
m[i,4]:=m[i,10];
m[i,10]:=aux;
end;
for i:= 1 to 10 do
begin
for j:= 1 to 10 do
begin
gotoxy(j*6,i+1);
write(m[i,j]:6);
end;
end;
readkey;
clrscr;
writeln('Troca da diagonal principal com a secundaria:');
for i:= 1 to 10 do
begin
aux:=m[i,i];
m[i,i]:=m[i,11-i];
m[i,11-i]:=aux;
end;
for i:= 1 to 10 dobegin
for j:= 1 to 10 do
begin
gotoxy(j*6,i+1);
write(m[i,j]:6);
end;
end;
readkey;
clrscr;
writeln('Troca da linha 5 com a coluna 10:');
for i:= 1 to 10 do
begin
aux:=m[5,i];m[5,i]:=m[i,10];
-
8/15/2019 Lfasfas
36/36
m[i,10]:=aux;
end;
for i:= 1 to 10 do
begin
for j:= 1 to 10 do
begin
gotoxy(j*6,i+1);write(m[i,j]:6);
end;
end;
readkey;
end.