Vetores e 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.

 

 

 

 

 

Ler as notas de 30 alunos.Calcular e informar a média da turma.

 

Program MediaTurma;

var Nota : real;  { nota de um aluno }

       Media, Soma: real;

       Aluno: integer; { variável de controlo da repetição }

begin

  Soma := 0; { inicializa a soma das notas }

  for Aluno := 1 to 30 do { para cada aluno da turma }

        begin

           readln(Nota); { obtém a nota do aluno }

        Soma := Soma + Nota

        end;

   Media := Soma / 30;

   writeln(‘Media da turma: ’, Media:5:1);

end.

 

a) Escreva um programa que mostra no ecrã os múltiplos de 5 entre 1 e 100.

a.1. Com recurso ao ciclo while

a.2.com recurso ao ciclo for

 

b) Escreva um programa que pede um número, se o utilizador digitar um número  inferior a 100 o programa deve solicitar o número novamente.

b.1. Com recurso ao ciclo repeat

b.2.com recurso ao ciclo while

 

 

 

1.  Compila, traduz e explica o programa

 

PROGRAM EJER55;

        USES CRT;

 

        VAR sns:REAL; {salario neto semanal}

        VAR h_trabajadas, h_extra:REAL;

        VAR precio_h, precio_h_extra:REAL;

        VAR total:REAL;

        VAR impuestos0,impuestos25,impuestos45:REAL;

        {Impuestos con cada % correspondiente}

BEGIN

     ClrScr;

 

     WRITELN ('INTRODUZCA LOS DATOS PARA CALCULAR EL SALARIO  NETO SEMANAL');

     WRITELN ('');

     WRITE ('Las horas trabajadas semanales son 35, las demas  debe ');

     WRITELN ('considerarlas como horas extra. Escriba en  dolares.');

     WRITELN ('');

     WRITE ('Horas trabajadas: ');     READLN (h_trabajadas);

     WRITE ('Horas extra: ');          READLN (h_extra);

     WRITE ('Precio por cada hora: '); READLN (precio_h);

     WRITELN ('');

 

     precio_h_extra:=precio_h * 1.5;

     sns:=(h_trabajadas * precio_h) + (h_extra * precio_h_extra);

 

     impuestos0:=0;

     impuestos25:=sns - ((sns - 50) * 0.25);

     impuestos45:=sns - ((sns - 90) * 0.45);

 

     IF sns <= 50 THEN

     WRITELN ('El salario neto semanal es: ',sns:5:2)

     ELSE IF sns < 90 THEN

     WRITELN ('El salario neto semanal es: ',impuestos25:5:2)

     ELSE IF sns > 90 THEN

     WRITELN ('El salario neto semanal es: ',impuestos45:5:2);

     readln;

END.

2.  Compila, traduz e explica o programa

1.  scribir un programa en Pascal que sume dos cadenas. (los datos vienen en

2.  el cuerpo del ejercicio).

3.   

4.  PROGRAM EJER60;

5.          USES CRT;

6.   

7.          VAR tit_pel1:STRING;

8.          VAR tit_pel2:STRING;

9.          VAR tit_pel3:STRING;

10. BEGIN

11.      tit_pel1:='Alien';

12.      tit_pel2:='Blade ';

13.      tit_pel3:='Runner';

14.  

15.      ClrScr;

16.  

17.      WRITELN ('TITULOS DE PELICULAS');

18.  

19.      WRITELN (tit_pel1);

20.      WRITELN (tit_pel2 + tit_pel3);

21.  

22. END.

 

 

Program exC ;

  var arr:array[1..10] of integer;

    i:integer;

BEGIN

  for i:=1 to 10   do

   begin

     arr[i]:=i;

     writeln('pos  ', arr[i]);

end;

  readln;

END.

 

Programa tabuada do 2

 

Program exC ;

  var arr:array[1..10] of integer;

    i:integer;

BEGIN

  for i:=1 to 10   do

   begin

     arr[i]:=i*2;

     writeln('pos  ', arr[i]);

end;

  readln;

END.  

 

 

 

 

 

Explica o funcionamento do programa

 

Program exC ;

  var arr:array[1..10] of integer;

    i:integer;

BEGIN

  for i:=1 to 10   do

   readln(arr[i]);

   begin

       for i:=1 to 10   do

     writeln('valor da pos  ',i,'   ' ,arr[i]);

end;

  readln;

END. 

 

 

 

Escreva um programa em Pascal para preencher uma matriz de números
inteiros entre 4 e 14.

1.  PROGRAM EJER81;

2.          USES CRT;

3.          VAR arr_num:ARRAY [4..14] of INTEGER;

4.          VAR i:INTEGER;

5.  BEGIN

6.       ClrScr;

7.   

8.       FOR i:=4 TO 14 DO

9.           arr_num[i]:=i;

10.  

11.      FOR i:=4 TO 14 DO

12.      BEGIN

13.           WRITELN('Numero: ',arr_num[i]);

14.      END;

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, determine a posição da matriz onde está localizado o maior valor.

 

PROGRAM EJER88;

        USES CRT;

        CONST arr_num:ARRAY [1..7] of INTEGER=(23,45,68,99,10,15,4);

        VAR i:INTEGER;

BEGIN

     ClrScr;

 

     FOR i:=1 TO 7 DO

     BEGIN

 

     IF arr_num[i]=99 THEN

        WRITE ('Aposicao do maior num  (',arr_num[i],') e: ',i);

     END;

     readln;

END.

 ENVIAR AO PROFESSOR (PROFCARLOS2006@gmail.com)

 

 

 

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.  

 

 ENVIAR AO PROFESSOR (PROFCARLOS2006@gmail.com)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.  PROGRAM EJER46;

2.          USES CRT;

3.   

4.          VAR num:INTEGER;

5.  BEGIN

6.       num:= 5;

7.   

8.       ClrScr;

9.   

10.      WHILE num <= 100 DO

11.      BEGIN

12.           WRITELN (num);

13.           num:= num + 5;

14.      END;

15. END.

16.  

17.  

18. PROGRAM EJER46;

19.         USES CRT;

20.         VAR sem:INTEGER;

21. BEGIN

22.      ClrScr;

23.  

24.      FOR sem:= 1 TO 100 DO

25.      BEGIN

26.           IF sem mod 5=0 THEN

27.              WRITELN(sem);

28.      END;

END.

 

 

  1. PROGRAM EJER52;
  2.         USES CRT;
  3.  
  4.         VAR num:INTEGER;
  5. BEGIN
  6. {Este programa no finaliza hasta que se escribe un numero mayor a 100}
  7.  
  8.      ClrScr;
  9.  
  10.      REPEAT
  11.            WRITELN ('Introduzca un numero: ');
  12.            READLN (num);
  13.      UNTIL num > 100;
  14. END.
  15.  
  16.  
  17. PROGRAM EJER52;
  18.         USES CRT;
  19.         VAR num:INTEGER;
  20. BEGIN
  21.      ClrScr;
  22.  
  23.      WRITE('Introduzca un numero -> '); READLN(num);
  24.  
  25.      WHILE num<=100 DO
  26.      BEGIN
  27.           WRITE('Introduzca un numero -> '); READLN(num);
  28.      END;
  29. END.

 

 

 

 

 

matriz

1)

program ex1;

var

   newvet:array[1..6] of integer;

   vet:array[1..6] of integer;

   pos:integer;

Begin

     writeln('Digite os valores');

     for pos:=1 to 6 do

         readln(vet[pos]);

     for pos:=1 to 6 do

         begin

              newvet[pos]:=vet[pos]*pos;

              writeln('Na posicao ',pos,'teremos ',newvet[pos]);

          end;

     readln;

     end.

 

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

program ex4;

var

   vet: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(vet[posl,posc]);

     for posl:=1 to 4 do

         for posc:=1 to 4 do

             if (vet[posl,posc] mod 2 =0) then

             writeln('dsd ', vet[posl,posc] );

 

               readln;

end.  

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

if (posl  mod 2 =0) then  

 

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

if (posc  mod 2 =0) then

 

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

if (posc  mod 2 =0)and (posl  mod 2 =0)  then

 

 

2)

program ex2;

var

   vet:array[1..4] of integer;

   pos:integer;

Begin

     writeln('Digite os valores');

     for pos:=1 to 4 do

         readln(vet[pos]);

     writeln('Ordem inversa:');

     for pos:=4 downto 1 do

         writeln(vet[pos]);

end.

program ex3;

var

   vet: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(vet[posl,posc]);

    begin

     writeln('linha 1 coluna 1 ',vet[1,1]);

     writeln('linha 2 coluna 2 ',vet[2,2]);

     writeln('linha 3 coluna 3 ',vet[3,3]  );

     writeln('linha 4 coluna 4 ',vet[4,4]    );

     readln;

    end;

end.