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

pomozite mi da resim zadatke u prologu

[es] :: Veštačka inteligencija :: pomozite mi da resim zadatke u prologu

[ Pregleda: 5378 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

slatko9
markovic sladjana
sudent,pmf
kragujevac

Član broj: 249010
Poruke: 7
*.vdial.verat.net.



Profil

icon pomozite mi da resim zadatke u prologu28.01.2010. u 19:17 - pre 173 meseci
1.Napisati proloski predikat Zbir_cifra(N,S) koji za ceo broj N odredjuje zbir cifara S tog broja.


2.Data je lista brojeva od kojih su neki markirani, na primer 5 4 1 3 7 4 9 3. Za ovakvu listu brojeva uvedena je konstanta mark koja oznacava da je broj koji se nalazi neposredno iza nje markiran, pa se prethodna list zapisuje kao [ 5,4,mark,1,3,mark,7,mark,4,9,3].Napisati proloski predikat koji listu zadatu na ovaj nacin formira dve sume: prva koja predstavlja sumu elemenata liste koji nisu markirani,I drugu koja predstavlja sumu markiranih elemenata liste.Za predhodnu listu rezultat bi bio 24 I 12.


3.Veliki brojevi se zapisuju u obljku lise koja ne pocinje nulom (npr 15928347000041 se zapisuje kao [1,5,9,2,8,3,4,7,0,0,0,0,4,1]). Napisati proloski predikat saberi(broj1,broj2,zbir) koji odredjuje zbir zadatih velikih brojeva broj1 I Broj2.
 
Odgovor na temu

Mzo
Milan Z.

Član broj: 17956
Poruke: 19
212.200.65.*



Profil

icon Re: pomozite mi da resim zadatke u prologu28.01.2010. u 21:06 - pre 173 meseci
1.Napisati proloski predikat Zbir_cifara(N,S) koji za ceo broj N odredjuje zbir cifara S tog broja.

Ako je N < 10 zbir cifara je N.
Ako je N >= 10, S je suma poslednje cifre sa sumom prethodnih cifara --- rekurentna postavka.

Code:

zbir_cifara(N,N):-N<10.
zbir_cifara(N,S):-N>=10, N1 is N//10, zbir_cifara(N1,K), S is K+(N mod 10).
 
Odgovor na temu

Mzo
Milan Z.

Član broj: 17956
Poruke: 19
212.200.65.*



Profil

icon Re: pomozite mi da resim zadatke u prologu28.01.2010. u 21:32 - pre 173 meseci
3.Veliki brojevi se zapisuju u obljku lise koja ne pocinje nulom (npr 15928347000041 se zapisuje kao [1,5,9,2,8,3,4,7,0,0,0,0,4,1]). Napisati proloski predikat saberi(broj1,broj2,zbir) koji odredjuje zbir zadatih velikih brojeva broj1 I Broj2.

Liste se prvo invertuju tako da svaka lista počinje cifrom najmanje težine.
inverz(L,R) vrši invertovanje liste L i rezultat smešta u R.


Code:

{ saberi(B1,B2,R) - Sabira dva broja zadata listom svojih cifara.
Prva cifra u listi je cifra najvece tezine.}
{==============================================================================}
saberi(Broj1,Broj2,Rez):-inverz(Broj1,InvBr1),inverz(Broj2,InvBr2),
                           saberi(InvBr1,InvBr2,0,[],Rez).
saberi([X|Y],[Z|U],Prenos,MedjuRez,Rez):- C is (X+Z+Prenos) mod 10,
                           NoviPrenos is (X+Z+Prenos)//10,
                           saberi(Y,U,NoviPrenos,[C|MedjuRez],Rez).
saberi([],[X|Y],Prenos,MedjuRez,Rez):-C is (X+Prenos) mod 10,
                           NoviPrenos is (X+Prenos)//10,
                           saberi([],Y,NoviPrenos,[C|MedjuRez],Rez).
saberi([X|Y],[],Prenos,MedjuRez,Rez):-
                           saberi([],[X|Y],Prenos,MedjuRez,Rez).
saberi([],[],1,MedjuRez,[1|MedjuRez]).
saberi([],[],0,MedjuRez,MedjuRez).
{==============================================================================}
inverz(L,R):-inverz(L,[],R).
inverz([],L,L).
inverz([X|Y],L,R):-inverz(Y,[X|L],R).
{==============================================================================}
 
Odgovor na temu

Mzo
Milan Z.

Član broj: 17956
Poruke: 19
212.200.65.*



Profil

icon Re: pomozite mi da resim zadatke u prologu28.01.2010. u 22:22 - pre 173 meseci
2.Data je lista brojeva od kojih su neki markirani, na primer 5 4 1 3 7 4 9 3. Za ovakvu listu brojeva uvedena je konstanta mark koja oznacava da je broj koji se nalazi neposredno iza nje markiran, pa se prethodna list zapisuje kao [ 5,4,mark,1,3,mark,7,mark,4,9,3].Napisati proloski predikat koji listu zadatu na ovaj nacin formira dve sume: prva koja predstavlja sumu elemenata liste koji nisu markirani,I drugu koja predstavlja sumu markiranih elemenata liste.Za predhodnu listu rezultat bi bio 24 I 12.

Code:

sumiraj([mark,X|L],Sum1, Sum2):- sumiraj(L, Sum11, Sum22),
                                 Sum1 is Sum11,
                                 Sum2 is Sum22 + X.
sumiraj([X|L],Sum1,Sum2):- not(X = mark),
                           sumiraj(L, Sum11, Sum22),
                           Sum1 is Sum11 + X,
                           Sum2 is Sum22.
sumiraj([],0,0).
 
Odgovor na temu

[es] :: Veštačka inteligencija :: pomozite mi da resim zadatke u prologu

[ Pregleda: 5378 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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