miércoles, 14 de diciembre de 2011

Ejercicio 22(Arrays)

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




No hay comentarios:

Publicar un comentario

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | GreenGeeks Review