Zadatak 1.
#include <stdio.h>
int min(int a,int b)
{
return (a<b)?a:b;
}
void main()
{
int d[20],r[20],n,i,p,g,put = 0;
printf("Unesite broj gradova : ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Unesite rastojanje izmedju grada %d, i grada %d :",i,(i+1)%n);
scanf("%d",d+i);
put += d[i];
r[i] = 0;
}
printf("Unesite redni broj grada za koji se traze minimalna rastojanja : ");
scanf("%d",&g);
p = 0;
for(i=0;i<n;i++)
{
r[(g+i)%n] = min(p,put - p);
p += d[(g+i)%n];
}
printf("Minimalna rastojanja :\n");
for(i=0;i<n;i++)
printf("Rastojanje od grada %d je %d\n",i,r[i]);
}
Zadatak 2.
#include <stdio.h>
typedef struct
{
int i,j,visina;
} TVrh;
void razmeni(TVrh *v1,TVrh *v2)
{
TVrh pom;
pom = *v1;
*v1 = *v2;
*v2 = pom;
}
int specmin(int v,int u)
{
if(v == -1) return u;
else return (v<u)?v:u;
}
int vrh(int a[][5],int n,int m,int i,int j, int *vis)
{
int p = 1,v = -1;
if(i>0)
if(a[i-1][j] >= a[i][j]) p = 0;
else v = a[i][j] - a[i-1][j];
if(i<n-1)
if(a[i+1][j] >= a[i][j]) p = 0;
else v = specmin(v,a[i][j] - a[i+1][j]);
if(j>0)
if(a[i][j-1] >= a[i][j]) p = 0;
else v = specmin(v,a[i][j] - a[i][j-1]);
if(j<m-1)
if(a[i][j+1] >= a[i][j]) p = 0;
else v = specmin(v,a[i][j] - a[i][j+1]);
*vis = v;
return p;
}
void main()
{
int a[5][5],n,m,i,j,b = 0,vis;
TVrh vrhovi[100];
printf("Unesite dimenzije matrice : \n");
scanf("%d%d",&n,&m);
printf("Unesite elemente matrice : \n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(vrh(a,n,m,i,j,&vis))
{
vrhovi[b].i = i;
vrhovi[b].j = j;
vrhovi[b].visina = vis;
b++;
}
for(i=0;i<b-1;i++)
for(j=i+1;j<b;j++)
if(vrhovi[i].visina < vrhovi[j].visina)
razmeni(vrhovi+i,vrhovi+j);
printf("Vrhovi sortirani po visini :\n");
for(i=0;i<b;i++)
printf("vrh (%d,%d), visina %d\n",vrhovi[i].i,vrhovi[i].j,vrhovi[i].visina);
}
Zadatak 3.
(define (s n)
(if (= n 0) 0
(+ (modulo n 10) (s (quotient n 10)))
)
)
(define (f n)
(+ n (s n))
)
(define (nadji n m)
(nadipom (n m 0)
)
(define (nadjipom n m i)
(cond ((= n m) (list n i))
((> n m) (nadjipom n (f m) i))
(t (nadjipom (f n) m (+ i 1)))
)
)
Zadatak 4.
resi([],[]).
resi([G|R],L) :- lista[G], resi(G,L1), resi(R,L2), spoji(L1,L2,L).
resi([G|R],[G|R1]) :- moze(G), resi(R,R1).
resi([G|R],L) :- resi(R,L).
lista([]).
lista([G|R]).
moze(X) :- s(X,S), obrni(X,0,Y), O1 is X mod S, O2 is Y mod S, O1 == O2.
obrni(0,X,X).
obrni(X,Yp,Y) :- X1 is X mod 10,X2 is X // 10, Yp1 is Yp*10+X1, obrni(X2,Yp1,Y).
spoji([],L,L).
spoji([G|R],L,[G|R1]) :- spoji(R,L,R1).