![]() Ласло Краус |
Програмирање I Други колоквијум 21. 1. 2002 |
|---|
Саставити главни програм на Pascal-у који прочита низ троуглова, проналази (независно од читања низа) и исписује највећу површину троуглова у низу, исписује дужине ивица свих троуглова који имају ту највећу површину и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност.
Саставити на Pascal-у главни програм који читајући низ бројева преко главног улаза направи скуп од њих и после испише садржај добијеног скупа уз истовремено уништавање листе.
unit MTrougao;
interface
type Trougao = record A,B,C: Real end;
procedure Citaj (var T: Trougao);
function P (T: Trougao): Real;
procedure Pisi (T: Trougao);
implementation
procedure Citaj (var T: Trougao);
begin
with T do ReadLn (A, B, C)
end {procedure Citaj};
function P (T: Trougao): Real;
var S: Real;
begin
with T do begin
S := (A + B + C) / 2;
P := Sqrt (S*(S-A)*(S-B)*(S-C))
end {with}
end {function P};
procedure Pisi (T: Trougao);
begin
with T do
WriteLn ('(', A:4:2, ',', B:4:2',
',', C:4:2, ')');
end {procedure Pisi};
end {unit}.
program Trouglovi;
uses MTrougao;
const MaxN = 100;
var A: array [1..MaxN] of Trougao;
B, Max: Real;
N, I: Integer;
begin {program}
repeat
Write ('Duzina niza? '); ReadLn (N);
if (N > 0) and (N <= MaxN) then begin
for I := 1 to N do begin
Write('Stranice trougla ',I,'? ');
Citaj (A[I]);
end {for};
Max := P (A[1]);
for I := 2 to N do begin
B := P (A[I]);
if B > Max then Max := B
end {for};
WriteLn ('Najveca povrsina: ', Max);
WriteLn ('Najvecu povrsinu imaju:');
for I := 1 to N do begin
if P (A[I]) = Max then begin
Pisi (A[I]); WriteLn;
end {if}
end {for}
end until (N <= 0) or (N > MaxN);
end {program}.
program Liste;
type Pok = ^Elem;
Elem = record
Broj: Real;
Sled: Pok;
end {record};
var Skup, Stari: Pok;
I, N: Integer;
Broj: Real;
procedure Ubaci(var Skup: Pok; Broj: Real);
var Tek, Preth, Novi: Pok;
begin
Tek:=Skup; Preth:=nil;
while (Tek <> nil) and
(Tek^.Broj <> Broj) do begin
Preth := Tek; Tek := Tek^.Sled
end;
if Tek = nil then begin
New (Novi);
Novi^.Broj := Broj;
Novi^.Sled := nil;
if Preth = nil then Skup := Novi
else Preth^.Sled := Novi;
end {procedure Ubaci};
begin {program}
Write ('Duzina niza? '); ReadLn (N);
Write ('Elementi niza? ');
Skup := nil;
for I := 1 to N do begin
Read (Broj); Ubaci (Skup, Broj);
end;
Write ('Skup= ');
while Skup <> nil do begin
Write (Skup^.Broj, ' ');
Stari := Skup;
Skup := Skup^.Sled;
Dispose (Stari);
end;
WriteLn;
end {program}.
program Roba;
type Zapis = record
Sifra: strin[6];
Datum: LongInt;
Cena, Kol: Real
end {record};
var Dat: file of Zapis;
Art: Zapis;
God, G, M, I: Integer;
Vred: array [1..12] of Real;
Rez: Text;
begin {program}
Assign(Dat,'Nabavke.dat'); Reset(Dat);
Write ('Godina? '); ReadLn (God);
for I := 1 to 12 do Vred[I] := 0;
while not Eof (Dat) do begin
Read (Dat, Art);
with Art do begin
G := Datum div 10000;
if G = God then begin
M := Datum div 100 mod 100;
Vred[M] := Vred[M] + Cena*Kol
end {if}
end {with}
end {while};
Close (Dat);
Assign(Rez,'Izvest.txt'); Rewrite(Rez);
for I := 1 to 12 do begin
WriteLn (Rez, I:2, Vredn[I]:12:2)
end {for};
Close (Rez)
end {program}.
(садржај)
Copyright © 2002, Laslo Kraus
Последња ревизија: 22.12.2002.