Pascal/Turbo Pascal - Ayuda novato

   
Vista:

Ayuda novato

Publicado por Fran (3 intervenciones) el 12/05/2008 17:00:43
A ver si alguien me puede resolver unas dudillas de una práctica que tengo que resolver.

Os adjunto el enunciado y lo que he hecho yo..a ver si me podeis echar un cable.

Boletín de notas

Definir los tipos de datos
Inicializar la tabla, consiste en inicializar la tabla a un valor , elegiremos –1 , este será el valor por defecto cuando por ejemplo el alumno no se presente a examen
Rellenar la tabla,se solicitarán las notas de los alumnos por asignatura
Media de una asignatura,dada una asignatura calcular la media en esa asignatura
Dada una asignatura devolver el numero de alumnos no presentados, suspensos y aprobados.
Dado un alumno, determinar en que asignatura obtiene la nota mas alta
Dado un alumno calcular la media de ese alumno
Escribir el/los alumno/s y las asignaturas en las que hayan sacado la nota mas alta,
Escribir un menu para manejar de forma clara los subprogramas definidos en los apartados anteriores..

PROGRAM Boletin;

const

TamanoClase=20;

type

tAlumnos=1..TamanoClase;
tAsignaturas=(Informatica,Algebra,Calculo,Economia,Estadistica);
tTabla=array[tAlumnos,tAsignaturas] of real;
tMediaAlumnos=array[tAlumnos] of real;
tMediaAsignaturas=array[tAsignaturas]of real;
tNotaMasAltaAlumno=array[tAlumnos] of real;
tNoPresentados=array[tAsignaturas] of integer;
tAprobados=array[tAsignaturas] of integer;
tSuspensos=array[tAsignaturas] of integer;

var
opcion:integer;
Asignatura:tAsignaturas;
Notas:tTabla;
M_Alumnos:tMediaAlumnos;
M_Asignatura:tMediaAsignaturas;
Alta_Alumno:tNotaMasAltaAlumno;
No_Presentados:tNoPresentados;
Aprobados:tAprobados;
Suspensos:tSuspensos;

procedure LeerNotas(var N:tTabla);

var
As:tAsignaturas;
Al:tAlumnos;

begin

for Al:=1 to TamanoClase do
begin
write('Introduzca las 5 calificaciones del alumno ',Al:2);
for As:=Informatica to Estadistica do
Read(N[Al,As]);
end;

end;

procedure MediasPorAsignatura (var N:tTabla;var Medias:tMediaAsignaturas;var As:tAsignaturas);

var suma:real;
Al:tAlumnos;
c:char;
begin

write('Deme asignatura');
Readln(c);
case 'c' of
'I','i':As:=Informatica;
'A','a':As:=Algebra;
'C','c':As:=Calculo;
'E','e':begin
readln(c);
case 'c' of
'C','c':As:=Economia;
'S','s':As:=Estadistica;

end;

suma:=0;

for Al:=1 to TamanoClase do

begin
suma:=suma+N[Al,As];
Medias[As]:=Suma/TamanoClase;
end;

write('La media de la asignatura ',c:14, 'es de' ,Medias[As]:4:2);
end;
end;
end;

procedure AprobadosSuspensos (var N:tTabla;var aprobados,suspensos:integer);

var As:tAsignaturas;
Al:tAlumnos;
c:char;
begin

Aprobados:=0;
Suspensos:=0;
write('Deme asignatura');
Readln(c);
case 'c' of
'I','i':As:=Informatica;
'A','a':As:=Algebra;
'C','c':As:=Calculo;
'E','e':begin
readln(c);
case 'c' of
'C','c':As:=Economia;
'S','s':As:=Estadistica;

end;

for Al:=1 to TamanoClase do
if N[Al,As]>=5 then aprobados:=aprobados+1
else suspensos:=suspensos+1;
writeln('El numero de aprobados de la asignatura ',c:14, 'es',aprobados,' y el de suspensos es ',suspensos);
end;
end;
end;

Procedure NotaMasAltaDeUnAlumno(var N:tTabla;var Al:tAlumnos);
var AsAlta,As:tAsignaturas;
Alta:real;

begin
write('Deme el alumno');
read(Al);
AsAlta:=Informatica;
Alta:=N[Al,Informatica];
for As:=Informatica to Estadistica do
begin
if Alta<N[Al,As] then
AsAlta:=As;
Alta:=N[Al,As];
end;
writeln('La nota mas alta del alumno ',Al:2, 'es : ', Alta:4:2, 'y pertenece a la asignatura de ',As:15);
end;

Procedure MediasPorEstudiante (var N:tTabla;Medias:tMediaAlumnos;var Al:tAlumnos);
var suma:real;
As:tAsignaturas;

begin
writeln('Dime el alumno');
read(Al);
suma:=0;
for As:=Informatica to Estadistica do
begin
suma:=suma+N[Al,As];
Media[Al]:=Suma/5;
end;
writeln('La media del alumno ', Al:2, 'es :', Media:4:2);
end;

Procedure Menu;

writeln('Menu principal');
writeln;
writeln('1-Introducir notas');
writeln;
writeln('2-Media de una asignatura');
writeln;
writeln('3-Aprobados y suspensos de una asignatura');
writeln;
writeln('4-Nota mas alta dado un alumno');
writeln;
writeln('5-Medias por estudiante');
writeln;
writeln('6-Fin');
writeln;
write('Introduzca su eleccion (1,2,3,4,5,6)->');
readln(opcion);
writeln
end;

begin
repeat
menu;
case opcion of
1:LeerNotas;
2:MediasPorAsignatura;
3:AprobadosSuspensos;
4:NotaMasAltaDeUnAlumno;
5:MediasPorEstudiante;
6:
end;
until opcion =6;
end.

Muchas gracias de verdad.Un CORDIAL SALUDO.
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 novato

Publicado por Dani (159 intervenciones) el 12/05/2008 17:57:07
Líneas 142 y 144 de lo que has copiado: no existe el identificador MEDIA

Línea 149: no has puesto el BEGIN en el procedimiento del menú

Línea 128: no puedes imprimir enumerados, y es lo que intentas en esta línea

Puedes corregir estos errores consultando un libro o manual de Pascal, si después tienes más problemas pregunta :)

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