DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦a43b9da65⟧ TextFile

    Length: 3456 (0xd80)
    Types: TextFile
    Names: »STATFIL.PAS«

Derivation

└─⟦08ea08c61⟧ Bits:30003924 PolyPascal programmer
    └─ ⟦this⟧ »STATFIL.PAS« 
└─⟦09235ab48⟧ Bits:30003065 Demoprogrammer K-Z til Pascal bog
    └─ ⟦this⟧ »STATFIL.PAS« 
└─⟦092727b26⟧ Bits:30005927 Demoprogrammer til Pascal bog (Jet-80)
    └─ ⟦this⟧ »STATFIL.PAS« 

TextFile

PROGRAM statfil;

  CONST
    max = 500;
   
  TYPE
    tabeltype = ARRAY(.1 .. max.) OF INTEGER;
    str14 = STRING(.14.);
    filtype = FILE OF INTEGER;
  
  VAR
    tabel, obs, hyp : tabeltype;
    filnavn : str14;
    indfil : filtype;
    i, j, n, antal, kumhyp, kvartil1, median, kvartil3 : INTEGER;
    mindstevaerdi, stoerstevaerdi, variationsbredde : INTEGER;
    sum, kvadratsum, middeltal, varians, spredning : REAL;
  
  PROCEDURE sorter(venstre, hoejre : INTEGER; VAR vektor : tabeltype);
          
    VAR
      naeste, i, j, midt, v, h : INTEGER;
    
    BEGIN
      FOR i:= venstre + 1 TO hoejre DO
        BEGIN
          naeste := vektor(.i.); (* naeste skal på plads *) 
          v := venstre;
          h := i - 1;
          WHILE v <= h DO
            BEGIN
              midt := (v + h) DIV 2;
              IF naeste < vektor(.midt.)
                THEN h := midt - 1
                ELSE v := midt + 1;
            END; (* WHILE *)
          FOR j := i - 1 DOWNTO v DO
            vektor(.j + 1.) := vektor(.j.);
          vektor(.v.) := naeste;
        END; (* FOR i *)
    END;
  
  BEGIN
    WRITE(CLRHOM);
    WRITE('Fra hvilken fil skal tallene indlæses: ');
    READLN(filnavn);
    ASSIGN(indfil, filnavn);
    RESET(indfil);
    i := 0;
    sum := 0.0;
    kvadratsum := 0.0;
    WHILE NOT EOF(indfil) DO
      BEGIN
        i := i + 1;
        READ(indfil, tabel(.i.));
        sum := sum + tabel(.i.);
        kvadratsum := kvadratsum + SQR(tabel(.i.));
      END;
    n := i;
    middeltal := sum / n;
    varians := (kvadratsum - sum * sum / n) / (n - 1);
    spredning := SQRT(varians);
    sorter(1, n, tabel);
    mindstevaerdi := tabel(.1.);
    stoerstevaerdi := tabel(.n.);
    variationsbredde := stoerstevaerdi - mindstevaerdi;
    kvartil1 := tabel(.ROUND(n / 4 + 0.49999).);
    median := tabel(.ROUND(n / 2 + 0.49999).);
    kvartil3 := tabel(.ROUND(n * 3 / 4 + 0.49999).);
    WRITELN;
    WRITELN('Observationssættets størrelse: ', n);
    WRITELN('Mindsteværdi:                  ', mindstevaerdi);
    WRITELN('Størsteværdi:                  ', stoerstevaerdi);
    WRITELN('Variationsbredde:              ', variationsbredde);
    WRITELN('Nedre kvartil:                 ', kvartil1);
    WRITELN('Median:                        ', median);
    WRITELN('Øvre kvartil:                  ', kvartil3);
    WRITELN('Middeltal:                     ', middeltal : 8 : 2);
    WRITELN('Varians:                       ', varians : 8 : 2);
    WRITELN('Spredning:                     ', spredning : 8 : 2);
    FOR i := 2 TO n DO
      hyp(.i.) := 0;
    j := 1;
    obs(.j.) := tabel(.1.);
    hyp(.j.) := 1;
    FOR i := 2 TO  n DO
      BEGIN
        IF tabel(.i.) <> tabel(.i - 1.)
          THEN
            BEGIN
              j := j + 1;
              obs(.j.) := tabel(.i.);
            END;
        hyp(.j.) := hyp(.j.) + 1;
      END;
    antal := j;
    kumhyp := 0;
    WRITELN;
    WRITELN('Obs.værdi   Hyppighed   Frekvens   Kum.Hyp.   Kum.Frekv.');
    WRITELN;
    FOR j := 1 TO antal DO
      BEGIN
        kumhyp := kumhyp + hyp(.j.);
        WRITELN(obs(.j.) : 6, hyp(.j.) : 13, hyp(.j.) / n : 12 : 2,
                kumhyp : 9, kumhyp / n : 13 : 2);
      END;
  END.
«eof»