[ febro @ 03.11.2010. 22:18 ] @
Pozdrav !
Dobili smo zadatak da racunamo vrijednost x ako imamo zadane parametre :

f(x) = { x+10 ; x > 100
{ f(x+10) ; x <= 100
Ako je x manji od 100, dodaje mu se vrijednost sve dok mu se njegova konačna vrijednost ne popne iznad 100 i onda se ispisuje rezulat, a ako je x veci od 100, dodaje mu se samo 10.
Napravio sam program s ponavljanjem koji to izracunava i tocan je, ali zadatak koji smo nakon toga dobili jeste da napravimo taj isti program BEZ koristenja ponavljanja i naredbi grananja.
Uglavnom, nemam uopće ideju kako započeti, kojim načinom to uopće riješiti, pa bih zamolio nekog iskusnijeg programera da mi da neke smjernice :)


P.S.
Zadatak koji sam napisao izgleda ovako :

Code:
PROGRAM pilasta_funkcija ;
USES    crt;
VAR     x,y: real;
LABEL   A,B;

BEGIN
ClrScr;
       WriteLn('Unesi broj x ');
       Write('X:',' ');
         ReadLn(x);

        IF x > 100 THEN BEGIN
B:        y:=x+10;
          WriteLn('                   ');
          Write('Rijesenje =  ', y:0:2);
        END;

       IF x <= 100 THEN BEGIN
A:        x:=x+10;
           IF x<=100 THEN GOTO A;
           IF x>100  THEN GOTO B;
        WriteLn('                    ');
        Write  ('Rijesenje = ', x:0:2);
       END;
      ReadLn
END.


[ Picsel @ 03.11.2010. 23:58 ] @
Cudno, ali evo resenja
Code:
var x,y:real;
begin
Write('Unesi broj x: ');
Readln(x);
y:=ord(x<100)*(110+(trunc(x) mod 10)+x-trunc(x))+ord(x>=100)*(x+10);
Write('Resenje = ',y:0:2);
Readln;
end.
[ febro @ 04.11.2010. 10:01 ] @
Citat:
Picsel: Cudno, ali evo resenja
Code:
var x,y:real;
begin
Write('Unesi broj x: ');
Readln(x);
y:=ord(x<100)*(110+(trunc(x) mod 10)+x-trunc(x))+ord(x>=100)*(x+10);
Write('Resenje = ',y:0:2);
Readln;
end.


OK, svaka čast :D
Jel mi možeš malo pojasniti koji ti je bio pristup, jer ne kuzim baš iz ovoga što si radio XD
funkcija "ord" mi nije bas jasna :D
[ captPicard @ 04.11.2010. 11:56 ] @
Evo :)
[ febro @ 04.11.2010. 12:14 ] @
XD
Znaci sa "ord" je dobio trenutnu vrijednost (poziciju) X-a.
OK , sad kuzim, al mi jos uvijek nije jasan ovaj dio iza prvog "ord"-a

Code:
(110+(trunc(x) mod 10)+x-trunc(x))


ne vidim matematički smisao zbrajanja 110 sa modom decimalnog dijela x-a
:S

ili sam jednostavno glup XD

ako tko zna, molio bih ga da mi malo pojasni :P
[ Picsel @ 04.11.2010. 17:04 ] @
Trunc daje ceo deo broja x. Trunc(123.456)=123
Mod 10 je poslednja cifra broja x pre tacke.
x-trunc(x) je deo nakon decimalne tacke.
[ febro @ 04.11.2010. 18:27 ] @
Citat:
Picsel: Trunc daje ceo deo broja x. Trunc(123.456)=123
Mod 10 je poslednja cifra broja x pre tacke.
x-trunc(x) je deo nakon decimalne tacke.


sad mi je jasno :)
Hvala na pomoći