![]() Ласло Краус |
Програмирање I Други колоквијум 25. 1. 2000 |
---|
Саставити главни програм на Pascal-у који чита низове квадара, налази (независно од читања низа) квадар са најмањом површином плашта и квадар са највећом запремином и исписује дужине ивица нађених квадара, све док за дужину низа не прочита недозвољену вредност.
Саставити на Pascal-у главни програм који прочита низ бројева и од њих направи листу уз очување редоследа читања, позива горњи потпрограм и исписше садржај добијених листи.
unit MKvadar;
interface
type Kvadar = record A,B,C: Real end;
procedure Citaj (var K: Kvadar);
function P (K: Kvadar): Real;
function V (K: Kvadar): Real;
procedure Pisi (K: Kvadar);
implementation
procedure Citaj (var K: Kvadar);
begin
with K do ReadLn (A, B, C);
end {procedure Citaj};
function P (K: Kvadar): Real;
begin
with K do P := 2 * (A*B + B*C + C*A);
end {function P};
function V (K: Kvadar): Real;
begin
with K do V := A * B * C;
end {procdeure V};
procedure Pisi (K: Kvadar);
begin
with K do WriteLn ('(', A:4:2, ',', B:4:2', ',', C:4:2, ')');
end {procedure Pisi};
end {unit}.
program Kvadri;
uses MKvadar;
const MaxN = 100;
var A: array [1..MaxN] of Kvadar;
Min, Max: Kvadar;
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('Ivice kvadra ',I,'? '); Citaj (A[I]);
end {for};
Min := A[1]; Max := Min;
for I := 2 to N do begin
if P(A[I]) < P(Min) then Min := A[I]
else if V(A[I]) > V(Max) then Max := A[I]
end {for};
Write ('Najmanju povrsinu ima: '); Pisi (Min);
Write ('Najvecu zapreminu ima: '); Pisi (Max);
end until (N <= 0) or (N > MaxN);
end {program}.
program Liste;
type Pok = ^Elem;
Elem = record
broj: Integer;
sled: Pok;
end {record};
var L, P, N: Pok;
I, K: Integer;
procedure PozNeg(L: Pok; var P,N: Pok);
var Pp, Nn, T: Pok;
begin
P := nil; N := nil; Pp := nil; Nn := nil;
while L <> nil do begin
T := L; L := L^.sled; T^.sled := nil;
if T^.broj > 0 then begin
if P = nil then P := T else Pp^.sled := T;
Pp := T;
end else if T^.broj < 0 then begin
if N = nil then N := T else Nn^.sled := T;
Nn := T;
end else
Dispose (T)
end {while};
end {procedure PozNeg};
begin {program}
Write ('Duzina niza? '); ReadLn (K);
Write ('Elementi niza? '); L := nil; P := nil;
for I := 1 to K do begin
New (N); Read (N^.broj); N^.sled := nil;
if L = nil then L := N else P^.sled := N;
P := N;
end;
PozNeg (L, P, N);
Write ('Veci od nule: '); L := P;
while L <> nil do begin
Write (' ', L^.broj); L := L^.sled;
end; WriteLn;
Write ('Manji od nule:'); L := N;
while L <> nil do begin
Write (' ', L^.broj); L := L^.sled;
end; WriteLn;
end {program}.
program Autobusi;
type Zapis = record
Datum: LongInt;
Vreme: Integer;
Odrediste: string[20];
Prevoznik: string[6];
Kapacitet, Prodato: Integer;
end {record};
var Dat: file of Zapis;
Polazak: Zapis;
Datum: LongInt;
Prevozn: string[6];
UkKapacitet, UkProdato: Integer;
Iskoriscenost: Real;
begin {program}
Assign(Dat,'Polasci.dat'); Reset(Dat);
Write ('Datum? '); ReadLn (Datum);
Write ('Prevoznik? '); ReadLn(Prevozn);
UkKapacitet := 0; UkProdato := 0;
while not Eof (Dat) do begin
Read (Dat, Polazak);
if (Polazak.Datum = Datum) and
(Polazak.Prevoznik = Prevozn) then begin
UkKapacitet := UkKapacitet + Polazak.Kapacitet;
UkProdato := UkProdato + Polazak.Prodato;
end {if}
end {while}
Close (Dat);
if UkKapacitet > 0 then
Iskoriscenost := UkProdato / UkKapacitet * 100
else
Iskoriscenost := 0;
WriteLn ('Ukupno prevezeno: ', UkProdato);
WriteLn ('Prosecna iskoriscenost: ', Iskoriscenost:4.2, '%');
end {program}.
(садржај)
Copyright © 2000, Laslo Kraus
Последња ревизија: 7.2.2000.