Aula 17

Matrizes

 

Vetores e Matrizes

 

 

 

 

VETOR
Sintaxe:

<nome array>: array [dimensão] of <tipo>;

Declaração e exemplo:

Var
    vet:array[1..6] of integer;
Begin
    vet[2]:=90;
    vet[4]:=45;
    vet[5]:=30;
end.

Representação:
 

 

90

 

45

30

MATRIZ
Sintaxe:

<nome array>: array [dimensões] of <tipo>;

Declaração e exemplo:

Var
    mat:array[1..5,1..3] of integer; {matriz 19x3}
Begin
    mat[1,2]:=10;
    mat[3,1]:=11;
    mat[5,3]:=12;
    mat[2,2]:=78;
end.

Representação:

mat[linha,coluna]

 

10

 

 

78

 

11

 

 

 

 

 

 

 

12

 

Exemplo : Inclusão de 5 valores inteiros num vetor, e depois disto emitir a soma dos mesmos.

 

program vet_soma;

var

   v: array [1..5] of integer;

   soma,cont:integer;

Begin

     soma:=0;

     writeln('digite os 5 valores');

     for cont:=1 to 5 do

         readln(v[cont]);

     for cont:=1 to 5 do

         soma:=soma + v[cont];

     writeln('Soma=',soma);

end.

Exemplo: Ler 6 valores em uma matriz de 2 linhas e 3 colunas e depois disto emitir a soma dos valores.

program matriz;

var

   m:array[1..2,1..3] of integer;

   soma,contl,contc:integer;

Begin

     writeln('Digite os 6 valores');

     soma:=0;

     for contl:=1 to 2 do

         for contc:=1 to 3 do

             readln(m[contl,contc]);

     for contl:=1 to 2 do

         for contc:=1 to 3 do

             soma:=soma + m[contl,contc];

     writeln('Soma=',soma);

end.

 

 

 

 

 

B) Fazer um programa que lê 16 valores e os armazene numa matriz. O programa deve mostrar esses números em ordem, levando primeiro em consideração a coluna e depois a linha. Logo, deve-se mostrar primeiro toda a primeira coluna e depois a segunda coluna. O programa não deve exibir os números que estão na diagonal principal da matriz.

B)
program exB;
var
   mat:array[1..4,1..4] of integer;
   posl,posc:integer;
Begin
     writeln('Digite os valores');
     for posl:=1 to 4 do
         for posc:=1 to 4 do
             readln(mat[posl,posc]);
     for posc:=1 to 4 do
         for posl:=1 to 4 do
             if posl<>posc
                then writeln(mat[posl,posc]);
end. 

1) Fazer um programa que tem dois vetores do mesmo tamanho (6). O utilizador fornecerá os dados do primeiro, e depois deverá ser armazenado e exibido o valor do segundo vetor que é o valor do primeiro vetor vezes a posição do elemento. Por exemplo:
vet1:

80

28

35

44

35

16

vet2:

80x1

28x2

35x3

44x4

35x5

16x6

 
2) Leia 4 números, coloque-os num vetor e mostre-os na ordem inversa de sua leitura.


3) Fazer um programa que lê 16 valores e os armazene numa matriz. O programa deve mostrar os valores que estão na diagonal a amarelo.

       Resultado 1  6  11  16

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

3.1. Reformula o programa para que também indique a posição na tabela/matriz

        Resultado Linha 1 coluna 1 = 1

                  Linha 2 coluna 2 = 6

4 . Leia 20 números, deposite-os numa matriz e mostre os números pares lidos.

4.1. Leia 20 números, deposite-os numa matriz e mostre os números das linhas pares.

4.2. Leia 20 números, deposite-os numa matriz e mostre os números das colunas pares.

4.3. Leia 20 números, deposite-os numa matriz e mostre os números das linhas e colunas pares.

 

 

 

Escreva um programa em Pascal para preencher uma matriz de números pares entre 1 e 10.

  1. PROGRAM EJER82;
  2.         USES CRT;
  3.         VAR arr_num:ARRAY [1..10] of INTEGER;
  4.         VAR i, b:INTEGER;
  5. BEGIN
  6.      ClrScr;
  7.      i:=1;
  8.  
  9.      WHILE i <= 10 DO
  10.      BEGIN
  11.           arr_num[i]:=i;
  12.  
  13.           IF (i mod 2)=0 THEN
  14.           BEGIN
  15.              WRITELN(arr_num[i]);
  16.           END;
  17.  
  18.           i:= i + 1;
  19.      END;
  20. END.

 

Escreva um programa em Pascal para preencher uma matriz de vinte primeiros números pares e calcular a sua soma

  1. PROGRAM EJER86;
  2.         USES CRT;
  3.         VAR arr_pares:ARRAY [1..40] of INTEGER;
  4.         VAR i, suma:INTEGER;
  5. BEGIN
  6.      ClrScr;
  7.  
  8.      i:=1;
  9.  
  10.      FOR i:= 1 TO 40 DO
  11.      BEGIN
  12.           IF (i mod 2) = 0 THEN
  13.           BEGIN
  14.                arr_pares[i]:=i;
  15.                suma:= suma + i;
  16.           END;
  17.      END;
  18.  
  19.      WRITELN('La suma de los 20 primeros numeros pares es: ',suma);

END.

 

 

Escreva um programa em Pascal solicitando cinco números, os armazenados em uma matriz e , em seguida, calcular a média aritmética desses números .

  1. PROGRAM EJER87;
  2.         USES CRT;
  3.         VAR arr_num:ARRAY [1..5] of REAL;
  4.         VAR i, num:INTEGER;
  5.         VAR media:REAL;
  6. BEGIN
  7.      ClrScr;
  8.  
  9.      WRITELN ('Escriba 5 numeros para hacer su media aritmetica: ');
  10.  
  11.      FOR i := 1 TO 5 DO
  12.      BEGIN
  13.          READLN(num);
  14.          arr_num[i]:=num;
  15.      END;
  16.  
  17.      FOR i:=1 TO 5 DO
  18.      media:= media + arr_num[i];
  19.  
  20.      media:= media / i;
  21.  
  22.      WRITELN ('La media aritmetica es: ',media:5:2);

END.

 Escreva um programa em Pascal que, após a atribuição de números, 23 , 45 , 68 , 99 , 10 , 15 e 4 para uma matriz , determinar a posição da matriz

  1. 3. em que é o valor máximo
  2. PROGRAM EJER88;
  3.         USES CRT;
  4.         CONST arr_num:ARRAY [1..7] of INTEGER=(23,45,68,99,10,15,4);
  5.         VAR i:INTEGER;
  6. BEGIN
  7.      ClrScr;
  8.  
  9.      FOR i:=1 TO 7 DO
  10.      BEGIN
  11.  
  12.      IF arr_num[i]=99 THEN
  13.         WRITE ('La posicion del mayor numero (',arr_num[i],') es:
  14.   ',i);
  15.      END;
  16. END.

 

 

 Escreva um programa em Pascal que, após a atribuição de números , -2 , 5 , 8 , -9 , 10 , 15 e para uma matriz -4 independentemente calcular a soma

  1. 3. elementos positivos e negativos .
  2. PROGRAM EJER89;
  3.         USES CRT;
  4.         CONST arr_num:ARRAY [1..7] of INTEGER=(-2,5,8,-9,10,15,-4);
  5.         VAR i:INTEGER;
  6.         VAR suma_p, suma_i:INTEGER;
  7. BEGIN
  8.      ClrScr;
  9.  
  10.      FOR i:=1 TO 7 DO
  11.      BEGIN
  12.           IF arr_num[i] >= 0 THEN
  13.              suma_p:= suma_p + arr_num[i]
  14.           ELSE IF arr_num[i] < 0 THEN
  15.              suma_i:= suma_i + arr_num[i];
  16.      END;
  17.  
  18.      WRITELN ('La suma de los numeros pares es:    ',suma_p);
  19.      WRITELN ('La suma de los numeros impares es: ',suma_i);

END.

 

 Escreva um programa em Pascal que, após a atribuição de números , 23 , 45 , 68 , 99 , 10 , 15 e 4 para uma matriz , determinar as posições da matriz  em que são o valor máximo e mínimo .

  1. PROGRAM EJER90;
  2.         USES CRT;
  3.         CONST arr: ARRAY [1..7] of INTEGER=(23,45,68,99,10,15,4);
  4.         VAR i, mayor, menor,posi_mayor,posi_menor:INTEGER;
  5. BEGIN
  6.      ClrScr;
  7.  
  8.      mayor:= arr[1];
  9.      menor:= arr[1];
  10.  
  11.      FOR i:=2 TO 7 DO
  12.      BEGIN
  13.           IF arr[i] >= mayor THEN
  14.           BEGIN
  15.               mayor:= arr[i];
  16.               posi_mayor:=i;
  17.           END
  18.           ELSE
  19.               CONTINUE;
  20.      END;
  21.  
  22.      WRITELN ('El numero mayor es: ',mayor:3);
  23.      WRITELN ('Su posicion es:     ',posi_mayor:3);
  24.      WRITELN ('');
  25.  
  26.      FOR i:=2 TO 7 DO
  27.      BEGIN
  28.           IF arr[i] <= menor THEN
  29.           BEGIN
  30.               menor:= arr[i];
  31.               posi_menor:=i;
  32.           END
  33.           ELSE
  34.               CONTINUE;
  35.      END;
  36.  
  37.      WRITELN ('El numero menor es: ',menor:3);
  38.      WRITELN ('Su posicion es:     ',posi_menor:3);
  39. END.
  40.  

 

 

program limitearray;
uses crt;
const
     max=1000000; {Creio que seja o suficiente não?}
var
   i,j,limarray:integer;
   palavras:array [1..max, 1..max] of string;
   sair:char;
begin
  clrscr;
  write('Vamos guardar a sua matriz quadrada. Qual a ordem dela? ');
  readln(limarray);
  for i:=1 to limarray do
    begin
      for j := 1 to limarray do
      begin
           write('Digite o número na linha ',i,', coluna ',j,' da matriz: ');
           readln(palavras[i, j]);
           end;
    end;
  CLRSCR;
  writeln('Vamos começar a listar elementos de sua matriz.');
  for i:=1 to limarray do
  begin
       for j:=1 to limarray do
       begin
            write('Elemento na linha ',i,', coluna ',j,' --> ');
            writeln(palavras[i, j]); {Imprimir oq tu computou}
       end;
  end;
write('Presssione ENTER para sair.');
read(sair);
End.

 

 ENVIAR AO PROFESSOR (PROFCARLOS2006@gmail.com)