Está en la página 1de 9

Curso: EC110 Computación

Práctica de Laboratorio 5

Objetivo:

Reforzar los conocimientos teóricos y poner práctica mediante programas sobre el uso de tipos de
datos estructurados llamados arreglos (Arrays).

1. Escribir un programa en Pascal que rellene un array con los números enteros entre 4
y 14.

2. Escribir un programa en Pascal que rellene un array de 10 elementos con los números entre
23 y 32 y copie en otro array esos números multiplicados por 0.35.

3. Escribir un programa en Pascal que solicite cinco números, los almacene en un array y
luego calcule la media aritmética de esos números.

4. Escribir un programa en Pascal que tras asignar los números, 23, 45, 68, 99, 10, 15 y 4 a un
array, determine la posición del array en la que se encuentra el máximo valor.

6. Escribir un programa en Pascal que tras asignar los números, -2, 5, 8, -9, 10, 15 y .4 a un
array calcule, independientemente, la suma de los elementos positivos y negativos.

7. Escribir un programa en Pascal que determine la posición de la siguiente matriz en la que se


encuentra el valor máximo.

23 45 68
34 99 12
25 78 89

8. Escribir un programa en Pascal que sume, independientemente, los elementos positivos y


negativos de la siguiente matriz:

-12 23 32
45 -56 -10
25 78 89

9. Escribir un programa en Pascal que multiplique por dos los elementos de la siguiente
matriz:

47 8
6 9 1
5 0 3

10. Escribir un programa en Pascal que almacene en la segunda fila de la siguiente matriz los
cuadrados de los datos de la primera fila:
36 78 9
00 00 0

11. Escribir un programa en Pascal que sume los datos de cada una de las filas de la
siguiente matriz; el resultado se almacenará en la última posición de cada fila:

36 78 90
14 32 70

12. Escribir un programa en Pascal que sume los datos de cada una de las columnas de la
siguiente matriz; el resultado se almacenará en la última posición de cada columna:

32
46
59
60
70

13. Escribir un programa en Pascal que divida todos los elementos de una matriz M (3,4) por el
elemento situado en la posición 2,2.

14 .Escribir un programa en Pascal que genera la matriz transpuesta de una matriz de 3 filas y 4
columnas. La matriz transpuesta de una matriz M(m,n) se obtiene intercambiando filas por
columnas y viceversa; el resultado se tiene que almacenar en una nueva matriz
M_TRANS(n,m).

15. Escribir un programa en Pascal que sume dos matrices bidimensionales. Las matrices para
que puedan sumarse deben tener las mismas dimensiones.
Curso: EC110 Computación

Práctica de Laboratorio 5
Solucionario:

Objetivo:

Reforzar los conocimientos teóricos y poner práctica mediante programas sobre el uso de tipos de
datos arreglos (Arrays).

1. Escribir un programa en Pascal que rellene un array con los números enteros entre 4 y 14.
PROGRAM EJER81; VAR arr_num:ARRAY[1..11] of INTEGER;
USES CRT; VAR i,num:INTEGER;
VAR arr_num:ARRAY [4..14] of INTEGER; BEGIN
VAR i:INTEGER; ClrScr;
BEGIN num:=4;
ClrScr; FOR i:=1 TO 11 DO
FOR i:=4 TO 14 DO BEGIN
arr_num[i]:=i; arr_num[i]:=num;
FOR i:=4 TO 14 DO num:=num+1;
BEGIN END;
WRITELN('Numero: ',arr_num[i]); FOR i:=1 TO 11 DO
END; BEGIN
END. WRITE('Posición ',i:2, ': ');
WRITELN(arr_num[i]:5);
PROGRAM EJER81; END;
USES CRT; END.

2. Escribir un programa en Pascal que rellene un array de 10 elementos con los números entre 23 y 32 y
copie en otro array esos números multiplicados por 0.35.

PROGRAM EJER85; BEGIN


USES CRT; ClrScr;
VAR arr_num1, arr_num2:ARRAY [23..32] of i:=1;
REAL; num:=23;
VAR i:INTEGER; FOR i:=1 TO 10 DO
BEGIN BEGIN
ClrScr; arr_num1[i]:=num;
FOR i:=23 TO 32 DO num:=num+1;
BEGIN END;
arr_num1[i]:=i; FOR i:=1 TO 10 DO
arr_num2[i]:=(arr_num1[i] * 0.35); arr_num2[i]:=arr_num1[i]*0.35;
END; i:=1;
FOR i:=23 TO 32 DO WRITELN('ARRAY 1 ARRAY 2':30);
WRITELN(arr_num2[i]:5:2); WHILE i <= 10 DO
END. BEGIN
WRITE('Posicion ',i:2, ': ');
PROGRAM EJER85; WRITE(arr_num1[i]:5:2);
USES CRT; WRITELN(arr_num2[i]:10:2);
VAR arr_num1,arr_num2:ARRAY[1..10] of i:=i+1;
REAL; END;
VAR i,num:INTEGER; END.

3. Escribir un programa en Pascal que solicite cinco números, los almacene en un array y luego calcule la
media aritmética de esos números.

PROGRAM EJER87; VAR arr_num:ARRAY [1..5] of REAL;


USES CRT; VAR i, num:INTEGER;
VAR media:REAL; USES CRT;
BEGIN VAR arr_num:ARRAY[1..10] of REAL;
ClrScr; VAR num,suma,media:REAL;
WRITELN ('Escriba 5 numeros para hacer su VAR i:INTEGER;
media aritmetica: '); BEGIN
FOR i := 1 TO 5 DO ClrScr;
BEGIN i:=0;
READLN(num); suma:=0;
arr_num[i]:=num; media:=0;
END; WHILE i<5 DO
FOR i:=1 TO 5 DO BEGIN
media:= media + arr_num[i]; WRITE('Numero ',i+1,'--->'); READLN(num);
media:= media / i; arr_num[i]:=num;
WRITELN ('La media aritmetica es: suma:=suma+num;
',media:5:2); i:=i+1;
END. END;
media:=(suma/i);
PROGRAM EJER87; WRITE('Media: ', media:5:2);
END.

4. Escribir un programa en Pascal que tras asignar los números, 23, 45, 68, 99, 10, 15 y 4 a un array,
determine la posición del array en la que se encuentra el máximo valor.

PROGRAM EJER88; USES CRT;


USES CRT; CONST arr_num:ARRAY[1..7] of
CONST arr_num:ARRAY [1..7] of INTEGER=(23,45,68,99,10,15,4);
INTEGER=(23,45,68,99,10,15,4); VAR i,posi_max,val_max:INTEGER;
VAR i:INTEGER; BEGIN
BEGIN ClrScr;
ClrScr; FOR i:=1 TO 7 DO
FOR i:=1 TO 7 DO BEGIN
BEGIN IF arr_num[i] > val_max THEN
IF arr_num[i]=99 THEN BEGIN
WRITE ('La posicion del mayor numero val_max:=arr_num[i];
(',arr_num[i],') es: ',i); posi_max:=i;
END; END;
END. END;
WRITE('VALOR MAXIMO: ', val_max, '
PROGRAM EJER88; POSICION: ', posi_max);
END.

6. Escribir un programa en Pascal que tras asignar los números, -2, 5, 8, -9, 10, 15 y .4 a un array calcule,
independientemente, la suma de los elementos positivos y negativos.

PROGRAM EJER89; END.


USES CRT;
CONST arr_num:ARRAY [1..7] of INTEGER=(- PROGRAM EJER89;
2,5,8,-9,10,15,-4); USES CRT;
VAR i:INTEGER; CONST arr_num:ARRAY[1..7] of INTEGER=(-
VAR suma_p, suma_n:INTEGER; 2,5,8,-9,10,15,-4);
BEGIN VAR i,suma_pos,suma_neg:INTEGER;
ClrScr; BEGIN
FOR i:=1 TO 7 DO ClrScr;
BEGIN FOR i:=1 TO 7 DO
IF arr_num[i] >= 0 THEN BEGIN
suma_p:= suma_p + arr_num[i] IF arr_num[i] > 0 THEN
ELSE IF arr_num[i] < 0 THEN suma_pos:=suma_pos+arr_num[i]
suma_n:= suma_n + arr_num[i]; ELSE
END; suma_neg:=suma_neg+arr_num[i];
WRITELN ('La suma de los numeros positivos END;
es: ',suma_p); WRITELN('SUMA POSITIVOS: ', suma_pos);
WRITELN ('La suma de los numeros negativos WRITELN('SUMA NEGATIVOS: ', suma_neg);
es: ',suma_n); END.

7. Escribir un programa en Pascal que determine la posición de la siguiente matriz en la que se encuentra el
valor máximo.
23 45 68
34 99 12
25 78 89
PROGRAM EJER91B;
USES CRT;
CONST arr_num:ARRAY[1..3,1..3] of INTEGER=( (23,45,68),
(34,99,12),
(25,78,89) );
VAR i,j,val_max,pos_max_i,pos_max_j:INTEGER;
BEGIN
ClrScr;
val_max:=arr_num[1,1];
FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 3 DO
BEGIN
IF arr_num[i,j] > val_max THEN
BEGIN
val_max:=arr_num[i,j];
pos_max_i:=i;
pos_max_j:=j;
END;
END;
END;
WRITELN( 'VALOR MAXIMO: ', val_max:3,
' POSICION: ', pos_max_i:3,pos_max_i:3);
END.

8. Escribir un programa en Pascal que sume, independientemente, los elementos positivos y


negativos de la siguiente matriz:

-12 23 32
45 -56 -10
25 78 89
PROGRAM EJER92;
USES CRT;
CONST arr_num:ARRAY[1..3,1..3] of INTEGER=( (-12,23,-32),
(45,-56,-10),
(25,78,89) );
VAR i,j,suma_pos,suma_neg:INTEGER;
BEGIN
suma_pos:=0;
suma_neg:=0;
ClrScr;
FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 3 DO
BEGIN
IF arr_num[i,j] < 0 THEN
suma_neg:=suma_neg+arr_num[i,j]
ELSE
suma_pos:=suma_pos+arr_num[i,j]
END;
END;
WRITELN('SUMA POSITIVOS: ', suma_pos:5);
WRITELN('SUMA NEGATIVOS: ', suma_neg:5);
END.

9. Escribir un programa en Pascal que multiplique por dos los elementos de la siguiente matriz:

47 8
6 9 1
5 0 3
PROGRAM EJER93;
USES CRT;
CONST arr_num:ARRAY[1..3,1..3] of INTEGER=( (4,7,8),
(6,9,1),
(5,0,3) );
VAR i,j:INTEGER;
BEGIN
ClrScr;
FOR i:=1 TO 3 DO
FOR j:=1 TO 3 DO
arr_num[i,j]:=arr_num[i,j]*2;
FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 3 DO
WRITE(arr_num[i,j]:3);
WRITELN (' ');
END;
END.

10. Escribir un programa en Pascal que almacene en la segunda fila de la siguiente matriz los cuadrados de
los datos de la primera fila:

36 78 9
00 00 0
PROGRAM EJER94;
USES CRT; PROGRAM EJER94;
CONST arr_num:ARRAY [1..2,1..5] of USES CRT;
INTEGER=( (3,6,7,8,9), CONST arr_num:ARRAY[1..2,1..5] of
(0,0,0,0,0) ); INTEGER=( (3,6,7,8,9),
VAR i,j,cuad:INTEGER; (0,0,0,0,0) );
BEGIN VAR i,j:INTEGER;
ClrScr; BEGIN
i:=1; ClrScr;
FOR j:=1 TO 5 DO FOR i:=1 TO 1 DO
BEGIN FOR j:=1 TO 5 DO
FOR i:=1 TO 1 DO arr_num[i+1,j]:=sqr(arr_num[i,j]);
BEGIN FOR i:=1 TO 2 DO
cuad:=sqr(arr_num[i,j]); BEGIN
arr_num[2,j]:= cuad; FOR j:=1 TO 5 DO
WRITELN (arr_num[2,j]); WRITE(arr_num[i,j]:3);
END; WRITELN(' ');
END; END;
END. END.

11. Escribir un programa en Pascal que sume los datos de cada una de las filas de la siguiente matriz; el
resultado se almacenará en la última posición de cada fila:

36 78 90
14 32 70
PROGRAM EJER95; BEGIN
USES CRT; FOR j:=1 TO 6 DO
CONST arr_num:ARRAY [1..2,1..6] of BEGIN
INTEGER=( (3,6,9,7,8,0), IF i=1 THEN suma1:= suma1 + arr_num[1,j];
(1,4,3,2,7,0) ); IF i=2 THEN suma2:= suma2 + arr_num[2,j];
VAR i,j,suma1, suma2:INTEGER; END;
BEGIN END;
ClrScr; WRITELN ('La suma de la fila 1 es:
FOR i:=1 TO 2 DO ',suma1);
WRITELN ('La suma de la fila 2 es: BEGIN
',suma2); suma_fila:=0;
END. FOR j:=1 TO 6 DO
suma_fila:=suma_fila+arr_num[i,j];
PROGRAM EJER95; arr_num[i,j]:=suma_fila;
USES CRT; END;
CONST arr_num:ARRAY[1..2,1..6] of FOR i:=1 TO 2 DO
INTEGER=( (3,6,9,7,8,0), BEGIN
(1,4,3,2,7,0) ); FOR j:=1 TO 6 DO
VAR suma_fila,i,j:INTEGER; WRITE(arr_num[i,j]:3);
BEGIN WRITELN(' ');
ClrScr; END;
FOR i:=1 TO 2 DO END.

12. Escribir un programa en Pascal que sume los datos de cada una de las columnas de la siguiente matriz;
el resultado se almacenará en la última posición de cada columna:

32
46
59
60
70
PROGRAM EJER96;
USES CRT;
CONST arr_num:ARRAY [1..4,1..2] of INTEGER=( (3,2),(4,6),
(8,9),(0,0) );
VAR i,j,suma1,suma2:INTEGER;
BEGIN
ClrScr;
FOR j:=1 TO 2 DO
BEGIN
FOR i:=1 TO 4 DO
BEGIN
IF j=1 THEN suma1:= suma1 + arr_num[i,j];
IF j=2 THEN suma2:= suma2 + arr_num[i,j];
END;
END;
WRITELN ('El resultado de la suma 1 es: ',suma1);
WRITELN ('El resultado de la suma 2 es: ',suma2);
END.

13. Escribir un programa en Pascal que divida todos los elementos de una matriz M (3,4) por el elemento
situado en la posición 2,2.

PROGRAM EJER98;
USES CRT; PROGRAM EJER98;
CONST arr_num:ARRAY[1..3,1..4] of USES CRT;
INTEGER=( (23,45,-68,99), CONST matriz_m:ARRAY[1..3,1..4] OF REAL =
(45,65,-76,34), ((2,3,4,12),
(56,-75,34,98) ); (7,9,8,11),
VAR i,j:INTEGER; (5,6,1,19));
VAR divi:REAL; VAR i,j:INTEGER;
BEGIN VAR ele_22:REAL;
ClrScr; BEGIN
FOR i:=1 TO 3 DO ele_22:=matriz_m[2,2];
BEGIN ClrScr;
FOR j:=1 TO 4 DO FOR i:=1 TO 3 DO
BEGIN BEGIN
divi:= arr_num[i,j] / arr_num[2,2]; FOR j:=1 TO 4 DO
WRITE ('Dividido ',arr_num[i,j]:3,' por el WRITE(matriz_m[i,j]:5:2,' ');
numero '); WRITELN(' ');
WRITELN (arr_num[2,2]:3,': ',divi:5:2); END;
END; FOR i:=1 TO 3 DO
END; FOR j:=1 TO 4 DO
END. matriz_m[i,j]:=matriz_m[i,j]/ele_22;
WRITELN(' '); WRITE(matriz_m[i,j]:5:2,' ');
FOR i:=1 TO 3 DO WRITELN(' ');
BEGIN END;
FOR j:=1 TO 4 DO END.

14 .Escribir un programa en Pascal que genera la matriz transpuesta de una matriz de 3 filas y 4 columnas. La
matriz transpuesta de una matriz M(m,n) se obtiene intercambiando filas por columnas y viceversa; el
resultado se tiene que almacenar en una nueva matriz M_TRANS(n,m).

PROGRAM EJERC100; CONST m_orig:ARRAY[1..3,1..4] OF REAL =


USES CRT; ((2,3,4,12),
CONST matriz:ARRAY [1..3,1..4] of (7,9,8,11),
INTEGER=( (12,67,-23,-45), (5,6,1,19));
(45,-34,23,-12), VAR m_tran:ARRAY[1..4,1..3] OF REAL;
(-34,22,88,-10) ); VAR i,j:INTEGER;
VAR m_tra:ARRAY [1..4,1..3] of INTEGER; BEGIN
VAR f,c:INTEGER; ClrScr;
BEGIN FOR i:=1 TO 3 DO
ClrScr; FOR j:=1 TO 4 DO
FOR c:=1 TO 3 DO m_tran[j,i]:=m_orig[i,j];
BEGIN FOR i:=1 TO 3 DO
FOR f:=1 TO 4 DO BEGIN
BEGIN FOR j:=1 TO 4 DO
m_tra[f,c]:=matriz[c,f]; WRITE(m_orig[i,j]:5:2,' ');
WRITE ('(',f,',',c,') '); WRITELN(' ');
WRITELN (m_tra[f,c]:3); END;
END; WRITELN(' ');
END; FOR i:=1 TO 4 DO
END. BEGIN
FOR j:=1 TO 3 DO
WRITE(m_tran[i,j]:5:2,' ');
PROGRAM EJERC100; WRITELN(' ');
USES CRT; END;
END.

15. Escribir un programa en Pascal que sume dos matrices bidimensionales. Las matrices para que puedan
sumarse deben tener las mismas dimensiones.

PROGRAM EJERC102; (1,1,1,1) );


USES CRT; VAR m_suma:ARRAY[1..3,1..4] OF REAL;
CONST m1:ARRAY [1..2,1..2] of VAR i,j:INTEGER;
INTEGER=( (3,1),(4,5) ); BEGIN
CONST m2:ARRAY [1..2,1..2] of ClrScr;
INTEGER=( (1,3),(4,2) ); FOR i:=1 TO 3 DO
VAR m3: ARRAY [1..2,1..2] of INTEGER; FOR j:=1 TO 4 DO
VAR f, c:INTEGER; m_suma[i,j]:=m_1[i,j]+m_2[i,j];
BEGIN FOR i:=1 TO 3 DO
ClrScr; BEGIN
FOR f:=1 TO 2 DO FOR j:=1 TO 4 DO
FOR c:=1 TO 2 DO WRITE(m_1[i,j]:5:2,' ');
BEGIN WRITELN(' ');
m3[f,c]:=(m1[f,c] + m2[f,c]); END;
WRITE ('(',f,',',c,') '); {Muestra la WRITELN(' ');
posicion} FOR i:=1 TO 3 DO
WRITELN (m3[f,c]); BEGIN
END; FOR j:=1 TO 4 DO
END. WRITE(m_2[i,j]:5:2,' ');
WRITELN(' ');
PROGRAM EJERC102; END;
USES CRT; WRITELN(' ');
CONST m_1:ARRAY[1..3,1..4] OF REAL= FOR i:=1 TO 3 DO
( (12,13,14,10), BEGIN
(15,16,17,10), FOR j:=1 TO 4 DO
(18,19,20,10) ); WRITE(m_suma[i,j]:5:2,' ');
CONST m_2:ARRAY[1..3,1..4] OF REAL= WRITELN(' ');
( (1,1,1,1), END;
(1,1,1,1),
END.

También podría gustarte