Pascal/Turbo Pascal - ayuda urgente!!! desesperada con pascal

   
Vista:

ayuda urgente!!! desesperada con pascal

Publicado por paola (4 intervenciones) el 17/06/2010 21:45:52
necesito ayuda en un algortimo de registros ya le movi mil cosas
y nada ke korre porfacvor ayuda!!!

Tener la informacion capturada en el registro

Calcular el promedio de las calificaciones por estudiante y guardarlo en el registro (arch_cal)
Promedio por estudiante

Determinar en que materia se obtuvo el mejor promedio

Ordenar los 2 archivos por nombre

determinar de quien es el promedio mayor y decir su nombre .
esto es lo ke tengo:

unit sist_al;
interface
uses crt;
type

mat=record
matri: string[10];
cali:array[1..3] of integer;
materia:array[1..3]of integer;
end;

rega=record
matricula:mat;
nombre: string[40];
semestre, edad: integer;
{ materia: ee;
}
end;

// archc=array[1..20] of mat;
archa= array [1..20] of rega;
vector=array[1..20] of real;
//promedio=array[1..3] of integer;
var
//regalum: rega;
arch_al:archa;
vec:vector;
// prom:promedio;
// rema:mat;
// arch_cal:archc;

procedure pantcap;
procedure captura (var arch_al:archa;n:integer);
procedure pantsal;
procedure salida(arch_al:archa;n:integer);
procedure buscar(arch_al:archa;n:integer);
procedure ProMateria(arch_al:archa;n:integer);
procedure ProAlumno(arch_al:archa;n:integer);

implementation

procedure pantcap;
begin
clrscr;
gotoxy(30,1);
writeln ('CAPTURA DE LOS DATOS DE LOS ALUMNOS: ');
gotoxy(12,3);
writeln ('Matricula:');
gotoxy(34,3);
writeln('Nombre:');
gotoxy(12,4);
writeln('Edad:');
gotoxy(20,4);
writeln('Semestre:');
gotoxy(12,6);
writeln ('Calificaciones');
gotoxy(18,7);
writeln('logica:');
gotoxy(18,8);
writeln('ingles:');
gotoxy(18,9);
writeln('calculo:');

end;

procedure captura (var arch_al:archa;n:integer);
var m,w,i: integer;
begin

for i:=1 to n do
begin
pantcap;
gotoxy(22,3);
readln(arch_al[i].matricula.matri);

gotoxy(41,3);
readln (arch_al[i].nombre);

gotoxy(17,4);
readln (arch_al[i].edad);

gotoxy(29,4);
readln (arch_al[i].semestre);
w:=7;
for m:=1 to 3 do
begin
gotoxy(25,w);
readln(arch_al[i].matricula.cali[m]);
// writeln (arch_al[i].matricula.cali[m]);
w:=w+1
end;
end;
end;

procedure pantsal;
begin
clrscr;
gotoxy(31,1);
writeln ('DATOS DE LOS ALUMNOS');
gotoxy(7,3);
writeln('Matricula');
gotoxy(25,3);
writeln('Nombre');
gotoxy(39,3);
writeln('Edad');
gotoxy(45,3);
writeln('semestre');
gotoxy(55,3);
writeln('calificaciones');
gotoxy(65,3);
write ('logica');
gotoxy(73,3);
write('ingles');
gotoxy(79,3);
write('calculo');
writeln;
end;

procedure salida(arch_al:archa;n:integer);
var
j,i,m,inw:integer;
begin
j:=4;
inw:=65;
pantsal;
for i := 1 to n do
begin
gotoxy(7,j);
writeln(arch_al[i].matricula.matri);
gotoxy(25,j);
writeln(arch_al[i].nombre);
gotoxy(39,j);
writeln(arch_al[i].edad);
gotoxy(45,j);
writeln(arch_al[i].semestre);

for m:=1 to 3 do
begin
gotoxy(inw,j);
write(arch_al[i].matricula.cali[m]);
inw:=inw+6

end;
j:=j+1;
end;
end;

procedure buscar(arch_al:archa;n:integer);
var
i:integer;
matri:string[10];
b:boolean;
begin
i:=1;
b:=false;
writeln('alumno que buscas:');
readln(matri);
while ((i<n) or (b=false)) do
begin
if(arch_al[i].matricula.matri=matri) then
// if (matrcicula=re[i].nombre) then
begin
writeln;
writeln('Nombre: ',arch_al[i].nombre);
writeln('Edad: ',arch_al[i].edad);
writeln('Semestre ',arch_al[i].semestre);
writeln('=====Calificaciones======');
writeln('Logica: ',arch_al[i].matricula.cali[1]);
writeln('Ingles: ',arch_al[i].matricula.cali[2]);
writeln('Calculo: ',arch_al[i].matricula.cali[3]);
b:=true;
end;
i:=i+1;
end;
if b=false then
writeln('"no existe este Alumno"');
end;

//mayor promedio de materia

procedure ProMateria(arch_al:archa;n:integer);
var
x,suma,i,j,op:integer;
promL,promI,promC:real;
//mate:string[10];
begin

i:=1;
x:=1;
j:=n;
writeln('De que materia quieres ver su promedio:');
writeln('1-Logica');
writeln('2-Ingles');
writeln('3-Calculo');
writeln('4-Mayor de todas');
readln(op);

while (x<=3) do
begin
suma:=0;

while j>=1 do
begin
suma:=suma+arch_al[i].matricula.cali[x];
j:=j-1;
end;

if x=1 then
begin
promL:=suma div n;
WRITELN('LOGICA',promL,'');
end;
if x=2 then
begin
promI:=suma div n;
end;
if x=3 then
begin
promC:=suma div n;
end;
x:=x+1;
end;
if op=1 then
begin
writeln('Promedio de Lofica es ',promL,'');
end;
if op=2 then
begin
writeln('Promedio de Ingles es ',promI,'');
end;
if op=3 then
begin
writeln('Promedio de Calculo es ',promC,'');
end;
if op=4 then
begin
if ((promL>promI) and (promL>promC)) then ;
begin
writeln('Promedio de Calculo es ',promL,'');
end;
if ((promI>promL) and (promI>promC)) then
begin
writeln('Promedio de Calculo es ',promI,'');
end;
if ((promC>promI) and (promC>promL)) then
begin
writeln('Promedio de Calculo es ',promC,'')
end;

end;
end;
//mayor promedio de alumno
procedure ProAlumno(arch_al:archa;n:integer);
var
j,c,m,i,suma:integer;
//matri:string[10];
t,mayor,prom:real;
// b:boolean;
begin
i:=1;
// b:=false;
c:=0;
writeln(':***El Mejor Promedio de Alumno***:');
// writeln('Teclea su Matricula:');
// readln(matri);
suma:=0;
while i<n do
begin
for m:=1 to 3 do
begin
suma:= suma + arch_al[i].matricula.cali[m];
c:=c+1;
end;
prom:=suma div 3;
writeln(prom);
vec[c]:=prom;
i:=i+1;
end;

j:=1;
mayor:=vec[j];
for c:=2 to n do
begin
if mayor < vec[c] then
mayor:=vec[c];
j:=c;
writeln(vec[c]);
end;
t:=vec[j];
writeln('El promedio es de ',arch_al[j].nombre,'' );
writeln(' es de ',t:2:2,'');
end;


end.
ayuda!!!1
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:ayuda urgente!!! desesperada con pascal

Publicado por martin (74 intervenciones) el 19/06/2010 20:20:06
Hola: No soy un experto en programación, solo un aficionado, pero creo que el algoritmo deberías desarrollarlo en un PROGRAMA y no en una UNIT. Así, el error que ahora mismo te da al correrlo es el 73 "falta una IMPLEMENTATION".

Espero te sirva de ayuda.
Un saludo.
Martín
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