![]() Ласло Краус |
Програмирање I Други колоквијум 30. 1. 1999 |
---|
Саставити главни програм на Pascal-у који чита низове троуглова, налази (независно од читања низа) троугао са најманјим обимом и троугао са највећом површином и исписује странице нађених троуглова, све док за дужину низа не прочита недозвољену вредност.
Саставити главни програм Pascal-у који, коришћењем горњих потпрограма, прочита један низ бројева и испише их по убрнутом редоследу.
unit MTroug;
interface
type Troug = record A, B, C: Real end;
procedure Citaj (var T: Troug);
function O (T: Troug): Real;
function P (T: Troug): Real;
procedure Pisi (T: Troug);
implementation
procedure Citaj (var T: Troug);
begin
with T do ReadLn (A, B, C);
end {procedure Citaj};
function O (T: Troug): Real;
begin
with T do O := A + B + C;
end {function O};
function P (T: Troug): Real;
var S;
begin
S := O (T) / 2;
with T do
P := Sqrt (S*(S-A)*(S-B)*(S-C));
end {procdeure P};
procedure Pisi (T: Troug);
begin
with T do
WriteLn ('(', A:4:2, ',', B:4:2', ',', C:4:2, ')');
end {procedure Pisi};
end {unit}.
program Trouglovi;
uses MTroug;
const MaxN = 100;
var A: array [1..MaxN] of Troug;
Min, Max: Troug;
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};
Min := A[1]; Max := Min;
for I := 2 to N do begin
if O(A[I]) < O(Min) then
Min := A[I]
else if P(A[I]) > P(Max) then
Max := A[I]
end {for};
Write ('Najmanji obim ima: '); Pisi (Min);
Write ('Najvecu povrsinu 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: Pok;
function Citaj: Pok;
var Prvi, Posl, Novi: Pok;
N, I: Integer;
begin
Read (N); Prvi := nil;
for I := 1 to N do begin
Novi := New (Pok);
Read (Novi^.Broj);
Novi^.Sled := 0;
if Prvi = nil then Prvi := Novi
else Posl^.Sled := Novi;
Posl := Novi;
end {for};
Citaj := Prvi;
end {function Citaj};
function Obrni (L: Pok): Pok;
var Tek, Preth, Sled: Pok;
begin
Tek := L; Preth := nil;
while Tek <> nil do begin
Sled:=Tek^.Sled; Tek^.Sled:=Preth;
Preth:=Tek; Tek:=Sled;
end {while};
Obrni := Preth;
end {function Obrni};
procedure Pisi (L: Pok);
begin
while L <> nil do begin
Write (L^.Broj, ' ');
L := L^.Sled;
end {while};
WriteLn;
end {procedure Pisi};
begin {program}
Write ('Duzina i elementi niza? ');
L := Obrni (Citaj);
Write ('Obrnuti niz: '); Pisi (L);
end {program}.
program Studenti;
type Zapis = record
Ind: string[8];
Ime: string[32];
BrOc: 0..30;
Ocene: array[1..30] of record
Predm: string[5];
Ocena: 5..10
end {record};
end {record};
var Dat: file of Zapis;
Stud: Zapis;
Predm: string[5];
Uk, Br, I: Integer;
begin {program}
Assign (Dat, 'Studenti.dat');
repeat
Write ('Sifra predmeta? '); ReadLn (Predm);
if Predm <> '*' then begin
Reset (Dat); Br := 0; Uk := 0;
while not Eof (Dat) do begin
Read (Dat, Student); I := 1;
with Student do begin
while (I <= BrOc) and (Ocene[I].Predm<>Predm) do
I := I + 1;
if I (<= BrOc) and (Ocene[I].Ocena>5) then begin
Uk := Uk + Ocene[I].Ocena;
Br := Br + 1;
end {if};
end {with};
end {while}
if Br > 0 then
WriteLn ('Srednja ocena: ', (Uk / Br):4:2);
else
WriteLn('Niko nije polozio ispit');
end until Predmet = '*';
end {program}.
(садржај)
Copyright © 2000, Laslo Kraus
Последња ревизија: 23.1.2000.