Sie sind auf Seite 1von 4

EJERCICIOS RESUELTOS Y PROPUESTOS

1. (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.

PROPUESTOS

1. Inicializar una matriz con ceros (0) y que sea de dimensin 10x12.
2. Colocar un uno (1) en todos los espacios de la matriz en que la suma de sus ndices sea mayor que 6. Utilice
la misma matriz de dimensin 10x12.
3. Un instituto desea controlar los resultados de los alumnos en las distintas asignaturas de la facultad de
Ingeniera. El programa debe ingresar las calificaciones de los alumnos y visualizar en pantalla la media de
notas por alumno y la media de notas por asignatura. Las asignaturas estn codificadas de 1 a 6 y hay 30
alumnos.

Das könnte Ihnen auch gefallen