![]() Ласло Краус |
Програмирање - испити Допунски други парцијални 28.3.1998 |
---|
где су (xi, yi) (i=1, 2, ..., n) координате тачака кроз које пролази посматрани полином реда n-1.
Саставити главни програм на Pascal-у који прочита низ од n парова координата тачака и врши табелирање одговарајућег Lagrange-овог полинома за xmin ≤ x ≤ xmax са кораком Δx.
Саставити главни програм на Pascal-у који чита низове тачака, уређује их на основу њихових одстојања од координатног почетка и исписује их по том редоследу све док за дужину низа не прочита недозвољену вредност.
program Lagrange;
type Niz = array [1..100] of Real;
var XX, YY: Niz;
I, N: Integer;
X, Xmin, Xmax, Dx: Real;
function P (XX, YY: Niz; N: Integer; X: Real): Real;
var I, J: Integer; A, B: Real;
begin
A := 0;
for I := 1 to N do begin
B := YY[I];
for J := 1 to N do
if j <> i then
B := B * ( X - XX[J]) / (XX[I] - XX[J]) ;
A := A + B;
end;
P := A;
end;
begin {glavni program}
Write ('Broj tacaka? '); ReadLn (N);
Write ('Parovi koordinata? ');
for I := 1 to N do Read (XX[I], YY[I]);
ReadLn;
Write ('Xmin, Xmax, Dx? '); ReadLn (Xmin, Xmax, Dx);
WriteLn;
X := Xmin;
while X <= Xmax do begin
WriteLn (X:8:2, P(XX,YY,N,X):8:2);
X := X + Dx
end
end.
unit MTacke;
interface
const KAP = 100
type Tacka = record X, Y, Z: Real; end;
Niz = array[1..KAP] of Tacka;
function Rast (P, Q: Tacka): Real;
procedure Sort (A:Niz; N:Integer);
implementation
function Rast (P, Q: Tacka): Real;
begin
Rast = Sqrt (Sqr(P.X-Q.X) +
Sqr(P.Y-Q.Y) + Sqr(P.Z-Q.Z));
end;
procedure Sort (A:Niz; N:Integer);
var T, Org: Tacka; R: Real; I, J: Integer;
begin
Org.X:=0; Org.Y:=0; Org.Z:=0;
for I := 2 to N do begin
T := A[I]; R := Rast (T, Org);
J := I-1;
while ((J>0) and (Rast(A[J],Org)<R) do begin
A[J+1] := A[J]; J := J - 1
end;
A[J+1] := T;
end;
end;
end.
program Tacke;
uses MTacke;
var A: Niz;
I, N: Integer;
Kraj: Boolean;
begin
repeat
Write ('Duzina niza? '); ReadLn (N);
Kraj := (N <= 0) or (N > KAP);
if not Kraj then begin
for I:=1 to N do begin
Write('Tacka broj ',I,'? '); with A[I] do ReadLn (X,Y,Z)
end;
Sort (A, N); WriteLn;
for I := 1 to N do
with A[I] do WriteLn (X:6:2, Y:6:2, Z:6:2)
end;
until Kraj;
end;
program Studenti;
type Zapis = record
Ind: string[8];
Ime: string[32];
BrOc: 0..25;
Ocene: array [1..25]
of 5..10;
end;
var Dat: file of Zapis;
Stud: Zapis;
Ukupno, Broj, Uk, Br: Integer;
Srednje: Real;
Pao: Boolean;
Ime: string[12];
begin
Write ('Ime datoteke? '); ReadLn (Ime); Assign (Dat, Ime);
Reset (Dat); Ukupno:=0; Broj:=0;
while not Eof (Dat) do begin
Read (Dat, Stud);
Pao := False; Uk := 0; Br := 0;
with Stud do
for I := 1 to BrOc do
if Ocene[I] > 5 then begin
Uk := Uk + Ocene[I]; Br := Br + 1
end else Pao := True;
if not Pao then begin
Ukupno := Ukupno + Uk; Broj := Broj + Br;
end;
end;
if Broj > 0 then Srednja := Ukupno / Broj
else Srednja := 0;
WriteLn ('Ukupna srednja ocena: ', Srednja:4:2);
end.
(садржај)
Copyright © 1998, Laslo Kraus
Последња ревизија: 2.10.1998.