terça-feira, 11 de setembro de 2012
Programas que utilizam procedures e functions - Pascal
{[pascal] Procedures – Exemplo de subrotina – Calculadora
Esse exemplo faz uma calculadora simples usando um procedimento
para cada operação. Também faz uso do Case, uma alternativas a
if (s) aninhados. }
Program CALCULADORA;
uses CRT;
var
opcao: char;
{ Sub-rotinas de calculos - Adição }
Procedure rot_adicao;
var
x, a, b: real;
Begin
clrscr;
gotoxy(32,01); write('Rotina de adição');
gotoxy(05,06); write('Entre um valor para A: '); readln(a);
gotoxy(05,07); write('Entre um valor para b: '); readln(b);
x:=a+b;
gotoxy(05,10); write('O resultado equivale a: ', x:6:2);
gotoxy(25,24); writeln('Pressione para voltar para o menu ');
readln;
end;
{---------------------------------------------------------------}
{ Sub-rotinas de calculos - Subtração }
Procedure rot_subtracao;
var
x, a, b: real;
Begin
clrscr;
gotoxy(32,01); write('Rotina de adição');
gotoxy(05,06); write('Entre um valor para A: '); readln(a);
gotoxy(05,07); write('Entre um valor para b: '); readln(b);
x:=a-b;
gotoxy(05,10); write('O resultado equivale a: ', x:6:2);
gotoxy(25,24); writeln('Pressione para voltar para o menu ');
readln;
end;
{----------------------------------------------------------------}
{ Sub-rotinas de calculos - Multiplicação}
Procedure rot_multiplicacao;
var
x, a, b: real;
Begin
clrscr;
gotoxy(32,01); write('Rotina de adição');
gotoxy(05,06); write('Entre um valor para A: '); readln(a);
gotoxy(05,07); write('Entre um valor para b: '); readln(b);
x:=a*b;
gotoxy(05,10); write('O resultado equivale a: ', x:6:2);
gotoxy(25,24); writeln('Pressione para voltar para o menu ');
readln;
End;
{----------------------------------------------------------------}
{ Sub-rotinas dee calculos - Divisão }
Procedure rot_divisao;
var
x, a, b: real;
Begin
clrscr;
gotoxy(32,01); write('Rotina de adição');
gotoxy(5, 6); write('Entre um valor para A: '); readln(a);
gotoxy(5, 7); write('Entre um valor para b: '); readln(b);
x:=a/b;
gotoxy(5,10); write('O resultado equivale a: ', x:6:2);
gotoxy(25,24); writeln('Pressione para voltar para o menu ');
readln;
end;
{----------------------------------------------------------------}
BEGIN { PROGRAMA PRINCIPAL}
textColor(yellow + blink); { altero a cor da fonte }
textBackground(BLUE); { altero a cor do plano de fundo }
clrscr;
opcao:='0';
while (opcao < '5') do
Begin
clrscr;
gotoxy(33,01); write('Menu principal');
gotoxy(22,06); write('1 Soma');
gotoxy(22,08); write('2 Subtracao');
gotoxy(22,10); write('3 Multiplicacao');
gotoxy(22,12); write('4 Divisao');
gotoxy(22,14); write('5 Fim de programa');
gotoxy(22,18); write('Escolha uma opcao ......: ');
readln(opcao);
Case opcao of
'1': rot_subtracao;
'2': rot_subtracao;
'3': rot_multiplicacao;
'4': rot_divisao
Else
Writeln('Byeee');
end;
end;
END.
{[pascal] Units São rotinas prontas para seremusadas pelo programador.
Unidades foram incorporadas com o intuirto deagrupar diversas rotinas básicas.
Uma unit é uma biblioteca de funções, procedimentose constantes. Em seguida
estão relacionadas as unidades compilador Free Pascal }
•CRT – variáveis de geração de som, controle de video e teclado
•DOS – permitem controles de baixo nivel, utilizando recursos do
sistema operacional DOS.
•GRAPH – manipulaçõa de capacidade gráfica de um PC
•OVERLAY – Gerencia atividades de um programa. (memória)
•PRINTER – usa a impressora como saída de informação
•SYSTEM – Rotinas padrão do Pascal. Não precisa ser declarada.
Como utilizar: Uses <unidade>
Procedimentos e Funções muito utilizadas em CRT
clrscr – (procedimento) – limpa a tela
gotoxy(coluna, lina) – (procedimento) – posiciona o cursosr em um ponto da tela.
Coluna de 1 a 80, linha de 1 a 25.
readkey – (função) – retorna o valor da tecla pressionada. Faz leiturade apenas
um caractere (e não é necessário pressionar <ENTER>)
{[pascal] Tipo Registro / type record Um exemplo de aplicações prática do tipo registro.
Esse exemplo lê o nome e as 4 notas de 8 alunos. Ordena em crescente pelo o nome e exibe um a um.}
program LEITURA_ORDENACaO_ESCRITA;
type
bimestre = array[1..4] of real;
cad_aluno = record
nome: string;
nota: bimestre;
end;
var
aluno : array[1..8] of cad_aluno;
i, j, atual, proximo : byte;
x : cad_aluno;
BEGIN
{Rotima de entrada de dados}
writeln('CADASTRO DE ALUNOS');
writeln;
for j:= 1 to 8 do
Begin
write('Informe o nome do ', j:2, 'o. aluno :'); readln(aluno[j].nome);
writeln;
for i:=1 to 4 do
Begin
write(' Informe a ', i:2, 'a. nota :'); readln(aluno[j].nota[i]);
end;
writeln;
end;
writeln;
{Rotina de ordenação}
for atual:=1 to 7 do
Begin
for proximo:= atual+1 to 8 do
Begin
if (aluno[atual].nome > aluno[proximo].nome) then
Begin
x:= aluno[atual];
aluno[atual] := aluno[proximo];
aluno[proximo] := x;
end;
end;
end;
{Rotina de saída }
writeln;
for j:= 1 to 8 do
Begin
writeln('Nome aluno: ', j:2, ' : ', aluno[j].nome);
writeln;
for i:= 1 to 4 do
Begin
writeln('Nota ', i, ' : ', aluno[j].nota[i]:5:2);
end;
Writeln;
writeln('Tecle para ver o proximo: '); readln;
end;
writeln;
writeln('Tecle para encerrar: '); readln;
END.
{[free pascal] Estruturas de dados heterogêneas 1}
program LEITURA_ESCRITA;
type
Bimestre=array[1..4] of real;
cadaluno = record
nome: string;
nota: bimestre;
end;
var
aluno: cadaluno;
i: byte;
BEGIN
writeln(‘Cadastro de aluno’);
writeln;
write(‘Informe o nome … : ‘); readln(aluno.nome);
writeln;
for i:= 1 to 4 do
Begin
write(‘Informe a ‘, i:2, ‘a. nota .. : ‘);
readln(aluno.nota[i]);
end;
writeln;
writeln;
writeln(‘Nome …: ‘, aluno.nome);
writeln;
for i:= 1 to 4 do
Begin
writeln(‘Nota ‘, i, ‘ : ‘, aluno.nota[i]:5:2);
end;
writeln;
writeln(‘Tecle <ENTER> para encerrar: ‘); readln;
END.
{[free pascal] Matriz com duas dimensões ex.2 O exemplo abaixo
é um programa de agenda. Possui uma tabela com 5 colunas com
os dados (nome, endereco, cepo, bairro e telefone) e 10 linhas
(com os nomes dos cadastrados).}
program AGENDA;
var
dado : array[1..10, 1..5] of string;
i, j, atual, proximo : integer;
x : string;
BEGIN
{Rotina de entrada}
writeln(‘Programa agenda’);
writeln;
for i:=1 to 10 do
Begin
write(‘Nome …..:’); readln(dado[i,1]);
write(‘Endereco..:’); readln(dado[i,2]);
write(‘CEP… …..:’); readln(dado[i,3]);
write(‘Bairro…..:’); readln(dado[i,4]);
write(‘Telefone..:’); readln(dado[i,5]);
writeln;
end;
{Ordenação e troca de elementos}
for atual:=1 to 9 do
Begin
for proximo:=atual+1 to 10 do
Begin
{troca nome}
x:=dado[atual,1];
dado[atual, 1]:= dado[proximo,1];
dado[proximo, 1]:=x;
{troca endereco}
x:=dado[atual,2];
dado[atual, 2]:= dado[proximo,2];
dado[proximo, 2]:=x;
{troca CEP}
x:=dado[atual,3];
dado[atual, 3]:= dado[proximo,3];
dado[proximo, 3]:=x;
{troca Bairro}
x:=dado[atual,4];
dado[atual, 4]:= dado[proximo,4];
dado[proximo, 4]:=x;
{troca Telefone}
x:=dado[atual,5];
dado[atual, 5]:= dado[proximo,5];
dado[proximo, 5]:=x;
end;
end;
{Saida de dados}
for i:=1 to 10 do
Begin
for j:=1 to 5 do
Begin
writeln(dado[i,j]);
end;
writeln;
end;
writeln(‘Tecle <ENTER> para encerrar: ‘); readln;
END.
{[free pascal] Exemplo de matriz com duas dimensões
O exemplo abaixo se trata de uma tabela, onde são
inseridas e exibidas 4 notas de 8 alunos.}
program NOTA_ALUNO;
var
notas : array [1..8, 1..4] of real;
i,j : integer;
BEGIN
writeln(‘Leitura e aporesentação de notas’);
writeln;
for i:=1 to 8 do
Begin
writeln;
writeln(‘Entre as notas do ‘, i:2, ‘o. aluno’);
for j:=1 to 4 do
begin
writeln(‘Nota ‘, j:2, ‘: ‘);
readln(notas[i,j]);
end;
end;
writeln;
for i:=1 to 8 do
Begin
write(‘As notas do aluno ‘, i:2, ‘são: ‘);
for j:=1 to 4 do
Begin
write(notas[i,j]:5:2, ‘ ‘);
writeln;
end;
end;
writeln;
writeln(‘Tecle <enter> para encerrar: ‘); readln;
END.
{[free pascal] Métodos de Pesquisa 2: Pesquisa binária
Dividir e conquistar é o lema desse método. Ordena os
dados para localiza-lo posteriormente usando o método
de pesquisa binária.}
{
1. Iniciar um contador, pedir a leitura de dez nomes e colocalos em ordem alfabetica
2. Criar um looping que efetue a pesquisa enquanto o usuario desejar
Durante a fase de pesquisa, deve ser solicitada a informação a ser pesquisada.
Essa informação deve ser comparada, utilizando o método de pesquisa binária
Sendo igual, mostra; caso contrário, avança para o próximo. Senão achar em toda lista,
informar que não existe o lelemneto pesquisado; se existir, deve mostra-lo
3. Encerrar a pesquisa quando desejando
}
program PESQUISA_BINARIA;
var
nome : array [1..10] of string;
i, j : integer;
comeco, final, meio: integer;
pesq, resp, x: string;
acha: boolean;
BEGIN
writeln(‘Pesquisa binaria de nomes: ‘);
writeln;
for i:=1 to 10 do
begin
write(‘Digite o ‘, i:2, ‘o nome: ‘); readln(nome[i]);
end;
{Ordenando os nomes }
for i:= 1 to 9 do
for j:= i+1 to 10 do
if (nome[i] > nome[j]) then
begin
x:= nome[i];
nome[i]:=nome[j];
nome[j]:=x;
end;
{Pesquisando..}
resp:=’sim’;
while (resp=’sim’) or (resp=’SIM’) do
begin
writeln;
write(‘Entre o nome a ser pesquisado: ‘); readln(pesq);
comeco:=1;
final:=10;
acha:=false;
while (comeco <=final) and (acha=false) do
begin
meio:=(comeco+final) div 2;
if (pesq=nome[meio]) then
acha:=true
else
if (pesq < nome[meio]) then
final:=meio-1
else
comeco:=meio+1;
end;
if (acha=true) then
writeln(pesq, ‘ foi localizado na posicao ‘, meio:2)
else
writeln(pesq, ‘ não foi localizado’);
writeln;
write(‘Deseja continuar? sim/nao: ‘);
readln(resp);
end;
END.
Programa para obter o numero do I ching da personalidade do individuo em pascal
{programa numero I Ching Fiz esse programinha usando o método 2 do livro
“Feng Shui e a Astrologia” de cálculo para obter o numero do I ching da
personalidade do individuo. Funcionamento bem simples, o usuario digita
o ano do seu nascimento e o programa retorna o numero.}
program anoIChing;
Uses CRT;
var
cAno: Array [1..4] of char; {ano em caracter, pois readkey só funciona com este}
iAno: Array [1..4] of integer; {vou converter o caracter para inteiro para fazer conta}
iChing, iSoma, c: integer; {simples contador}
{Esse trecho somente PEGA e CONVERTE o que o ano que o usuario digita}
Procedure entraAno;
begin
For c:=1 to 4 Do
Begin
cAno[c]:=readkey;
Case cAno[c] of
'0': iAno[c]:=0;
'1': iAno[c]:=1;
'2': iAno[c]:=2;
'3': iAno[c]:=3;
'4': iAno[c]:=4;
'5': iAno[c]:=5;
'6': iAno[c]:=6;
'7': iAno[c]:=7;
'8': iAno[c]:=8;
'9': iAno[c]:=9;
end;
write(cAno[c]);
end;
end;
{Esse trecho somente IMPRIME o que o ano que o usuario digita}
Procedure imprimeAno;
Begin
For c:=1 to 4 Do
Begin
write(iAno[c]);
end;
end;
{Esse trecho somente SOMA todos os digitos de ano}
Procedure SomaAno;
Begin
iSoma:=0;
For c:=1 to 4 Do
Begin
iSoma:=iAno[c]+iSoma;
end;
end;
{Esse trecho somente SOMA a SOMA de todos os digitos de ano}
Procedure obtemIChing;
var
d, u, s: integer;
Begin
d:=ISoma div 10;
u:=ISoma mod 10;
s:=d+u;
iChing:=11-s;
write('I Ching ', iChing, ' ');
end;
Procedure descreveIChing;
Begin
Case iChing of
1: Begin{agua}
write('Agua (yin)');
End;
2: Begin{Terra}
write('Terra (yin)');
End;
3: Begin{Arvore}
write('Arvore (yin)');
End;
4: Begin{Arvore}
write('Terra (yin');
End;
5: Begin{Terra}
write('Terra (yine yang)');
End;
6: Begin{Metal}
write('Metal (yiang)');
End;
7: Begin{Metal}
write('Metal (yiang)');
End;
8: Begin{Terra}
write('Terra (yaing)');
End;
9: Begin{Fogo}
write('Fogo (yiang)');
End;
end;
end;
{ P R I N C I P A L }
Begin
writeln; writeln; writeln;
Write('Digite o ano de seu nascimento : ');entraAno;
writeln;
write('o numero que vc digitou foi : ' ); imprimeAno;
writeln;
writeln;
somaAno;
writeln;
obtemIChing;
descreveIChing;
writeln;
writeln;
writeln;
writeln;
writeln;
End.
Montar uma calculadora somente com o uso de functions
{Calculadora com uso de funções}
program CalculadoraF;
USES CRT;
FUNCTION ADICAO (A, B: REAL) : REAL;
begin
ADICAO:=A+B;
end;
FUNCTION SUBTRACAO (A, B: REAL) : REAL;
begin
SUBTRACAO:=A-B;
end;
FUNCTION MULTIPLICACAO (A, B: REAL) : REAL;
begin
MULTIPLICACAO:=A*B;
end;
FUNCTION DIVISAO (A, B: REAL) : REAL;
begin
DIVISAO:=A/B;
end;
VAR
NUM1, NUM2: real;
BEGIN
clrscr;
write(‘Informe o primeiro numero: ‘); readln(NUM1);
write(‘Informe o segundo numero: ‘); readln(NUM2);
writeln(‘ o resultado da adicao = ‘ , ADICAO(NUM1, NUM2):5:2) ;
writeln(‘ o resultado da subtracao = ‘, SUBTRACAO(NUM1, NUM2):5:2);
writeln(‘ o resultado da multiplicacao = ‘, MULTIPLICACAO(NUM1, NUM2):5:2);
writeln(‘ o resultado da divisao = ‘, DIVISAO(NUM1, NUM2):5:2);
writeln(‘————————————————————–’);
END.
Exemplo Calculadora com procedure e function
{[pascal] Outra calculadora com uso de funções}
Program CALCULADORA;
uses crt;
var
OPCAO: char;
X, A, B: real;
PROCEDURE ENTRADA;
begin
gotoxy(05,06); write('Entre com um valor para A: '); readln(A);
gotoxy(05,07); write('Entre com um valor para B: '); readln(B);
end;
{**** Funcao para realizar a escolha do calculo que será realizado ****}
function CALCULO (R, T: REAL; OPERADOR: char):real;
begin
Case OPERADOR of
'+' : CALCULO :=R+T;
'-' : CALCULO :=R-T;
'*' : CALCULO :=R*T;
'/' : CALCULO :=R/T;
END;
end;
{**** Procedimento para mostrar o resultado do calculo ****}
Procedure SAIDA;
VAR
TECLA: char;
begin
gotoxy(05,10); write('O resultado equivale a ', X:5:2);
gotoxy(25,24); writeln('Tecle algo para voltar ao menu');
TECLA:= readkey;
end;
{Procedimento para realizar o calculo da Adicao entre o
valores armazenados nas variáveis globais A e B ***}
procedure ROT_ADICAO;
begin
clrscr;
gotoxy(32,01); write('Rotina de Adicao');
ENTRADA;
x:= Calculo(A, B, '+');
SAIDA;
end;
{Procedimento para realizar o calculo da Subtracao entre o valores
armazenados nas variáveis globais A e B ***}
procedure ROT_SUBTRACAO;
begin
clrscr;
gotoxy(30, 1); write('Rotina de Subtração');
ENTRADA;
x:= Calculo(A, B, '-');
SAIDA;
end;
{Procedimento para realizar o calculo da Multiplicacao entre o valores
armazenados nas variáveis globais A e B ***}
procedure ROT_MULTIPLICACAO;
begin
clrscr;
gotoxy(28,01); write('Rotina de Subtração');
ENTRADA;
x:= Calculo(A, B, '*');
SAIDA;
end;
{Procedimento para realizar o calculo da Divisao entre o valores
armazenados nas variáveis globais A e B}
procedure ROT_DIVISAO;
begin
clrscr;
gotoxy(32, 1); write('Rotina de Subtração');
ENTRADA;
x:= Calculo(A, B, '/');
SAIDA;
end;
{**** P R I N C I P A L ****}
BEGIN
OPCAO:='0';
while (OPCAO '5') do begin
begin
clrscr;
gotoxy(33,01); write('Menu principal');
gotoxy(28,06); write('1.....................Soma');
gotoxy(28,08); write('2............Subtracao');
gotoxy(28,10); write('3......Multiplicacao');
gotoxy(28,12); write('4................Divisao');
gotoxy(28,14); write('5..Fim do programa');
gotoxy(28,18); write('Escolha uma opcao ..........: ');
readln(OPCAO);
IF (OPCAO < '5') THEN
case OPCAO OF
'1': ROT_ADICAO;
'2': ROT_SUBTRACAO;
'3': ROT_MULTIPLICACAO;
'4': ROT_DIVISAO;
ELSE
gotoxy(27,25); writeln('Opcao invalida - tecle algo');
OPCAO := readkey;
end;
end;
END.
Exemolo de Sub-Rotina - Calculadora feito com procedure
{Procedures – Exemplo de subrotina – Calculadora Esse exemplo faz uma calculadora
simples usando um procedimento para cada operação.
Também faz uso do Case, uma alternativas a if (s) aninhados.}
Program CALCULADORA;
uses CRT;
var
opcao: char;
{*** Sub-rotinas de calculos - Adição *** }
Procedure rot_adicao;
var
x, a, b: real;
Begin
clrscr;
gotoxy(32,01); write('Rotina de adição');
gotoxy(05,06); write('Entre um valor para A: '); readln(a);
gotoxy(05,07); write('Entre um valor para b: '); readln(b);
x:=a+b;
gotoxy(5,10); write('O resultado equivale a: ', x:6:2);
gotoxy(25,24); writeln('Pressione para voltar para o menu ');
readln;
end;
{----------------------------------------------------------------------------}
{*** Sub-rotinas de calculos - Subtração ***}
Procedure rot_subtracao;
var
x, a, b: real;
Begin
clrscr;
gotoxy(32,01); write('Rotina de adição');
gotoxy(05,06); write('Entre um valor para A: '); readln(a);
gotoxy(05,07); write('Entre um valor para b: '); readln(b);
x:=a-b;
gotoxy(05,10); write('O resultado equivale a: ', x:6:2);
gotoxy(25,24); writeln('Pressione para voltar para o menu ');
readln;
end;
{-----------------------------------------------------------------------------}
{*** Sub-rotinas de calculos - Multiplicação***}
Procedure rot_multiplicacao;
var
x, a, b: real;
Begin
clrscr;
gotoxy(32, 1); write('Rotina de adição');
gotoxy(5, 6); write('Entre um valor para A: '); readln(a);
gotoxy(5, 7); write('Entre um valor para b: '); readln(b);
x:=a*b;
gotoxy(5,10); write('O resultado equivale a: ', x:6:2);
gotoxy(25,24); writeln('Pressione para voltar para o menu ');
readln;
end;
{-----------------------------------------------------------------------------}
{*** Sub-rotinas dee calculos - Divisão ***}
Procedure rot_divisao;
var
x, a, b: real;
Begin
clrscr;
gotoxy(32,01); write('Rotina de adição');
gotoxy(05,06); write('Entre um valor para A: '); readln(a);
gotoxy(05,07); write('Entre um valor para b: '); readln(b);
x:=a/b;
gotoxy(05,10); write('O resultado equivale a: ', x:6:2);
gotoxy(25,24); writeln('Pressione para voltar para o menu ');
readln;
end;
{-----------------------------------------------------------------------------}
BEGIN { PROGRAMA PRINCIPAL}
textColor(yellow + blink); { altero a cor da fonte }
textBackground(BLUE); { altero a cor do plano de fundo }
clrscr;
opcao:='0';
while (opcao < '5') do
Begin
clrscr;
gotoxy(33,01); write('Menu principal');
gotoxy(22,06); write('1 Soma');
gotoxy(22,08); write('2 Subtracao');
gotoxy(22,10); write('3 Multiplicacao');
gotoxy(22,12); write('4 Divisao');
gotoxy(22,14); write('5 Fim de programa');
gotoxy(22,18); write(' Escolha uma opcao ......: ');
readln(opcao);
Case opcao of
'1': rot_adicao;
'2': rot_subtracao;
'3': rot_multiplicacao;
'4': rot_divisao
Else
Writeln('Byeee');
end;
end;
END.
sábado, 1 de setembro de 2012
Exercício de Vetor - Nomes
program lista_nome;
uses crt;
var
nome : array [1..10] of string;
i : integer;
begin
clrscr;
writeln ('Listagem de nomes');
writeln ('-------- -- -----');
writeln;
{ --- Entrada dos dados --- }
for i:= 1 to 10 do
begin
write ('Digite o ',i:2,'§. nome: '); readln(nome[i]);
end;
writeln;
{ --- Apresentacao dos nomes --- }
for i:= 1 to 10 do
writeln ('Nome: ',i,'§. ---> ',nome[i]);
writeln;
writeln ('Tecle <ENTER> para encerrar: '); readln;
end.
Exercícios - Vetor de 10 posições do tipo Inteiro
{ Crie um algoritmo que preencha um vetor de 10 posicoes de elementos inteiros.
Calcule e mostre:
a) os elementos pares;
b) a soma dos elementos de indice impar;
c) a media dos elementos;
d) a quantidade de elementos iguais a 30;
e) a quantidade de elementos maiores que a media
f) os elementos do vetor ordenado (crescente)
g) uma pesquisa sequencial de um elemento da lista, iniciando a posicao onde se encontra. }
program vetor_10_posicoes;
uses crt;
var
x : array[1..10] of integer;
i,j,aux,elem_par,soma_eleind_impar,quant_30,quant_elem_mmedia,num_pesq : integer;
soma,media_elementos : real;
resp : char;
achou : boolean;
begin
soma:=0;
clrscr;
{**** CADASTRAMENTO DOS ELEMENTOS DE UM VETOR DE 10 POSICOES ****}
writeln ('Cadastramento dos elementos em um vetor de 10 elementos: ');
writeln;
write ('Digite os elementos deste vetor: ');
for i:= 1 to 10 do
begin
write (' '); readln (x[i]);
soma:= soma + x[i]; {esta variável sera utilizada para calcular a media dos elementos da tabele (item c) }
end;
{**** c) a media dos elementos; ****}
media_elementos:=soma/10;
clrscr;
{**** LISTAGEM DOS ELEMENTOS DE UM VETOR DE 10 POSICOES ****}
writeln ('Elementos em um vetor de 10 elementos: ');
writeln;
writeln ('Elementos deste vetor: ');
for i:= 1 to 10 do
write (' ',x[i]);
{**** Solucao dos itens de "a" ate a letra "g" ****}
elem_par:= 0;
soma_eleind_impar:=0;
quant_30:= 0;
quant_elem_mmedia:=0;
for i:= 1 to 10 do
begin
{**** a) os elementos pares; ****}
if (x[i] mod 2 = 0) then
elem_par:= elem_par + 1;
{**** b) a soma dos elementos de indice impar; ****}
if (i mod 2 <> 0) then
soma_eleind_impar:=soma_eleind_impar + x[i];
{**** d) a quantidade de elementos iguais a 30; ****}
if x[i] = 30 then
quant_30:= quant_30 + 1;
{**** e) a quantidade de elementos maiores que a media ****}
if x[i] > media_elementos then
quant_elem_mmedia:= quant_elem_mmedia + 1;
end;
writeln;
writeln;
{**** Apresentacao do resultado obtido nas questoes : "a,b,d,e" ****}
writeln ('a) os elementos pares : ',elem_par);
writeln ('b) a soma dos elementos de indice impar : ',soma_eleind_impar);
writeln ('c) a media dos elementos : ',media_elementos);
writeln ('d) a quantidade de elementos iguais a 30 : ',quant_30);
writeln ('e) a quantidade de elementos maiores que a media: ',quant_elem_mmedia);
writeln;
writeln;
{**** f) os elementos do vetor ordenado (crescente) ****}
{**** rotina de troca dos elementos ****}
for i:= 1 to 9 do
for j:= i+1 to 10 do
begin
if x[i] > x[j] then
begin
aux:=x[i];
x[i]:=x[j];
x[j]:=aux;
end;
end;
writeln;
writeln;
{*** rotina para listar os elementos da matriz ordenado (crescente) ****}
writeln ('Listagem dos elementos ordenados (crescente): ');
write ('Elementos: ');
for i:= 1 to 10 do
write (' ',x[i],' ');
{*** g) uma pesquisa sequencial de um elemento da lista, iniciando a posicao onde se encontra. ***}
resp:= 'S';
while (resp = 'S') or (resp = 's') do
begin
{*** ROTINA DE PESQUISA ***}
writeln;
write ('Entre com o numero a ser pesquisado: '); readln (num_pesq);
i:=1;
achou:= false;
while (i<=10) and (achou = false) do
begin
if (num_pesq = x[i]) then
achou := true
else
i:= i+1;
if (achou = true) then
writeln (num_pesq,' foi localizado na posicao ',i)
else
writeln (num_pesq,' não foi localizado');
end;
end;
{*** FIM DA ROTINA DE PESQUISA ***}
writeln;
write ('Tecle <ENTER> para continuar ');
readln;
end.
Assinar:
Postagens (Atom)