Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zadatak u PAscalu

[es] :: Pascal / Delphi / Kylix :: Zadatak u PAscalu

[ Pregleda: 4711 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Cruonit
Teo Demidzic
root

Član broj: 7963
Poruke: 37
*.as54.sa-ma.bih.net.ba.

Sajt: sa.wireless.ba


Profil

icon Zadatak u PAscalu03.02.2003. u 09:01 - pre 258 meseci
Bili neko znao rjesiti ovaj zadatak u pascalu:

Unosimo 7 brojeva.Prvi broj je cilj.Ostalih 6 brojeva su proizvoljni brojevi i mogu se
sabirati, oduzimati,djeliti, mnoziti medusobno da se dobije ciljani broj.Svaki od 6 brojeva se moze samo jednom koristiti. Moras napisati program koji aranzira te brojeve tako da daju ciljani broj koristeci: +,-,*,/,( ).

Primjer:

Cilj=235

8
7
5
25
4
3


(25) + (((8*7*5)/4)*3) = 235

kome nevalja zna đe su vrata
 
Odgovor na temu

Riste Pejov
Team Leader/Senior Software Developer @
Ein-Sof ltd Skopje
Skopje, Macedonia

Član broj: 128
Poruke: 571
62.162.102.*

Jabber: richie@bagra.net.mk
ICQ: 154236769
Sajt: riste.softver.org.mk


Profil

icon Re: Zadatak u PAscalu03.02.2003. u 09:13 - pre 258 meseci
Dali se moraju iskoristiti svi 6 brojevi da bi doslo do ciljneg?
ili je moguce da u slucaju kad samo dva ispunjavaju uslov, ta dva da budu resenje.

People who think they know everything tend to irritate those of us who do.
 
Odgovor na temu

Cruonit
Teo Demidzic
root

Član broj: 7963
Poruke: 37
*.bih.net.ba

Sajt: sa.wireless.ba


Profil

icon Re: Zadatak u PAscalu03.02.2003. u 19:26 - pre 258 meseci
ne... treba svih 6 koristiti !
kome nevalja zna đe su vrata
 
Odgovor na temu

Cruonit
Teo Demidzic
root

Član broj: 7963
Poruke: 37
*.as54.sa-ma.bih.net.ba.

Sajt: sa.wireless.ba


Profil

icon Re: Zadatak u PAscalu04.02.2003. u 08:47 - pre 258 meseci
Rjesio sam ovaj "djelimicno" ali ne i pravo ideja je bila da napraavim program koji generira sve moguce varijacije sa tih 6 brojeva i expotuje ga u .pas file medutim to je dosta primitivno rjesene i ne moze se smatrati rjesenjom tog zadatka.... Zato bi vas zamalio ako mozete da ga rjesite (ps. ovo je olimpijski zadatak)
kome nevalja zna đe su vrata
 
Odgovor na temu

Riste Pejov
Team Leader/Senior Software Developer @
Ein-Sof ltd Skopje
Skopje, Macedonia

Član broj: 128
Poruke: 571
62.162.102.*

Jabber: richie@bagra.net.mk
ICQ: 154236769
Sajt: riste.softver.org.mk


Profil

icon Re: Zadatak u PAscalu04.02.2003. u 08:54 - pre 258 meseci
Code:

function find_sum(nums array[1..6] of int;
                         used array[1..6] of bool;
                         cilj,sum,level int;
                         var formula string):string;
var
    k,sum:int;
    finish:bool;
begin
for k:=1 to 6 do
    begin
    if not(used[k]) then
            begin
               used[k]:=true;    
               for operation:=1 to 4 do
                    begin
                    case operation of
                           1:begin
                              sum:=sum+nums[k];
                              formula:='('+formula+'+'+nums[k]+')';
                              end;
                           2:begin
                              sum:=sum-nums[k];
                              formula:='('+formula+'-'+nums[k]+')';
                              end;
                           3:begin
                              sum:=sum*nums[k];
                              formula:='('+formula+'*'+nums[k]+')';
                              end;
                           4:begin
                              sum:=sum/nums[k];
                              formula:='('+formula+'/'+nums[k]+')';
                              end;
                         end;
                    inc(level);
                    if(level<6)
                    formula:=find_sum(nums,used,cilj,sum,level,formula)
                    else if (sum=cilj)
                           writeln(formula);

                    end; //operation end
            end; //if not used end
     end;//for end
     
end;

//glavni program
// inicijalizacija array-a iskoriscenosti
for m:=1 to 6 do
    used[m]:=false;

// glavni loop
for m:=1 to 6 do
    begin
    level:=1;
    sum:=nums[m];
    used[m]:=true;
    test:=find_sum(nums,used,cilj,sum,level,formula);
    end;    


Kao sto si vec video, moras prvo sam podeliti niz na promenljivu zvanu cilj, i ostatak niza sa 6 clanova.
Ideja je da u glavnom loop-u, startujes funkciju po jednom za svakog clana niza, i onda funkcija rekurzivno da preleti preko celog niza i pokusa sve moguce kombinacije. Malo je apsurdno resenje da jednostavno isprinta formulu usred rekurzije, ali to mozes modifikovati da povratni parametar iz funkcije bude prava formula. Uglavnom ovo bi trebalo uz malo modifikacije da radi. (jedino mozda nisam napisao pravu pascal deklaraciju fukcije)

People who think they know everything tend to irritate those of us who do.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Zadatak u PAscalu

[ Pregleda: 4711 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.