Pascal/Turbo Pascal - No encuentro el error en mi unidad T_T

   
Vista:

No encuentro el error en mi unidad T_T

Publicado por Ramón  (2 intervenciones) el 07/01/2008 20:24:36
Esto es una unidad que hace lo siguiente:
1.- Agregar un registro
2.- Mostrar todos los registros
3.- Consultar un registro por matrícula
4.- Eliminar un registro a partir de una matrícula
5.- Obtener el promedio más alto
6.- Obtener el número de estudiantes con promedio aprobatorio
Y todo se almacenará en un arreglo de registros. Pero me manda un error en la linea 4, dice que espera "." y no un ";". Estoy Usando Pascal Free!
Unit estudiantes;
Interface
type
arrest=array[1..50] of estudiantes;
Procedure AgrReg(a:arrest;n:integer);
Procedure ShowReg(a:arrest;n:integer);
Procedure FindMatr(a:arrest;n:integer;bmatr:string);
Procedure Prom(a:arrest;n:integer;)
procedure elimreg(a:arrest;n:integer;mtrelim:string);
function HighestGrade(a:arrest;n:integer):integer;
function PromAprob(a:arrest;n:integer):integer;
estudiante=record
nombre:string;
matr:string;
calProm:real;
cal:array[1..5] of integer
end;
Implementation
Procedure AgrReg(a:arrest;n:integer);
begin
for i:=1 to n do
begin
writeln('ingresa nombre');
read (a[i].nombre)
writeln('ingresa matr¡cula');
read (a[i].mtr)
for j:=1 to 5 do
writeln('ingresa calificaci¢n');
read (a[i].cal[j])

end;
Procedure ShowReg(a:arrest;n:integer);
begin
for i:=1 to n do
writeln (a[i].nombre)
writeln (a[i].mtr)
for j:=1 to 5 do
writeln (a[i].cal[j])
end;
Procedure FindMatr(a:arrest;n:integer;bmatr:string);
begin
p:=0;
i:=1;
While (p:=0) and (i<=n) do
if a[i].mtr=bmatr
p:=i
else
i=i+1
end;
writeln (a[p].nombre);
writeln (a[p].matr);
writeln (a[p].cal[1]);
writeln (a[p].cal[2]);
writeln (a[p].cal[3]);
writeln (a[p].cal[4]);
writeln (a[p].cal[5]);
end;
Function Prom(a:arrest;n:integer;):real;
begin
for i:=1 to n do
for j:=1 to 5 do
a[i].calProm= a[i].cal[j]+a[i].calProm
end;
Prom= a[i].calProm/5
end;
procedure elimreg(a:arrest;n:integer;mtrelim:string);
begin
for i:=1 to n do
begin
if mtrelim=a[i].mtr then
a[i].mtr="";
a[i].nombre="";
a[i].cal[1]="";
a[i].cal[2]="";
a[i].cal[3]="";
a[i].cal[4]="";
a[i].cal[5]=""
end;
end;
function HighestGrade(a:arrest;n:integer):integer;
begin
HighestGrade=a[i].calProm
for i=2 to n
begin
if a[i].calProm > HighestGrade then
HiguestGrade:=a[i].calProm
end;
end;
function PromAprob(a:arrest;n:integer):integer;
begin
for i:=1 to n do
begin
if a[i].calProm >= 6 then
c=c+1
end;
PromAprob:=c
end.



Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:No encuentro el error en mi unidad T_T

Publicado por Laysquad (47 intervenciones) el 08/01/2008 17:19:30
Hola amigo ^^, entiendo lo que pasa me dices que el error está en la linea numero 4 verdad? pues mira esto es lo que pasa:

como lo has hecho tú :

unit estudiantes ;
interface
type
arrest=array[1..50] of estudiantes; {linea No. 4}
Procedure AgrReg(a:arrest;n:integer);

¿que pasa te preguntaras?, lo que sucede es que has definido arrest un arreglo de estudiantes pero recuerda que el nombre la unidad, tambien es estudiantes, lo unico que debes hacer es:

1. cambiarle el nombre tu unidad ó
2. cambiar el nombre de la variable

espero que esto resuelva tu duda, siempre recuerda que el nombre de una variable y el nombre de una unidad o programa, no pueden ser iguales^^

saludos^^
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No encuentro el error en mi unidad T_T

Publicado por Diego Romero (997 intervenciones) el 09/01/2008 00:49:15
El tipo "estudiante" (todavía) no está definido en la línea 4. La solución, mueve la declaración del record "estudiante" arriba de la declaración del array "arrest". Y cuida los errores de tipeo.

Además te conviene no usar como nombre de la unidad (y por lo tanto del archivo .pas) un nombre de más de 8 caracteres.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar