Está en la página 1de 18

1.

Escribir un programa en Pascal que rellene un array con los


nmeros
2. enteros comprendidos entre 4 y 14.
3.
4. PROGRAM EJER81;
5.
USES CRT;
6.
VAR arr_num:ARRAY [4..14] of INTEGER;
7.
VAR i:INTEGER;
8. BEGIN
9.
ClrScr;
10.
11.
FOR i:=4 TO 14 DO
12.
arr_num[i]:=i;
13.
14.
FOR i:=4 TO 14 DO
15.
BEGIN
16.
WRITELN('Numero: ',arr_num[i]);
17.
END;
18.END.
19.
20.
21.PROGRAM EJER81;
22.
USES CRT;
23.
VAR arr_num:ARRAY[1..11] of INTEGER;
24.
VAR i,num:INTEGER;
25.BEGIN
26.
ClrScr;
27.
28.
num:=4;
29.
30.
FOR i:=1 TO 11 DO
31.
BEGIN
32.
arr_num[i]:=num;
33.
num:=num+1;
34.
END;
35.
36.
FOR i:=1 TO 11 DO
37.
BEGIN
38.
WRITE('Posicin ',i:2, ': '); WRITELN(arr_num[i]:5);
39.
END;
40.END.
41.
42.
43.
Escribir un programa en Pascal que rellene un array con los
nmeros
44.pares comprendidos entre 1 y 10.
45.

46.PROGRAM EJER82;
47.
USES CRT;
48.
VAR arr_num:ARRAY [1..10] of INTEGER;
49.
VAR i, b:INTEGER;
50.BEGIN
51.
ClrScr;
52.
i:=1;
53.
54.
WHILE i <= 10 DO
55.
BEGIN
56.
arr_num[i]:=i;
57.
58.
IF (i mod 2)=0 THEN
59.
BEGIN
60.
WRITELN(arr_num[i]);
61.
END;
62.
63.
i:= i + 1;
64.
END;
65.END.
66.
67.
68.PROGRAM EJER82;
69.
USES CRT;
70.
VAR arr_num:ARRAY[1..10] of INTEGER;
71.
VAR i,num:INTEGER;
72.BEGIN
73.
ClrScr;
74.
i:=1;
75.
num:=1;
76.
77.
WHILE num<=10 DO
78.
BEGIN
79.
IF num mod 2 = 0 THEN
80.
BEGIN
81.
arr_num[i]:=num;
82.
i:=i+1;
83.
END;
84.
num:=num+1;
85.
END;
86.
87.
arr_num[i]:=3;
88.
i:=1;
89.
90.
WHILE arr_num[i] <> 3 DO
91.
BEGIN
92.
WRITE('Posicion ',i:2,' : '); WRITELN(arr_num[i]:5);

93.
i:=i+1;
94.
END;
95.END.
96.
97.
98.
Escribir un programa en Pascal que rellene un array con los
nmeros
99.comprendidos entre 25 y 35 divididos por 3.
100.
101.
PROGRAM EJER83;
102.
USES CRT;
103.
VAR arr_num:ARRAY [1..11] of REAL;
104.
VAR i:INTEGER;
105.
BEGIN
106.
ClrScr;
107.
108.
FOR i:=25 TO 35 DO
109.
arr_num[i]:=i;
110.
111.
FOR i:=25 TO 35 DO
112.
WRITELN(arr_num[i] / 3:5:2);
113.
END.
114.
115.
116.
PROGRAM EJER83;
117.
USES CRT;
118.
VAR arr_num:ARRAY[1..11] of REAL;
119.
VAR i,num:INTEGER;
120.
BEGIN
121.
ClrScr;
122.
123.
i:=1;
124.
num:=025;
125.
126.
FOR i:=1 TO 10 DO
127.
BEGIN
128.
arr_num[i]:=num/3;
129.
num:=num+1;
130.
END;
131.
132.
i:=1;
133.
134.
WHILE i <= 10 DO
135.
BEGIN
136.
WRITE('Posicion ',i:2, ': '); WRITELN(arr_num[i]:5);
137.
i:=i+1;
138.
END;

139.
END.
140.
141.
142.
143.
Escribir un programa en Pascal que rellene un array con
cinco
144.
nmeros enteros consecutivos y haga una copia de ese
array en otro.
145.
146.
PROGRAM EJER84;
147.
USES CRT;
148.
VAR arr_num1,arr_num2:ARRAY [5..10] of INTEGER;
149.
VAR i:INTEGER;
150.
BEGIN
151.
ClrScr;
152.
153.
FOR i:=5 TO 10 DO
154.
BEGIN
155.
arr_num1[i]:=i;
156.
arr_num2[i]:=arr_num1[i];
157.
END;
158.
159.
FOR i:=5 TO 10 DO
160.
WRITELN (arr_num2[i]);
161.
162.
END.
163.
164.
165.
PROGRAM EJER84;
166.
USES CRT;
167.
VAR arr_num1,arr_num2:ARRAY[1..5] of INTEGER;
168.
VAR i,num:INTEGER;
169.
BEGIN
170.
ClrScr;
171.
172.
i:=1;
173.
num:=100;
174.
175.
FOR i:=1 TO 5 DO
176.
BEGIN
177.
arr_num1[i]:=num;
178.
num:=num+1;
179.
END;
180.
181.
FOR i:=1 TO 5 DO
182.
arr_num2[i]:=arr_num1[i];
183.

184.
i:=1;
185.
186.
WRITELN('ARRAY 1 ARRAY 2':30);
187.
188.
WHILE i <= 5 DO
189.
BEGIN
190.
WRITE('Posicion ',i:2, ': ');
191.
WRITE(arr_num1[i]:5);
192.
WRITELN(arr_num2[i]:10);
193.
i:=i+1;
194.
END;
195.
END.
196.
197.
198.
Escribir un programa en Pascal que rellene un array de 10
elementos
199.
con los nmeros comprendidos entre 23 y 32 y copie en
otro array esos
200.
nmeros multiplicados por 0.35.
201.
202.
PROGRAM EJER85;
203.
USES CRT;
204.
VAR arr_num1, arr_num2:ARRAY [23..32] of REAL;
205.
VAR i:INTEGER;
206.
BEGIN
207.
ClrScr;
208.
209.
FOR i:=23 TO 32 DO
210.
BEGIN
211.
arr_num1[i]:=i;
212.
arr_num2[i]:=(arr_num1[i] * 0.35);
213.
END;
214.
215.
FOR i:=23 TO 32 DO
216.
WRITELN(arr_num2[i]:5:2);
217.
END.
218.
219.
220.
PROGRAM EJER85;
221.
USES CRT;
222.
VAR arr_num1,arr_num2:ARRAY[1..10] of REAL;
223.
VAR i,num:INTEGER;
224.
BEGIN
225.
ClrScr;
226.
227.
i:=1;
228.
num:=23;

229.
230.
FOR i:=1 TO 10 DO
231.
BEGIN
232.
arr_num1[i]:=num;
233.
num:=num+1;
234.
END;
235.
236.
FOR i:=1 TO 10 DO
237.
arr_num2[i]:=arr_num1[i]*0.35;
238.
239.
i:=1;
240.
WRITELN('ARRAY 1 ARRAY 2':30);
241.
242.
WHILE i <= 10 DO
243.
BEGIN
244.
WRITE('Posicion ',i:2, ': ');
245.
WRITE(arr_num1[i]:5:2);
246.
WRITELN(arr_num2[i]:10:2);
247.
i:=i+1;
248.
END;
249.
END.
250.
251.
252.
253.
Escribir un programa en Pascal que rellene un array con los
veinte
254.
primeros nmeros pares y calcule su suma.
255.
256.
PROGRAM EJER86;
257.
USES CRT;
258.
VAR arr_pares:ARRAY [1..40] of INTEGER;
259.
VAR i, suma:INTEGER;
260.
BEGIN
261.
ClrScr;
262.
263.
i:=1;
264.
265.
FOR i:= 1 TO 40 DO
266.
BEGIN
267.
IF (i mod 2) = 0 THEN
268.
BEGIN
269.
arr_pares[i]:=i;
270.
suma:= suma + i;
271.
END;
272.
END;
273.

274.
WRITELN('La suma de los 20 primeros numeros pares es:
',suma);
275.
END.
276.
277.
278.
PROGRAM EJER86;
279.
USES CRT;
280.
VAR arr_num:ARRAY[1..25] of INTEGER;
281.
VAR i,num,suma_par:INTEGER;
282.
BEGIN
283.
ClrScr;
284.
285.
i:=1;
286.
num:=1;
287.
suma_par:=0;
288.
289.
WHILE i<=20 DO
290.
BEGIN
291.
IF num mod 2 = 0 THEN
292.
BEGIN
293.
arr_num[i]:=num;
294.
i:=i+1;
295.
suma_par:=suma_par+num;
296.
END;
297.
num:=num+1;
298.
END;
299.
300.
i:=1;
301.
302.
WHILE i <= 20 DO
303.
BEGIN
304.
WRITE('Posicin ',i:2, ': ');
305.
WRITELN(arr_num[i]:5);
306.
i:=i+1;
307.
END;
308.
WRITE('SUMA: ', suma_par:12);
309.
END.
310.
311.
312.
313.
314.
Escribir un programa en Pascal que solicite cinco nmeros,
los
315.
almacene en un array y luego calcule la media aritmtica
de esos nmeros.
316.
317.
PROGRAM EJER87;

318.
319.
320.
321.
322.
323.
324.
325.
');
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.

USES CRT;
VAR arr_num:ARRAY [1..5] of REAL;
VAR i, num:INTEGER;
VAR media:REAL;
BEGIN
ClrScr;
WRITELN ('Escriba 5 numeros para hacer su media aritmetica:

FOR i := 1 TO 5 DO
BEGIN
READLN(num);
arr_num[i]:=num;
END;
FOR i:=1 TO 5 DO
media:= media + arr_num[i];
media:= media / i;
WRITELN ('La media aritmetica es: ',media:5:2);
END.

PROGRAM EJER87;
USES CRT;
VAR arr_num:ARRAY[1..10] of REAL;
VAR num,suma,media:REAL;
VAR i:INTEGER;
BEGIN
ClrScr;
i:=0;
suma:=0;
media:=0;
WHILE i<5 DO
BEGIN
WRITE('Numero ',i+1,'--->'); READLN(num);
arr_num[i]:=num;
suma:=suma+num;
i:=i+1;
END;
media:=(suma/i);

364.
WRITE('Media: ', media:5:2);
365.
END.
366.
367.
368.
369.
370.
Escribir un programa en Pascal que tras asignar los
nmeros,
371.
23, 45, 68, 99, 10, 15 y 4 a un array, determine la posicin
del array
372.
en la que se encuentra el mximo valor.
373.
374.
PROGRAM EJER88;
375.
USES CRT;
376.
CONST arr_num:ARRAY [1..7] of
INTEGER=(23,45,68,99,10,15,4);
377.
VAR i:INTEGER;
378.
BEGIN
379.
ClrScr;
380.
381.
FOR i:=1 TO 7 DO
382.
BEGIN
383.
384.
IF arr_num[i]=99 THEN
385.
WRITE ('La posicion del mayor numero (',arr_num[i],') es:
386.
',i);
387.
END;
388.
END.
389.
390.
391.
392.
PROGRAM EJER88;
393.
USES CRT;
394.
CONST arr_num:ARRAY[1..7] of
INTEGER=(23,45,68,99,10,15,4);
395.
VAR i,posi_max,val_max:INTEGER;
396.
BEGIN
397.
ClrScr;
398.
399.
FOR i:=1 TO 7 DO
400.
BEGIN
401.
IF arr_num[i] > val_max THEN
402.
BEGIN
403.
val_max:=arr_num[i];
404.
posi_max:=i;
405.
END;
406.
END;

407.
408.
WRITE('VALOR MAXIMO: ', val_max, ' POSICION: ', posi_max);
409.
END.
410.
411.
412.
Escribir un programa en Pascal que tras asignar los
nmeros,
413.
-2, 5, 8, -9, 10, 15 y -4 a un array calcule,
independientemente, la suma
414.
de los elementos positivos y negativos.
415.
416.
PROGRAM EJER89;
417.
USES CRT;
418.
CONST arr_num:ARRAY [1..7] of INTEGER=(-2,5,8,-9,10,15,4);
419.
VAR i:INTEGER;
420.
VAR suma_p, suma_i:INTEGER;
421.
BEGIN
422.
ClrScr;
423.
424.
FOR i:=1 TO 7 DO
425.
BEGIN
426.
IF arr_num[i] >= 0 THEN
427.
suma_p:= suma_p + arr_num[i]
428.
ELSE IF arr_num[i] < 0 THEN
429.
suma_i:= suma_i + arr_num[i];
430.
END;
431.
432.
WRITELN ('La suma de los numeros pares es: ',suma_p);
433.
WRITELN ('La suma de los numeros impares es: ',suma_i);
434.
END.
435.
436.
437.
PROGRAM EJER89;
438.
USES CRT;
439.
CONST arr_num:ARRAY[1..7] of INTEGER=(-2,5,8,-9,10,15,-4);
440.
VAR i,suma_pos,suma_neg:INTEGER;
441.
BEGIN
442.
ClrScr;
443.
444.
FOR i:=1 TO 7 DO
445.
BEGIN
446.
IF arr_num[i] > 0 THEN
447.
suma_pos:=suma_pos+arr_num[i]
448.
ELSE
449.
suma_neg:=suma_neg+arr_num[i];
450.
END;

451.
452.
WRITELN('SUMA POSITIVOS: ', suma_pos);
453.
WRITELN('SUMA NEGATIVOS: ', suma_neg);
454.
END.
455.
456.
457.
458.
Escribir un programa en Pascal que tras asignar los
nmeros,
459.
23, 45, 68, 99, 10, 15 y 4 a un array, determine las
posiciones del array
460.
en las que se encuentran el mximo y el mnimo valor.
461.
462.
PROGRAM EJER90;
463.
USES CRT;
464.
CONST arr: ARRAY [1..7] of INTEGER=(23,45,68,99,10,15,4);
465.
VAR i, mayor, menor,posi_mayor,posi_menor:INTEGER;
466.
BEGIN
467.
ClrScr;
468.
469.
mayor:= arr[1];
470.
menor:= arr[1];
471.
472.
FOR i:=2 TO 7 DO
473.
BEGIN
474.
IF arr[i] >= mayor THEN
475.
BEGIN
476.
mayor:= arr[i];
477.
posi_mayor:=i;
478.
END
479.
ELSE
480.
CONTINUE;
481.
END;
482.
483.
WRITELN ('El numero mayor es: ',mayor:3);
484.
WRITELN ('Su posicion es:
',posi_mayor:3);
485.
WRITELN ('');
486.
487.
FOR i:=2 TO 7 DO
488.
BEGIN
489.
IF arr[i] <= menor THEN
490.
BEGIN
491.
menor:= arr[i];
492.
posi_menor:=i;
493.
END
494.
ELSE
495.
CONTINUE;

496.
END;
497.
498.
WRITELN ('El numero menor es: ',menor:3);
499.
WRITELN ('Su posicion es:
',posi_menor:3);
500.
END.
501.
502.
503.
PROGRAM EJER90;
504.
USES CRT;
505.
CONST arr_num:ARRAY[1..7] of
INTEGER=(23,45,68,99,10,15,4);
506.
VAR i,val_max,val_min,pos_max,pos_min:INTEGER;
507.
BEGIN
508.
ClrScr;
509.
510.
val_min:=arr_num[1];
511.
val_max:=arr_num[1];
512.
513.
FOR i:=1 TO 7 DO
514.
BEGIN
515.
IF arr_num[i] > val_max THEN
516.
BEGIN
517.
val_max:=arr_num[i];
518.
pos_max:=i;
519.
END;
520.
521.
IF arr_num[i] < val_min THEN
522.
BEGIN
523.
val_min:=arr_num[i];
524.
pos_min:=i;
525.
END;
526.
END;
527.
528.
WRITELN('VALOR MAXIMO: ', val_max:3, ' POSICIN: ',
pos_max:3);
529.
WRITELN('VALOR MINIMO: ', val_min:3, ' POSICIN: ',
pos_min:3);
530.
END.

Ejercicio de Registro) Escriba un programa que lea datos de una


persona 'P' (nombre, edad, sexo, direccin, telfono), los almacene en
un registro y los muestre.
Program Datos;
Uses Crt;

Type
Persona : Record
Nombre : String[30];
Edad : Integer;
Sexo : Char;
Direccion : String[50];
Telefono : string[12];
End;
Var
P: Persona;
Begin
Clrscr;
{carga del registro}
Write(' Ingrese su Nombre: ');
Readln( P.Nombre );
Write(' Ingrese su Edad: ');
Readln( P.Edad );
Write(' Ingrese su Sexo [M / F]: ');
Readln( P.Sexo );
Write(' Ingrese su Direccin: ');
Readln( P.Direccion );
Write(' Ingrese su Telfono: ');
Readln( P.Telefono )
{ fin carga del registro}
{mostrar informacin del registro}
Writeln(' El Nombre es: ' , P.Nombre );
Writeln(' La Edad es: ,P.Edad );
Writeln(' El sexo de la persona es: , P.Sexo );
Writeln(' La Direccin es: ', P.Direccion );
Writeln(' el numero de Telfono es: ' ,P.Telefono );
{fin mostrar informacin del registro}
End.
2. (Ejercicio de arreglo de registro) Usando el ejercicio anterior,
supongamos que ahora deseamos guardar los datos de 20 personas y
buscar cul es la ms joven.
Program Mas_joven;
Uses Crt;
Type
Personas : Record
Nombre : String[30];
Edad : Integer;
Sexo : Char;
Direccion : String[50];
Telefono : string[12];

End;
arre_persona=array[1..20] of persona;
Var
persona:arre_persona;
i, Menor : Integer;
Nombre : String[30];
Begin
Clrscr;
For i := 1 to 20 do
Begin
Write(' Ingrese el Nombre de la persona ', i , ': ');
Readln( persona[i].Nombre );
Write(' Ingrese su Edad: ');
Readln( persona[i].Edad );
Write(' Ingrese su Sexo [M / F]: ');
Readln( persona[i].Sexo );
Write(' Ingrese su Direccin: ');
Readln( persona[i].Direccion );
Write(' Ingrese su Telfono: ');
Readln( persona[i].Telefono )
End;
Menor := persona[1].Edad;
For i := 2 to 20 do
If persona[i].Edad < Menor then
Begin
Menor := persona [i].Edad;
Nombre := persona [i].Nombre;
End;
Writeln(' El ms joven es ',Nombre,' y tiene ',Menor,' aos de edad.');
End.
(Ejercicio de arreglo de registro) Hacer un programa en pascal de 10
alumnos guardar nombre, nombre de la asignatura y 4 notas. Calcular
y mostrar el promedio y la suma de las notas.
PROGRAM ARR_REGISTROS;
USES CRT;
TYPE
ALUMNOS=RECORD
NOMBRE:STRING[30];
ASIGNATURA:STRING[40];
NOTA:array[1..4] of REAL;
END;
ARRE_ALUMNOS=ARRAY[1..10] OF ALUMNOS;

VAR
ALUM:ARRE_ALUMNOS;
I,J:INTEGER;
SUMA,MEDIA:REAL;
BEGIN
CLRSCR;
FOR I:=1 TO 10 DO
BEGIN
WRITELN('INTRODUZCA EL NOMBRE DEL ALUMNO ',I);
READLN(ALUM[I].NOMBRE);
WRITELN('INTRODUZCA EL NOMBRE DE LA ASIGNATURA');
READLN(ALUM[I].ASIGNATURA);
SUMA:=0;
FOR J:=1 TO 4 DO
BEGIN
WRITELN('INTRODUZCA LA NOTA ',J);
READLN(ALUM[I].NOTA[J]);
SUMA:=SUMA + ALUM[I].NOTA[J];
END;
MEDIA:=SUMA/4;
WRITELN('LA MEDIA DEL ALUMNO ',ALUM[I].NOMBRE,' ES ', MEDIA:2:2);
WRITELN('LA SUMA ES: ',SUMA:2:2);
READLN;
END;
END.
EJERCICIO RESUELTO DE ARREGLOS DE REGISTROS
hacer un programa en pascal que almacene en un arreglo de registro la
siguiente informacion de 10 trabajadores: nombre, edad, sexo, estado civil y
salario base, Calcular y mostrar por pantalla la cantidad de trabajadores del
sexo masculino, cantidad de trabajadoras casadas y suma de todos los
sueldos.
program arreglo_registros;uses crt; type
trabajadores=record
nombre:string[30];
edad:integer;
sexo:char;
edo_civil:char;
salario:real;
end;
arre_trabajadores=array[1..10] of trabajadores;
var

trabajador:arre_trabajadores;
i, cant_masculino,cant_casadas:integer;
acum_salarios:real;
procedure inicializar;
begin
acum_salarios:=0;
cant_masculino:=0;
cant_casadas:=0;
end;
procedure cargar_datos;
begin for i:= 1 to 10 do
begin
writeln('tipee el nombre: ');
readln(trabajador[i].nombre);
writeln('tipee la edad del trabajador:');
readln(trabajador[i].edad);
writeln('tipee el sexo del trabajador f=femenino /m=masculino:');
readln(trabajador[i].sexo);
writeln('tipee el estado civil del trabajador c=casado/s=soltero:');
readln(trabajador[i].edo_civil);
writeln('tipee el sueldo del trabajador:');
readln(trabajador[i].salario);
end;
end;
procedure masculinos_casadas;
begin
for i:=1 to 10 do
begin
if upcase(trabajador[i].sexo)='M' then
cant_masculino:=cant_masculino+ 1;
if (upcase(trabajador[i].sexo)='F') and (upcase(trabajador[i].edo_civil)='C')
then cant_casadas:=cant_casadas+ 1; end;end;
procedure sumar_salarios;
begin
for i:= 1 to 5 do
acum_salarios:=acum_salarios + trabajador[i].salario;
end;
procedure mostrar_datos_trabajador;
begin
for i:=1 to 5 do
begin
writeln('el nombre del trabajador es: ', trabajador[i].nombre);
readln;
writeln('la edad del trabajador es: ', trabajador[i].edad);
readln;
if upcase(trabajador[i].edo_civil)='S' then
begin

writeln('el estado civil es: soltero');


readln;
end
else
begin
writeln('el estado civil es: casado');
readln;
end; writeln('el salario del trabajador es: ', trabajador[i].salario:2:2);
readln;
end;
end;
procedure mostrar;
begin
writeln('la cantidad de trabajadores masculinos es: ', cant_masculino);
readln;
writeln('la cantidad de mujeres casadas es: ', cant_casadas);
readln;
writeln('la suma de todos los sueldos es: ' ,acum_salarios:2:2);
readln;
end; {programa principal}
begin
clrscr;
inicializar;
cargar_datos;
masculinos_casadas;
sumar_salarios;
mostrar_datos_trabajador;
mostrar;
end.
(*Escribir un programa en pascal que rellene un array unidimensional con 5
nombres y en un arreglo bidimensional guardar el monto pagado por 3 meses.
Calcular el monto total pagado por cada persona. Mostrar nombre, el monto
total pagado por esa persona y los montos de cada mes*)
PROGRAM pagos;
USES
crt;
TYPE
arreglo_personas=array[1..5] of string;
arreglo_monto=array[1..5,1..3] of real;
arreglo_suma=array[1..5] of real;
VAR
per:arreglo_personas;
monto:arreglo_monto;
f,c:integer;
suma:arreglo_suma;

sumas:real;
BEGIN
FOR f:=1 TO 5 DO
BEGIN
WRITELN('Introduzca el nombre:' );
READLN(per[f]);
WRITELN('Introduzca los 3 montos de 3 meses');
sumas:=0;
FOR c:=1 TO 3 DO
BEGIN
READLN(monto[f,c]);
sumas:=sumas+monto[f,c];
END;
suma[f]:=sumas;
END;
FOR f:=1 TO 5 DO
BEGIN
WRITELN('el cliente' , per[f] , 'en tres meses ha pagado: ' , suma[f]:2:2);
READLN;
FOR c:=1 TO 3 DO
BEGIN
WRITELN('En el mes' , c, ' la persona ha pagado: ' , monto[f,c]:2:2);
READLN;
END;
END;
CLRCSR;
END.