Zadatak 1.
#include <stdio.h>
int broji(int n,int b,int ch)
{
int p = 0;
while(n)
{
p += (n % b) == ch;
n /= b;
}
return p;
}
void main()
{
int n, b, i, ch, m = 0, p;
char c;
printf("Unesi c : "); scanf("%c",&c);
printf("Unesi n : "); scanf("%d",&n);
if((c >= '0')&&(c <= '9')) ch = c - '0';
if((c >= 'A')&&(c <= 'J')) ch = c - 'A' + 10;
b = 0;
for(i = (ch > 1)?(ch+1):2;i<=20;i++)
{
p = broji(n,i,ch);
if(p>m) { b = i; m = p;}
}
if(b)
printf("Cifra %c se u zapisu broja %d javlja najvise puta u bazi %d.\n",c,n,b);
else
printf("Cifra %c se u zapisu broja %d ne javlja ni u jednoj bazi\n",c,n);
}
Zadatak 2.
#include <stdio.h>
int dodi[4] = {-1,0,1,0};
int dodj[4] = {0,1,0,-1};
int livada[20][20];
int m,n,i0,j0;
typedef struct
{
int i,j,smer;
} TPolje;
TPolje PredjenaPolja[1600];
void citaj()
{
int i,j,p,x,y;
printf("Unesi dimenzije livade (m,n) : ");scanf("%d%d",&m,&n);
for(i=0;i<n;i++) for(j=0;j<m;j++) livada[i][j] = 0;
printf("Unesi broj prepreka : "); scanf("%d",&p);
printf("Unesi koordinate prepreka : \n");
for(i=0;i<p;i++)
{
scanf("%d%d",&x,&y);
livada[x][y] = 1;
}
printf("Unesi pocetnu poziciju krave na livadi (i,j) : ");
scanf("%d%d",&i0,&j0);
}
int moze(int i, int j,int smer)
{
int x,y;
x = i + dodi[smer];
y = j + dodj[smer];
return (x >= 0) && (x < n) && (y >= 0) && (y < m) && (livada[x][y] != 1);
}
int jednake(TPolje a, TPolje b)
{
return (a.i == b.i)&&(a.j == b.j)&&(a.smer == b.smer);
}
int pripada(TPolje p, TPolje niz[], int n)
{
int nadjen = 0, i = 0;
while(!nadjen && (i < n))
if(jednake(p,niz[i])) nadjen = 1;
else i++;
return nadjen;
}
void main()
{
int smer = 0, br = 0, nadjen = 0, i,j, pom = 0;
TPolje tren;
citaj();
i = i0; j = j0;
while(!nadjen)
{
if(moze(i,j,smer))
{
tren.i = i;
tren.j = j;
tren.smer = smer;
if(pripada(tren,PredjenaPolja,br)) nadjen = 1;
else
{
PredjenaPolja[br++] = tren;
i += dodi[smer];
j += dodj[smer];
}
}
else smer = (smer + 1) % 4;
}
i = 0;
while(!pom)
{
if(jednake(tren,PredjenaPolja[i])) pom = 1;
else i++;
}
printf("Put se ponavlja posle %d koraka, a duzina puta je %d\n",br,br-i);
}
Zadatak 3.
(define (glavna l)
(if (null? l) nil
(sredi l 1 (car l) nil)
)
)
(define (sredi l trenbr elem rez)
(cond ((null? (cdr l)) (dodaj trenbr elem rez))
((= (cadr l) elem) (sredi (cdr l) (+ 1 trenbr) elem rez))
(t (sredi (cdr l) 1 (cadr l) (dodaj trenbr elem rez)))
)
)
(define (pripada el l)
(cond ((null? l) nil)
((= el (caar l)) t)
(t (pripada el (cdr l)))
)
)
(define (dodaj n el l)
(if (pripada el l) (ubaci n el l)
(append l (list (list el n)))
)
)
(define (ubaci n el l)
(if (= el (caar l)) (cons (append (car l) (list n)) (cdr l))
(cons (car l) (ubaci n el (cdr l)))
)
)
Zadatak 4.
brisiDate([],_,[]).
brisiDate([G|R],[G|R1],L) :- brisiDate(R,R1,L).
brisiDate([G|R],D,[G|RL]) :- brisiDate(R,D,RL).