Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 13

1.

Napisati f-ju koja permutuje parove uzastopnih elemenata npr: ‘(1 2 3 4 5) se transformiše u ‘(2 1 4 3
5).

2.Napisati f-je za generisanje niza savršenih brojeva. Broj je savršen ukoliko je jednak zbiru svojih
delilaca izuzev samog sebe. Npr. broj 6 je savršen jer 1+2+3=6. Lista prvih nekoliko izgleda ovako:
[6,28, 496, 8128, 33550336…]

3.Napisati f-ju koja briše sve sekvence istih brojeva neparne dužine, inače ih ostavlja nepromenjene
npr: ‘(1 1 1 2 2 3 4 4 5 5 5 5 5) se transformiše u ‘(2 2 4 4)

4.Napisati f-je za generisanje niza nizova prostih brojeva, tako da je svaki sledeći podniz duži za jedan
element:[[1], [1, 3], [1, 3, 5], [1, 3, 5, 7], [1, 3, 5, 7, 11], [1, 3, 5, 7, 11, 13], …]

5.F-ja računa zbir prvih N fibonačijevih brojeva, gde se N zadaje kao argument. Npr. Za N=5:a0=0,
a1=1, a2=1, a3=2, a4=3, pa je zbir 0+1+1+2+3=7

6.Definisati f-ju grupisi. Ona prihvata listu brojeva i vraća listu podlisti istih uzastopnih brojeva. Npr:
(grupisi ‘(1 1 2 2 2 3 1 1 1 2 3 3)) ->'((1 1) (2 2 2) (3) (1 1 1) (2) (3 3))

7.Napisati f-ju koja uvećava za jedan svaki element koji je deljiv sa svojim prethodnikom, pritom se za
proveru deljivosti koriste originalne vrednosti elemenata liste, a ne potencijalno izmenjene
dodavanjem jedinice. Npr. :(z1 '(4 8 3 6 12 2 1 2)) -> (4 9 3 7 13 2 1 3)

8.Implementirati f-ju koja eliminiše sve sekvence istih brojeva dužine jednake tom broju. Npr.:
(z3 [1, 1, 2, 3, 3, 2, 2, 2, 8, 7, 1, 4, 4, 4, 4, 2, 1]) -> [2, 3, 3, 2, 8, 7, 2]

9.Implementirati funkciju za ucesljavanje dve liste. Npr. za liste L1=[1,3,5] iL2=[2,4,6,8,10,12],rezultat je


lista L3=[1,2,3,4,5,6,8,10,12]

10.Napisati funkciju koja za dve zadate liste vraca dužinu najduže zajedničke podsekvence. Npr:
(makspodsekv ‘(4 1 2 5 6 3 4 9) ‘(5 6 1 2 5 8 6 3 4)) -> 3

11.Napisati funkciju koja za zadatu listu vrada sve njene (ne strogo) rastuce podliste uključujuci i
praznu listu i podliste sa samo jednim elementom.Redosled elemenata liste je pritom očuvan, a
izlazni rezultat ne mora biti identičan kao u primeru, bitno je samo da sve podliste postoje.

Npr:(rastpodliste ‘(4 1 2 5))-> (() (4) (1) (2) (5) (4 5) (1 2) (1 5) (1 2 5))

12.Napisati funkciju koja računa determinantu date kvadratne matrice predstavljenu listom listi.
Pretpostaviti da de data matrica biti kvadratna. Dimenzija matrice je proizvoljna. Npr:determinanta
[[1,4,5,2],[3,5,2,1],[2,4,2,5],[1,2,5,2]] -> 106 det(A)=ad-bc

13.Napisati funkciju koja za dve zadate liste u kojima nema duplikata (skupovi), vraca njihovu
simetričnu razliku. Nije bitna uređenost elemenata u rezultatu. Npr:(simrazl ‘(5 7 9 1 3) ‘(2 4 1 8 9))->
‘(5 7 3 2 4 8) (A\B)U(B\A)

14.Napisati funkciju koja računa uniju preseka svih uzastopnih podlisti neke liste. Pretpostaviti da su
sve liste zapravo skupovi, dakle, nema duplikata.

(unijapreseka ‘((1 4 2) (6 7 2) (8 4 2 6)))-> ‘((2) (6 2)) -> ‘(2 6)


15.Napisati funkciju koja računa zbir elemenata koji se nalaze na „okviru“ matrice, tj. elemenata koji
desno, levo, iznad ili ispod sebe nemaju drugi element. Npr:trag [[1,2,3,4],[5,6,7,8],[9,10,11,12]] ->65

16.Napisati funkciju koja prihvata listu podlisti, a na izlazu ispisuje listu podlisti koja se dobija
uređivanjem glavne liste. Pravilo uređenja za dve unutrašnje podliste glasi: podlista prethodi drugoj
podlisti ukoliko ima kradu najdužu sekvencu istih uzastopnih brojeva. Npr:

(z1 ’((1 2 2 2 6 4 4) (1 2 3 1 1 2) (5 2 5))) -> ((5 2 5) (1 2 3 1 1 2) (1 2 2 2 6 4 4)) => NIJE MATRICA TJ ISTOG
FORMATA???

17.Napisati funkciju koja prihvata listu podlisti, a potom na svakoj od podlisti primenjuje operaciju
uprosečavanja. Uprosečavanje se vrši tako što se elementu na poziciji i dodeli prosečna vrednost
elemenata na pozicijama: i-1, i, i+1. U slučaju da je element na poziciji 0 ili na poslednjoj poziciji, prosek
se računa za dva elementa: prvi i drugi odnosno poslednji i pretposlednji. Npr: (z1 ’((1 2 2) (1 2 3 1) (5 2
5)))-> ((1.5 1.67 2) (1.5 2 2 2) (3.5 4 3.5))

18.Napisati funkciju koja prihvata listu celih brojeva, a na izlazu ispisuje broj lokalnih maksimuma koji
su u njoj pojavljuju. Nprz1 ’(-1 5 3 2 45 4 34 46 2 87 97 1 3 0 -2 4 5 77 77 66)) -> 7

19.Implementirati funkciju koja za listu listi neodređene dubine ispisuje neku od najdužih listi neparne
dužine.z2 [[5,6],[7,8,9],[7,8,1,2, [6,7,4,2,5]],4,[1,2,3]] ->[6,7,4,2,5] ili [[5,6],[7,8,9],[7,8,1,2,
[6,7,4,2,5]],4,[1,2,3]]

20.Funkcija prihvata listu prirodnih brojeva i potom iz nje izbacuje sve brojeve čiji je kvadrat
predstavljen kao neparna suma cifara. Npr. za broj 7, suma cifara kvadrata je 4+9=13 što je neparno
pa bi broj 7 trebao da bude izbačen: h1 [5,3,1,4,11,8,9]= [11,8]

21. Funkcija prihvata dve liste. Jedna je lista realnih vrednosti dok druga sadrži cele brojeve. Lista celih
brojeva defniše intervale, pri čemu je svaki interval je zatvoren sa leve, a otvoren sa desne strane.
Formirati histogram – listu brojeva koja prikazuje redom broj pojavljivanja realnih vrednosti svakom
od intervala. Pretpostaviti da će lista celih brojeva uvek biti korektno predstavljena rastućim nizom
celih brojeva.Test primer:h1 [[2, 3.2, 5, 7.7, 8.9, 11.2, 14.3, 2.3, 6.7, 8.9], [-2, 2, 6, 9, 11, 14]]= [0, 4, 4, 0, 1]
(pojašnjenje: u interval [-2, 2) nije upao ni jedan realan broj, u [2, 6) su upala četiri broja: 2, 3.2, 5 i 2.3,
itd.)

22.Funkcija prihvata kao ulazni argument listu podlisti gde je svaka podlista sačinjena od 4 broja. Prvi i
drugi broj predstavljaju jedno teme pravougaonika,a treći i četvrti drugo teme koje se nalazi
dijagonalno od prvog temena. Napisati funkciju koja pronalazi površinu najvećeg pravougaonika. h1
[[2,2,4,3],[5,4,7,1],[3,4,2,5]] = 6

23.Ulazni argument funkcije je matrica predstavljenja kao lista listi (pretpostaviti da je matrica
kvadratna). Napisati funkciju koja računa sumu neparnih elemenata koji se nalaze striktno iznad
glavne dijagonale.Test primer:h1 [[1,2,3,4],[5,6,7,8],[9,10,11,12],[0,1,2,5]] = 10

24.Napisati funkciju koja korišćenjem funkcija višeg reda formira zbir svih podbrojeva dužine k datog
broja.Drugi 124313 3 -> 31 [124,243,431,313]->7+9+8+7=31
25.Napisati funkciju koja na osnovu zadate liste podlisti realnih brojeva i zadatog broja K formira listu
koja sadrži samo one podliste koje imaju prosečnu vrednost veću od realnog broja K.Dodatno, kao
poslednji element svake od tih podlisti se dodaje dobijena prosečna vrednost. Obavezna je

upotreba bar jedne ugrađene funkcije višeg reda.Drugi [[5, 6, 7],[1.2, 5, 7],[1, 1.9, 2.8, 3],[5, 6, 8, 4, 3]]
5.1 = [[5,6,7,6],[5,6,8,4,3,5.2]]

26.Eliminisati iz date liste sve parne trocifrene brojeve.p1([53,2,2,6,3,460,245,23,46442,2521,998],X):-


X=[53,2,2,6,3,245,23,46442,2521]

27.Napisati predikat koji za zadati pozitivan broj N, formira listu svih pozitivnih brojeva manjih od N
koji su deljivi sa zbirom svojih cifara. Npr.:p1(100, X):- X=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 18, ...]

28.Napisati predikat koji iz zadate liste uklanja sve strogo opadajuće sekvence uzastopnih
brojeva:p2([3, 5, 1, 2, 4, 4, 34, 33, 21, 21, 43],X):- X = [3, 2, 4, 5, 21, 43]

29.Predikat koji zadatu listu transformiše u listu parova, gde je prva koordinata para redni broj
odgovarajućeg broja u zadatoj listi, a druga sam broj iz zadate liste.p1([5,2,11,2,4],X):- X=[[1,5],[2,2],
[3,11],[4,2],[5,4]].

30.Program koji iz zadate liste uklanja sve brojeve deljive sa svojim prethodnikom.
p1([5,2,10,5,5,8,7,14,28,78,45],X):- X=[5,2,5,8,7,78,45]

31.Predikat koji vrši zamenu mesta prvoj i drugoj polovini liste oko centralnog elementa. Pretpostaviti
da će data lista uvek imati neparan broj elemenata:p2([1,3,6,2,18,5,2,2,1],X):- X = [5,2,2,1,18,1,3,6,2]

32.Napisati program koji iz zadate liste uklanja sve proste brojeve.Npr.:p1([5,2,10,5,5,8,7,19,78,45],X):-


X=[10,8,78,45]

33.Napisati program koji iz zadate liste uklanja sve sekvence uzastopnih brojeva koji u zbiru daju broj
N, koji se zadaje kao argument:p2([1,3,6,2,18,5,2,2,1,2,5,2,6,9],8,X):-X = [1,3,18,5,2,2,9]

34.Predikat koji iz liste listi neograničene dubine izdvaja sve parne elemente i smešta ih u listu,tj
izbaciti neparne brojeve:’ p3([2,[6,[3,1],9],6,[7,2,[5,[8],8]],9,3],X):-X=[2,6,6,2,8,8].

35.Napisati predikat koji iz zadate liste izbacuje sekvence od po N neparnih brojeva, gde se N zadaje
kao drugi argument. Npr.:p1([1,3,5,2,5,5,17,7], 3, X):- X=[2,7].

36.Predikat koji vrši eliminaciju svih sekvenci istih brojeva neparne dužine. Npr.elimnep([1, 1, 1, 2, 2, 3,
4, 4, 4, 4, 5, 5, 5, 5, 5])->[2, 2, 4, 4, 4, 4]

37.Predikat koji izbacuje sve elemente koji su manji od prosečnog elementa liste npr.[1,2,3,4,5]->
[3,4,5]

38.Program koji svaki paran uzastopan podniz istih elemenata eliminiše, a u slučaju neparnog
uzastopnog podniza ostavlja samo jedan element. Npr. [2,2,2,1,3,3] -> [2,1]

23. #include<stdio.h>
void unos(int n,int a[][n]){

for(int i=0;i<n;i++)

for(int j=0;j<n;j++){

printf("unesi A[%d%d]",i,j);

scanf("%d",&a[i][j]);

void ispis(int n,int a[][n]){

for(int i=0;i<n;i++){

for(int j=0;j<n;j++)

printf("%d\t",a[i][j]);

printf("\n");

int suma(int n,int a[][n]){

int suma=0;

for(int i=0;i<n;i++)

for(int j=i+1;j<n;j++)

if(a[i][j]%2!=0)

suma+=a[i][j];

return suma;

int main(){

int n;

printf("n=");

scanf("%d",&n);

int a[n][n];

unos(n,a);

ispis(n,a);

printf("%d",suma(n,a));

return 0;

7. int unos(int a[],int n){


printf("unesi brojeve: ");

for(int i=0;i<n;i++)

scanf("%d",&a[i]);

int ispis(int a[],int n){

for(int i=0;i<n;i++)

printf("%d ",a[i]);

printf("\n");

void niz(int n,int a[]){

for(int i=1;i<n;i++)

if(a[i]%a[i-1]==0)

a[i]++;

int main(){

int n,i;

printf("n=");

scanf("%d",&n);

int a[n];//4 8 3 6 12 2 1 2-->4 9 3 7 13 2 1 3

unos(a,n);

niz(n,a);

ispis(a,n);

return 0;

9.

#include <stdio.h>

#define MAX_BR_ELEMENATA 50

int main(){

int a[]={2, 4, 8, 11, 19, 30};

int na=sizeof(a)/sizeof(int);

int b[]={1, 3, 9, 12};


int nb=sizeof(b)/sizeof(int);

int c[MAX_BR_ELEMENATA];

int nc=na+nb;

int i, j, k;

/* sve dok ima elemenata i u nizu a i u nizu b ... */

for(i=0, j=0, k=0; i<na && j<nb; ){

/* uporedjujemo tekuci element niza a sa tekucim elementom niza b i u niz c smestamo onaj koji je manji*/

if(a[i]<b[j]){

c[k]=a[i];

k++;

i++;

else{

c[k]=b[j];

k++;

j++;

/* ako je ostalo jos elemenata u nizu a prepisujemo ih */

for( ; i<na; ){

c[k]=a[i];

k++;

i++;

/* ili ako je ostalo jos elemenata u nizu b prepisujemo ih */

for( ; j<nb; ){

c[k]=b[j];

k++;

j++;

}
/* ispisujemo elemente rezultujuceg niza c */

for(i=0; i<k; i++){

printf("%d ", c[i]);

printf("\n");

return 0;

20. #include<stdio.h>

int unos(int a[],int n){

printf("unesi brojeve: ");

for(int i=0;i<n;i++)

scanf("%d",&a[i]);

int ispis(int a[],int n){

for(int i=0;i<n;i++)

printf("%d ",a[i]);

printf("\n");

int suma(int n){

int x=n*n;

int suma=0;

while(x>0){

int c=x%10;

suma+=c;

x/=10;

if(suma%2==0)

return 1;

return 0;

}
int main(){

int n,i,j;

printf("n=");

scanf("%d",&n);

int a[n];//5 3 1 4 11 8 9--> 11 8

unos(a,n);

for(i=0,j=0;i<n;i++)

if(suma(a[i])==1){

a[j]=a[i];

j++;

n=j;

for(i=0;i<n;i++)

printf("%d ",a[i]);

printf("\n");

return 0;

30. #include<stdio.h>

int unos(int a[],int n){

printf("unesi brojeve: ");

for(int i=0;i<n;i++)

scanf("%d",&a[i]);

int ispis(int a[],int n){

for(int i=0;i<n;i++)

printf("%d ",a[i]);

printf("\n");

int main(){

int n,i,j;

printf("n=");

scanf("%d",&n);

int a[n];//5 2 10 5 5 8 7 14 28 78 45-->5,2,5,8,7,78,45

unos(a,n);
for(i=0,j=0;i<n;i++)

if(a[i]%a[i-1]!=0){

a[j]=a[i];

j++;

n=j;

for(i=0;i<n;i++)

printf("%d ",a[i]);

printf("\n");

return 0;

2. int main(){

int n,i;

int suma=0;

for(n=1;n<100;n++){

for( i=1;i<=n/2;i++)

if(n%i==0){

suma+=i;

if(suma==n){

printf("%d ",n);

suma=0;

return 0;

29. #include<stdio.h>

int unos(int a[],int n){

printf("unesi brojeve: ");

for(int i=0;i<n;i++)

scanf("%d",&a[i]);

}
int ispis(int a[],int n){

for(int i=0;i<n;i++)

printf("%d ",a[i]);

printf("\n");

int main(){

int n,i,j,m,suma=0;;

scanf("%d",&n);

int a[n];

unos(a,n);

for(int i=0;i<n;i++)

printf("[%d%d] ",i,a[i]);

printf("\n");

return 0;

15. #include<stdio.h>

void unos(int n,int a[][n]){

for(int i=0;i<n;i++)

for(int j=0;j<n;j++){

printf("unesi A[%d,%d]",i,j);

scanf("%d ",&a[i][j]);

void ispis(int n,int a[][n]){

for(int i=0;i<n;i++){

for(int j=0;j<n;j++)

printf("%d \t",a[i][j]);

printf("\n");

int suma_kolone(int i,int n,int a[][n]){

int suma=0;

for(int k=0;k<n;k++)

suma+=a[k][i];
return suma;

int suma_vrste(int i,int n,int a[][n]){

int suma=0;

for(int k=1;k<n;k++)

suma+=a[i][k];

return suma;

int suma_kolone_(int i,int n,int a[][n]){

int suma=0;

for(int k=1;k<n;k++)

suma+=a[k][i];

return suma;

int suma_vrste_(int i,int n,int a[][n]){

int suma=0;

for(int k=1;k<n-1;k++)

suma+=a[i][k];

return suma;

int main(){

int n;

printf("n=");

scanf("%d ",&n);

int a[n][n];

unos(n,a);

ispis(n,a);

//printf("Kolone: %d\n",suma_kolone(0,n,a));

//printf("Vrste: %d\n",suma_vrste(0,n,a));

//printf("Kolone posljednje: %d\n",suma_kolone_(n-1,n,a));

//printf("Kolone posljednje: %d\n",suma_vrste_(n-1,n,a));

printf("%d",suma_kolone(0,n,a)+suma_vrste(0,n,a)+suma_kolone_(n-1,n,a)+suma_vrste_(n-1,n,a));

return 0;

2. #include<stdio.h>
int main(){

int n,i,j,m,suma=0;;

for(n=1;n<=20;n++){

int a=n;

while(a>0){

int c=a%10;

suma+=c;

a/=10;

if(n%suma==0)

printf("%d ",n);

suma=0;

return 0;

24.

#include<stdio.h>

#include<math.h>

int main(){

int n,k,broj=0;

int suma=0,suma1=0;

printf("n=");

scanf("%d",&n);//124313 ,3 -> 31 ;[124,243,431,313]->7+9+8+7=31

printf("k=");

scanf("%d",&k);

int a=n;

while(n>((int)(pow(10,k-1)+0.5))){

int m=n%(int)(pow(10,k)+0.5);

printf("m=%d\n",m);

while(m>0){

int c=m%10;

suma1+=c;

m/=10;

}
suma+=suma1;

suma1=0;

n/=10;

printf("Suma je:%d\n",suma);

return 0;

You might also like