Pascal/Turbo Pascal - error en compilacion

   
Vista:

error en compilacion

Publicado por luis (7 intervenciones) el 04/12/2008 23:55:54
hola que tal!!!

este es mi programa:

program inscripcion (input,output);

type
alumno=record
doc:real;
nomyape:string[20];
recursante:char;
com:integer;
end;

var
a:array[1..1800]of alumno;
cont,com1,com2:integer;

procedure cargaalumno (var aarray:alumno;var cont:integer);
var
resp:char;
begin
cont:=0;
resp:='s';
while ((cont<1800) and (resp='s')) do
begin
cont:=cont+1;
write ('Ingrese documento: ');
readln (a[cont].doc);
write ('Ingrese el nombre y apellido: ');
repeat
write('¨Es recursante?(s|n): ');
readln (a[cont].recursante);
until ((a[cont].recursante='s') or (a[cont].recursante='n'));
repeat
write('Ingresar otro alumno(s|n): ');
readln (resp);
until ((resp='s') or (resp='n'));
end;
end;

procedure comisiones (var aarray:alumno; cont:integer; var com1:integer; var com2:integer);
var
cont1,cont2,cons:integer;
begin
com1:=1;
cont1:=0;
cont2:=0;
cons:=0;
while (cont1<cont) do
begin
if (cons<60) then
begin
cont1:=cont1+1;
if (a[cont1].recursante='s') then
begin
a[cont1].com:=com1;
cons:=cons+1;
end;
end
else
begin
cons:=0;
com1:=com1+1;
end;
end;
if cons<=50 then
while ((cons<60)and(cont2<cont)) do
begin
cont2:=cont2+1;
if (a[cont2].recursante='n') then
begin
a[cont2].com:=com1;
cons:=cons+1;
end;
end;
cons:=0;
com2:=com1+1;
while (cont2<cont) do
if (cons<60) then
begin
cont2:=cont2+1;
if (a[cont2].recursante='n') then
begin
a[cont2].com:=com2;
cons:=cons+1;
end;
end
else
begin
cons:=0;
com2:=com2+1;
end;
end;

procedure lista (var aarray:alumno; cont:integer; com2:integer);
var
cont1,i,j:integer;
aux:alumno;
resp:boolean;
begin
for i:= 1 to (cont-1) do
for j:= 1 to cont do
if (a[i].com>a[j].com) then
begin
aux:=a[i];
a[i]:=a[j];
a[j]:=aux;
end;
cont:=1;
for i:= 1 to com2 do
begin
writeln ('comision: ',i);
writeln ('documento nombre recursante');
end;
resp:=true;
while (resp=true) do
if (a[cont1].com=i) then
begin
writeln (a[cont1].doc,' ',a[cont1].nomyape,' ',a[cont1].recursante);
cont1:=cont1+1;
end
else
resp:=false;
end;

procedure totales (aarray:alumno; cont:integer);
var
i,rec,ing:integer;
begin
rec:=0;
ing:=0;
if (a[i].recursante='s') then
rec:=rec+1
else
ing:=ing+1;
write ('Hay ',rec,' recursantes, y ',ing,' ingresantes.');
end;

begin
cargaalumno(a,cont);
comisiones(a,cont,com1,com2);
lista(a,cont,com2);
totales(a,cont);
end.



el tema es que en el programa principal en cargaalumno me parca el error type mismach y me deja el cursor debajo de la letra a.
que puede ser?

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:error en compilacion

Publicado por Miguel (162 intervenciones) el 05/12/2008 05:39:26
Tienes varios errores.
Declaras un procedimiento con el siguiente perfil:
procedure cargaalumno (var aarray:alumno;var cont:integer);

Primero, aarray pertenece a tipo de registro "alumno" no un arreglo, luego no lo usas mas en toda la accion.
Segundo en el cuerpo principal del algoritmo le pasas como parametro a la accion cargaalumno (aunque sucede en el resto) el arreglo "a" declarado en el "VAR" global.
Es decir le pasas como parametro a una accion un arreglo, pero que en la accion no es un arreglo (distinto tipo) sino un registro, y sigues utilizando el arreglo "a" cuando al menos deberia ser "aarray".

Solucion.
Tu tienes un arreglo llamado a.. por ende cuando lo pases como parametro en la accion debe haber una variable del mismo tipo, es decir un arreglo de alumno...
procedure cargaalumno (var aarray: array[1..180] of Alumno;var cont:integer);

En todas las acciones cometes el mismo error, pasas como parametro una variable y en el perfil de la accion usas el mismo nombre o en el cuerpo de la accion. Mucho cuidado con eso.
Luego hay contadores que no se inicializan correctamente.
Y por ultimo trata de escribir mejor son pavadas, pero por ahi se hace engorroso leer todas cosas pegadas. Por ejemplo separa aarray:alumno. Trata de seguir alguna convencion de escritura. Por ejemplo cuando escribes dos palabras y no las separas con espacios usa una letra mayuscula al inicio de cada palabra asi a simple vista se entiende correctamente lo que dice. Por ejemplo cargarAlumno o aArray...
Lo ultimo tomalo como un consejo.
Saludos y metele para adelante.
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:error en compilacion

Publicado por luis (7 intervenciones) el 05/12/2008 15:03:22
muchas gracias!!!

otra cosita.....
a que te referis cuando dices que hay contadores que no se inicializan correctamente?
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:error en compilacion

Publicado por Dani (159 intervenciones) el 05/12/2008 11:07:00
Estás pasando al procedimiento un parámetro de tipo array de alumnos, cuando deberías pasarle un solo alumno

Un saludo
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:error en compilacion

Publicado por Miguel (162 intervenciones) el 05/12/2008 19:35:30
Tal vez era por que estabas pasando mal los parametros!!!
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:error en compilacion

Publicado por luis (7 intervenciones) el 06/12/2008 01:04:33
muchas gracias!!!

otra cosita.....
a que te referis cuando dices que hay contadores que no se inicializan correctamente?
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:error en compilacion

Publicado por Miguel (162 intervenciones) el 06/12/2008 03:01:48
Bueno lo ultimo que te respondi fue una respuesta a esta pregunta!!!
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