sábado, 1 de setembro de 2012

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.

Nenhum comentário:

Postar um comentário