HOLA GENTE, LES DEJO UN PROGRAMITA QUE HICE N PASCAL RECIEN EN CLASES, ESPERO QUE LES GUSTE!!!

EL PROBLEMA ERA EL SIGUIENTE:
Problema 18. Dada una lista con los datos de N libros de una biblioteca,
conteniendo la siguiente información:
• Título del libro
• Autor
• Tema
• Número de páginas
• Fecha de edición

Se pide determinar lo siguiente:

a) Frecuencia de letras usadas en los títulos de los libros.
b) Conjunto de consonantes usadas en Autor.
c) Una lista con los títulos cuyas páginas sumadas no superen el valor de 1000


program libreria;
uses crt;
type
fecha=record
dia:1..31;
mes:1..12;
anio:1800..2020;
end;
libros=record
titulo:string[20];
autor:string[20];
temamatematicas,contabilidad,elementos);
paginas:integer;
fecha1:fecha;
end;
vector=array[1..100] of libros;
var
x:vector; n:integer;

procedure carga (var x:vector; var n:integer);
var
i,op:integer;
begin
writeln(' Ingrese cantidad de libros '); readln(n);
for i :=1 to n do
begin
clrscr;
writeln(' Ingrese titulo: '); readln(x.titulo);
writeln(' Ingrese autor: '); readln(x.autor);
writeln(' Ingrese tema: "-1- para matematicas, -2- para contabilidad, -3- para elementos" ');
read(op);
case op of
1: x.tema:= matematicas;
2: x.tema:= contabilidad;
3: x.tema:= elementos;
end;
writeln(' Ingrese cantidad de paginas: '); readln(x.paginas);
writeln(' Ingrese fecha: ');
writeln;
writeln(' DIA: '); readln(x.fecha1.dia);
writeln(' MES: '); readln(x.fecha1.mes);
writeln(' ANIO: '); readln(x.fecha1.anio);
end;
end;

procedure frecuencia( x:vector; n:integer);
var
i,c,j:integer; k:char; pal:string;
begin
c:=0;
for j:=1 to n do
begin
pal:='';
pal:=x[j].titulo;

for k:='A' to 'Z' do
begin
for i:=1 to length (pal) do
begin
if upcase(pal)=k then
c:=c+1;
end;
writeln(' La cantidad de ',k,' es: ',c);
c:=0;
end;
end;
end;
procedure consonantes( x:vector; n:integer);

var
i:integer; conj:set of char; pal:string;
begin
conj:=[];
conj:= ['A'..'Z']-['A','E','I','O','U'];
writeln(' El conjunto de consonantes es: ');
for i:=1 to n do
begin
pal:=''; pal:=x.autor;
for i:=1 to length(pal) do
begin
if upcase(pal) in conj then
write(' ',pal,' ');
end;
end;
end;
procedure titulos( x:vector; n:integer);
var i:integer;
begin
writeln(' La lista de titulos con paginas menor a 1000 es : ');
for i:=1 to n do
begin
if x.paginas <= 1000 then
writeln(x.titulo);

end;
end;
begin
carga(x,n);
frecuencia(x,n);
consonantes(x,n);
titulos(x,n);
readkey;
end.