[ zoran_ets @ 22.06.2011. 11:55 ] @
zadatak je...
1)Šta ispisuje sledeći program na programskom jeziku Pascal?
Code:

program Zad(output);
var
  a, b: integer;

procedure p(var a: integer; c: integer);
begin
  a := a + 1;
  b := b * 2;
  if b < 11 then
    p(a, c);
  b := b div 2;
  c := c - 1;
  write(output, a, b, c);
  a := a + 1
end;

begin
  a := 5;
  b := 1;
  p(b, a)
end.


program treba da ispise 11114664334
ja sam ga ovako resavao a i b dobiju vrednosti 5 i 1,pozovem proceduru ,e sada a sam shvatio kao pokazivac,znaci vrednost na sta pokazuje a u glavnom programu a to je b se uveca za 1,pa je b sada u glavnom programu 2 i onda b=b*2 pa je b= 4pa pozovem proceduru ali sada mi a pokazuje na a u glavnom programu i tako vrtim... ce se ne menja sve dok ne ispadnem iz if petlje...e da i kad ispadnem zi petlje gde ce se program nastaviti da bi nastavio dalje ispisivanje...
Code:

program rekurzija(output);
var
  a, b, c: integer;

function f(var c, d: integer): integer;
begin
  if c > 1 then
  begin
    a := a - 3;
    c := c - 4;
    f := f(a, c) + 3
  end
  else if d < 5 then
  begin
    d := d - 3;
    c := c + 8;
    f := f(d, a) + 2
  end
  else
    f := 1
end;
begin
  a := 4;
  b := 7;
  c := 9;
  writeln(output, f(b, c))
end.



e sada oved mi nije jasno f := f(a, c) + 3 znam da f(a,c) poziva funkciju ali ne znam sta ce tu biti povratna vrednost funkcije...
3)Koja od sledeće tri procedure na ispravan način u dvostruko ulančanu listu, iza elementa na koji
pokazuje tek, ubacuje novi element na koji ukazuje pokazivač n? Pretpostaviti da tek nije nil i da
element na koji ukazuje pokazivač n već postoji.

Code:

a)
procedure u1(tek, n: ^elem);
begin
  n^.sl := tek^.sl;
  n^.pr := tek;
  if tek^.sl <> nil then
    tek^.sl^.pr := n;
  n^.pr^.sl := n;
end;

b)
procedure u2(tek, n: ^elem);
begin
  n^.sl := tek^.sl;
  if tek^.sl <> nil then
    tek^.sl^.pr := n;
  n^.pr := tek^.sl^.pr;
  tek^.sl := n;
end;

c)
procedure u3(tek, n: ^elem);
begin
  tek^.sl := n;
  n^.sl := tek^.sl;
  n^.pr := tek;
  if tek^.sl <> nil then
    tek^.sl^.pr := n;
end;

e sada odgovor je pod a,ja sam to crtao ali nije mi jasno bas najbolje...(sliku 1)
4)Šta ispisuje sledeći program na programskom jeziku Pascal?
Code:

program presek(output);
const
  max = 6;
  br = 10;
type
  skup = set of 1..255;
  skupovi = array[1..max] of skup;
var
  sk: skupovi;
  i: integer;
begin
  for i := 1 to max do
    sk[i] := [];
  for i := 1 to br do
    sk[i mod max + 1] := sk[i mod max + 1] + [i];
  for i := 1 to max do
    sk[i] := sk[i] + sk[i mod max + 1];
  for i := 1 to br do
    if i in sk[1] then
      write(output, i);
end.


kod ovog zadatka mi nije jasno sta petlja for i:=1 to max,tacnije kolko je to max,da li je to ustvari 255 ili vec neki drugi broj ,zatim for i := 1 to br do koliko je br... koliko sam razumeo sk:=[] pravi prazan skup...i ako moze dodatno objasnjenje do kraja... resenje je 167...


edit (savkic) Salji formatiran kod, mnogo je lakse videti o cemu se radi u kodu i kod pisi u okviru code tagova.


[Ovu poruku je menjao savkic dana 22.06.2011. u 14:40 GMT+1]
[ savkic @ 22.06.2011. 20:50 ] @
> program treba da ispise 11114664334

To i ispisuje. Ne razumem šta je zapravo pitanje.


> e sada oved mi nije jasno f := f(a, c) + 3 znam da f(a,c) poziva funkciju ali ne znam sta ce tu biti povratna vrednost funkcije...

To je isto što i Result := f(a, c) + 3, dakle Result (krajnja vrednost fukcije F) je vrednost koju vraća rekurzivno pozvana f sa nekim drugim parametrima, zavisno od parametara F može biti pozvana i stotinu puta pre nego vrati vrednost.

> kod ovog zadatka mi nije jasno sta petlja for i:=1 to max,tacnije kolko je to max,da li je to ustvari 255 ili vec neki drugi broj ,

Max je definisan kao konstanta sa vrednošću 6, dakle kao da je napisano for i := 1 to 6 do...

> zatim for i := 1 to br do koliko je br...

br je isto konstana, sa vrednošću 10.

> koliko sam razumeo sk:=[] pravi prazan skup...

...inicijalizuje niz setova (skupova) na prazan skup.

i ako moze dodatno objasnjenje do kraja... resenje je 167...

Zatim ide neko dodeljivanje vrednosti elemntima skupa, (i mod max) + 1 je isto što i (ostatak od deljenja i sa 6) + 1, šta se tu tačno radi i koja je svrha teško je reći, ako imaš pogledaj tekst zadatka.
[ zoran_ets @ 23.06.2011. 10:39 ] @
E ovako ovo su skraceni zadaci ,a meni se na ispitu trazi da resim takav zadatak (nemamo kompijuer, na papiru se radi )imam ponudjeno tri odgovora i trebam da zaokruzim jedno od njih ,a nisam vidovit :) tako da ne mogu da zaokruzujem na srecu :) pa moram da resim zadatak... prvi zadatak je sa jednog roka ,dato je resenje ,ali nije dat postupak pronalazenja resenje,a ja sam bio zasto kod tog zadatka... hvala za ostale zadatke....