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.
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


0