[ Foro de Pascal ]

Problema en pascal

29-Mar-2017 02:35
Invitado (Aprendiz)
1 Respuestas

NECESITO AYUDA PARA ARREGLAR UN PROGRAMA EN PASCAL AYUDA POR FAVOR ES SOBRE ARREGLOS Y REGISTROS ESPERO ME PUEDAN AYUDAR
Hola espero que esten bien,las indicaciones son: Escribir un programa en Pascal que almacene en un array de registros los nombres de los alumnos, sus notas parciales y finales. Hallar la nota media y mostrar un mensaje de APTO si el alumno supera o iguala la calificación de 5 o NO APTO si no lo alcanza. Hacerlo para un número de 5 alumnos.
EL PROBLEMA ES QUE NECESITO QUE ESTE PROGRAMA ME PERMITE INGRESAR 3 CALF y no 2 ¿como le hago para poder ingresar 3 calf?

 
Program EJ009(Input, Output);
Uses Crt;
Const numalumnos = 5;
Type tiponotas = record
nombre: String;
parcial, final: real
end;
notasclase = array [1..Numalumnos] of tiponotas;
Var I3: notasclase;
nota1, nota2: real;
alumno: String;
index: integer;
Begin
ClrScr;
for index := 1 to numalumnos do
begin
write( Nombre de alumno( ,index, ):  );
readln(alumno);
write( Nota del examen parcial:  );
readln(nota1);
write( Nota del examen final:  );
readln(nota2);
writeln;
with i3[index] do
begin
nombre := alumno;
parcial := nota1;
final := nota2
end
end;
ClrScr;
writeln( NOMBRE  :30, Parcial :10, Final :10, Media :10,  CALIFICACION );
for index := 1 to 75 do write( - );
writeln;
for index := 1 to numalumnos do
with i3[index] do
begin
{Escribir la lista con los resultados.}
nota1 := (parcial+final)/2;
{Se calcula la media.}
write(nombre:30,parcial:10:2,final:10:2);
write(nota1:10:2);
{Si la nota media es superior a 5, el alumno est aprobado:}
if nota1 >= 5 then writeln(  *** APTO ***  )
else writeln(  NO APTO )
end;
readkey
end.
 


 


02-Apr-2017 13:12
Nacho Cabanes (+30)

No entiendo eso de que te permite ingresar 3 y no 2. Lo esperable es que te pida (y luego te muestre) 5 datos, que es el valor de la constante "NumAlumnos". En tu fuente se han perdido las comillas simples, pero corrigiendo eso, funciona correctamente (con 5 datos).

Un poco mejor tabulado, para que resulte más fácil de leer, podría quedar así:

 
Program EJ009(Input, Output); 
 
Uses Crt; 
 
Const 
    numalumnos = 5; 
 
Type 
    tiponotas = record 
        nombre: String; 
        parcial, final: real 
    end; 
    notasclase = array [1..Numalumnos] of tiponotas; 
 
Var 
    I3: notasclase; 
    nota1, nota2: real; 
    alumno: String; 
    index: integer; 
 
Begin 
    ClrScr; 
    for index := 1 to numalumnos do 
    begin 
        write( 'Nombre de alumno(' ,index, '): ' ); 
        readln(alumno); 
        write( 'Nota del examen parcial: ' ); 
        readln(nota1); 
        write( 'Nota del examen final: ' ); 
        readln(nota2); 
        writeln; 
        with i3[index] do 
        begin 
            nombre := alumno; 
            parcial := nota1; 
            final := nota2 
        end 
    end; 
    ClrScr; 
    writeln( 'NOMBRE ' :30, 'Parcial ':10, 
        'Final ':10, 'Media ':10,  'CALIFICACION '); 
    for index := 1 to 75 do 
        write( '-' ); 
    writeln; 
    for index := 1 to numalumnos do 
        with i3[index] do 
        begin 
            {Escribir la lista con los resultados.} 
            nota1 := (parcial+final)/2; 
            {Se calcula la media.} 
            write(nombre:30,parcial:10:2,final:10:2); 
            write(nota1:10:2); 
            {Si la nota media es superior a 5, el alumno est aprobado:} 
                if nota1 >= 5 then 
                    writeln(  '*** APTO ***'  ) 
                else 
                    writeln(  'NO APTO' ) 
        end; 
    readkey 
end.
 






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)