RE:pascal, notas, promedios
Bien, no me aclara mucho. El código fuente tiene unos cuantos errores de sintaxis, faltan algunos punto y coma y al menos un identificador está mal escrito.
Pero la lógica del programa no la entiendo ya desde el enunciado:
Supongamos que trabajamos con un solo alumno. De ese alumno hay que almacenar 7 notas (acá hay que poner un array de 7 posiciones), 4 de ellas representan el 15% de la nota final, 2 notas representan el 25% y la restante el 35%. ¿Cómo hago 100% con estos número?:
(15*4)+(25*2)+35=145 (mal)
o bien:
15+25+35=75 (mal)
o bien:
15+(25*2)+35=100 (bien)
----*El enunciado está mal expresado*----
Ahora bien ¿qué nota corresponde a qué porcentaje?. Voy a suponer que le pido al usuario que primero ingrese las 4 notas que todas juntas son el 15%, luego que ingrese las dos notas que cada una de ellas representan el 25% y por último la nota que es el 35%.
Luego de esto hay que determinar si aprobó o no, pero ¿qué quiterio uso?, ¿cómo se sabe que un alumno aprueba o no?, ¿aprueba con más de 5, con más de 6? (¿qué calificación se usa?).
Ok, veamos que sale de todo esto:
type
TNotas=Array[1..7] of real;
TAlumno=record
Nombre: string;
Notas: TNotas;
end;
var
Alumno: TAlumno;
procedure Ingreso(A: TAlumno);
var
i: integer;
begin
WriteLn('Ingrese el nombre del alumno: ');
ReadLn(A.Nombre);
WriteLn('A continuación ingrese las cuatro notas que juntas representan el 15%');
for i:=1 to 4 do
ReadLn(A.Notas[i]);
WriteLn('A continuación ingrese las dos notas que cada una representan el 25%');
for i:=5 to 6 do
ReadLn(A.Notas[i]);
WriteLn('A continuación ingrese la nota que representa el 35%');
ReadLn(A.Notas[7]);
end;
function Promedio(A: TAlumno): real;
begin
Promedio:=((A.Notas[1]+A.Notas[2]+A.Notas[3]+A.Notas[4])*0.15)+(A.Notas[5]*.0.25)+(A.Notas[6]*.0.25)+(A.Notas[7]*.0.35);
end;
begin
Ingreso(Alumno);
WriteLn('La nota final de ',Alumno.Nombre,' es ',Promedio(Alumno):5:2);
end.
Hasta acá puedo llegar.