home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / qpdemo / beispiel / period_s.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-08-24  |  1.9 KB  |  80 lines

  1.  
  2. PROGRAM Periodensystem;
  3.  
  4. USES Crt;
  5.  
  6. TYPE Elementtyp = RECORD
  7.             Name      : String [20];
  8.             Abk       : String [2] ;
  9.             Ordnzahl  : Integer;
  10.             Radioakt  : Boolean;
  11.             Atommasse : Real
  12.           END; { von Record }
  13.  
  14. VAR Element : ARRAY [ 1..118 ] OF Elementtyp;
  15.       n : Integer;
  16.      ch : CHAR;
  17.  
  18. PROCEDURE Sort (Modus , Ende : Integer);
  19.   VAR i, j : Integer;
  20.  
  21.   PROCEDURE Tausche (VAR a,b : Elementtyp);
  22.     VAR Hilf : Elementtyp;
  23.     BEGIN
  24.       Hilf := a;
  25.       a := b;
  26.       b := Hilf
  27.     END; { von Tausche }
  28.  
  29.   BEGIN
  30.     FOR i:=1 TO Ende-1 DO
  31.       FOR j:=Ende DOWNTO i DO
  32.     CASE Modus OF
  33.       1 : IF Element [i].Name > Element [j].Name THEN
  34.          Tausche ( Element [i] , Element [j] );
  35.       2 : IF Element [i].Atommasse > Element [j].Atommasse THEN
  36.          Tausche ( Element [i] , Element [j] )
  37.     END { von Case }
  38.   END; { Von Sort }
  39.  
  40. PROCEDURE Ausgabe ( Ende : Integer);
  41.   VAR i : Integer;
  42.   BEGIN
  43.     FOR i:=1 TO Ende DO WITH Element [i] DO BEGIN
  44.       Write (Ordnzahl:3, Name:20,Abk:4 ,'  Atommasse=',
  45.         Atommasse:8:4);
  46.       IF Radioakt THEN Write (' hat ') ELSE Write (' ohne ');
  47.       Writeln (' radioaktive Isotope')
  48.     END { von With }
  49.   END; { von Ausgabe }
  50.  
  51.  
  52. BEGIN { Hauptprogramm }
  53.   Writeln ('Eingabe der Daten: '); Writeln;
  54.   n := 0;
  55.   REPEAT
  56.     n := n + 1;
  57.     WITH Element [n] DO BEGIN
  58.     Ordnzahl := n;
  59.     Writeln (n:3 , '. Element:');
  60.     Write ('Name:        '); Readln (Name);
  61.     Write ('Abkürzung:  '); Readln (Abk);
  62.     Write ('Atommasse:   '); Readln (Atommasse);
  63.     Write ('Radioaktiv (J/N) ? '); ch:=ReadKey;
  64.     Radioakt := (ch='J') OR (ch='j');
  65.     Writeln; Writeln
  66.     END; { von with }
  67.     Write ('Weiter (J/N) ? '); ch:=ReadKey; Writeln
  68.     UNTIL (ch<>'J') AND (ch<>'j');
  69.     ClrScr;
  70.     Writeln ('Liste nach Namen sortiert: '); Writeln;
  71.     Sort (1,n);
  72.     Ausgabe (n);
  73.     Writeln; Writeln ('Eingabetaste drücken...');
  74.     Readln;
  75.     Writeln ('Liste nach Atommassen sortiert: '); Writeln;
  76.     Sort (2,n);
  77.     Ausgabe (n)
  78. END.
  79.  
  80.