|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 3456 (0xd80) Types: TextFile Names: »STATFIL.PAS«
└─⟦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«
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»