|
|
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 - metrics - 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»