Plantee e implemente un programa en PASCAL, a base de procedimientos y funciones y gestionado por menú, para insertar las notas de los alumnos de prácticas (20 como máximo), modificarlas si es necesario y mostrarlas por pantalla agrupadas de N en N según desee el usuario.
PROGRAM tar(input,output);
CONST
alumnos = 20;
TYPE
Tficha = RECORD
nombre:string(15);
nota:integer;
end;
TAFicha = Array[1..alumnos] OF Tficha;
VAR
ficha:TAFicha;
(*******************************************************************************)
PROCEDURE leer;
VAR
I:integer;
BEGIN
FOR I:=1 TO alumnos DO
BEGIN
write('Introduzca el nombre del alumno:');
readln(ficha[I].nombre);
write('Introduzca la nota del alumno:');
readln(ficha[I].nota);
END;
END;
(*******************************************************************************)
PROCEDURE modificar;
VAR
I:integer;
BEGIN
FOR I:=1 TO alumnos DO
BEGIN
write('Introduzca la nueva nota de ',ficha[I].nombre);
readln(ficha[I].nota);
END;
END;
(*******************************************************************************)
PROCEDURE ordenar1;
VAR
I,J,inter:integer;
BEGIN
FOR j:=1 TO 20 DO
BEGIN
FOR I:=1 TO alumnos DO
IF ficha[I].nota >ficha[I+1].nota THEN
BEGIN
inter:=ficha[I].nota;
ficha[I].nota:=ficha[I+1].nota;
ficha[I+1].nota:=inter;
END;
END;
FOR I:=1 TO alumnos DO
writeln(ficha[I].nota);
END;
(*******************************************************************************)
PROCEDURE ordenar2;
VAR
I,J,inter:integer;
BEGIN
FOR j:=1 TO 20 DO
BEGIN
FOR I:=1 TO alumnos DO
IF ficha[I].nota <ficha[I+1].nota THEN
BEGIN
inter:=ficha[I].nota;
ficha[I].nota:=ficha[I+1].nota;
ficha[I+1].nota:=inter;
END;
END;
FOR I:=1 TO alumnos DO
writeln(ficha[I].nota);
END;
(*******************************************************************************)
PROCEDURE menu;
VAR
a:char;
BEGIN
REPEAT
BEGIN
writeln('[A] Introducir nombres y notas de los alumnos');
writeln('[B] Modificar notas de los alumnos');
writeln('[C] Mostrar notas ordenadas de mayor a menor');
writeln('[D] Mostrar notas ordenadas de menor a mayor');
writeln('[s] Abandonar el programa');
readln(a);
CASE a OF
'A','a' : leer;
'B','b' : modificar;
'C','c' : ordenar2;
'D','d' : ordenar1;
OTHERWISE writeln('Error, opcion no valida');
END;
END;
UNTIL a = 's'
END;
(*******************************************************************************)
BEGIN
menu;
END.
Ejemplo de ejecucion
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario