Visa elektrotehnicka skola, Beograd
Ласло Краус
Програмирање I
Други колоквијум
21. 1. 2002

Задаци: 1 2 3 | Напомене | Решења: 1 2 3

Поставка задатка 1 (50 поена) (решење | садржај)

Троугао се представља у облику записа који садржи дужине страница троугла. Саставити на Pascal-у програмски модул који садржи потпрограме за читање дужине страница троугла, израчунавање површине троугла и исписивање дужинa страница троугла (три броја унутар пара заграда који су раздвојени зарезима).

Саставити главни програм на Pascal-у који прочита низ троуглова, проналази (независно од читања низа) и исписује највећу површину троуглова у низу, исписује дужине ивица свих троуглова који имају ту највећу површину и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност.

Поставка задатка 2 (50 поена) (решење | садржај)

Саставити на Pascal-у потрограм за уметање једног броја у скуп реалних бројева који је представљен у облику једноструко уланчане листе.

Саставити на Pascal-у главни програм који читајући низ бројева преко главног улаза направи скуп од њих и после испише садржај добијеног скупа уз истовремено уништавање листе.

Поставка задатка 3 (50 поена) (решење | садржај)

Бинарна секвенцијална датотека о набавкама робе за сваки артикал садржи шифру артикла (низ од највише 8 знакова), датум набавке (велики цели број који датум садржи по шеми ggggmmdd), јединичну цену (реални број) и количину (реални број). Саставити на Pascal-у главни програм за одређивање вредности набављене робе по месецима за задату годину. Тражену годину треба прочитати преко главног улаза. Резултате треба уписати у секвенцијалну текстуалну датотеку.

Напоменe (садржај)


Решење задатка 1 (поставка | садржај)

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}.

Решење задатка 2 (поставка | садржај)

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}.

Решење задатка 3 (поставка | садржај)

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}.
(садржај)
         
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs

Copyright © 2002, Laslo Kraus
Последња ревизија: 22.12.2002.