{TESTE DA CORRIDA (RUN TEST)} uses wincrt; Type Vetor1 = Array[1..150] of Longint; Vetor2 = Array[0..150] of Real; Var semente: double; {Variavel utilizada pela RAND2} N, I, J, X, Alfa, SVobs, GVobs: Longint; U, U1: Double; D, Maior, Cat, Mais, Menos, gl : Integer; SVesp, Quic, QuicT, SQuic, GVesp, Param, P : Real; Cor : Vetor1; Vesp, A : Vetor2; {$I RAND2.PAS} Function Fatorial(Number : Double): Double; VAR valor : Double; Kounter : longint; BEGIN valor := 1; FOR Kounter := Trunc(Number) DOWNTO 1 DO valor := Valor * Kounter; Fatorial := valor; END; {***************************************************} Begin Writeln('Quantos Numeros ?'); Readln(N); Mais := 0; Menos := 0; Writeln('Qual a semente ? (1 - 2147483646) '); Readln(semente); Writeln('Escolha nivel de significancia (alfa) --> 1, 5 ou 10 %'); Readln(Alfa); If Alfa = 5 then Begin Param := 1.6449; end else Begin If Alfa = 1 then Begin Param := 2.3263; end else Begin If Alfa = 10 then Begin Param := 1.2816; end else Begin Writeln('Nivel de significancia ERRADO !'); Exit; end end end; Clrscr; U := Rand2; U1 := Rand2; If U1 < U then Menos := 1 Else Mais := 1; For I := 1 to 150 do Begin Cor[I] := 0; end; For I:= 3 to N do Begin U := Rand2; If (U > U1) and (Mais <> 0) then Mais := Mais + 1; If (U <= U1) and (Menos <> 0) then Menos := Menos +1; If (U > U1) and (Mais = 0) then Begin Cor[Menos] := Cor[Menos] + 1; Menos := 0; Mais := 1; end; If (U <= U1) and (Menos = 0) then Begin Cor[Mais] := Cor[Mais] + 1; Menos := 1; Mais := 0; end; U1 := U; End; If Mais <> 0 then Cor[Mais] := Cor[Mais] + 1; If Menos <> 0 then Cor[Menos] := Cor[Menos] + 1; For I := 1 to 150 do Begin P := I; Vesp[I] := ((P * P) + 3 * P + 1) * N; Vesp[I] := 2 * (Vesp[I] - ((P * P * P) + 3.0 * (P * P) - P - 4)); Vesp[I] := Vesp[I] / Fatorial(P + 3.0); If Vesp[I] < 0.001 Then Vesp[I] := 0.0; end; Cat := 150; While (Vesp[Cat] = 0.0) do Begin Cat := Cat - 1; End; SVesp := 0.0; SVobs := 0; Quic := 0.0; gl := 0; For I := 1 to Cat do Begin SVesp := SVesp + Vesp[I]; SVobs := SVobs + Cor[I]; if SVesp > 5.0 then Begin gl := gl + 1; SQuic := SQR(SVobs - SVesp); SQuic := SQuic / SVesp; GVesp := SVesp; GVobs := SVobs; Quic := Quic + SQuic; SVobs := 0; SVesp := 0.0; End; End; If SVesp <> 0 then Begin Quic := Quic - Squic; SVesp := SVesp + GVesp; SVobs := SVobs + GVobs; SQuic := (SQR(SVobs - SVesp) / SVesp); Quic := Quic + SQuic; End; gl := gl - 1; QuicT := 1.-(2./(9.*gl))+(Param*SQRT(2./(9.*gl))); QuicT := QuicT * QuicT * QuicT; QuicT := gl * QuicT + 0.005; Writeln('---------------------------------------'); Writeln('Quantidade de Numeros = ',N); Writeln('Alfa = ',Alfa,'%'); Writeln('Graus de Liberdade = ',gl); Writeln('QuiQuadrado Calc = ', Quic:8:2); Writeln('QuiQuadrado Tab Aprox = ', QuicT:8:2); Writeln('---------------------------------------'); End.