Zadatak 1.
int brojParnihCifara(long n)
{
int br = 0, c;
while(n > 0)
{
br += 1 - (n % 2);
n /= 10;
}
return br;
}
void main()
{
long ulaz[20], izlaz[20];
int i, n_ulaz, n_izlaz = 0;
scanf("%d",&n_ulaz);
for(i = 0; i < n_ulaz; i++)
{
scanf("%ld",ulaz + i);
if((ulaz[i] > 9999)&&(ulaz[i] < 100000L)&&(brojParnihCifara(ulaz[i]) > 1))
izlaz[n_izlaz++] = ulaz[i];
}
stampaj(izlaz,n_izlaz);
}
Zadatak 2.
void main()
{
int a[20][20], okv[10], n, i, j, brok, nizmax[10], maks, ind, m;
scanf("%d",&n);
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
scanf("%d",&a[i][j]);
brok = (n + 1) / 2;
for(i = 0; i < brok; i++) okv[i] = 0;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
{
ind = min(min(i,j),min(n-1-i,n-1-j));
okv[ind] += a[i][j];
}
nizmax[0] = 0;
maks = okv[0]; m = 1;
for(i = 0; i < brok; i++)
if(okv[i] > maks)
{
nizmax[0] = i;
m = 1;
}
else
if(okv[i] = maks) nizmax[m++] = i;
for(i = 0; i < m; i++) printf("%d",nizmax[i]);
}
Zadatak 3.
(define (sumakv l)
(if (null? l) 0
(+ (* (car l) (car l)) (sumakv (cdr l)))
)
)
(define (broj l)
(if (null? l) 0
(+ (car l) (* 10 (broj (cdr l))))
)
)
(define (nadji cifre suma)
(nadji2 1 cifre (- suma (sumakv cifre)))
)
(define (nadji2 k cifre razlika)
(cond ((> k 9) 'nema_resenja)
((jesteCifra (- razlika (* k k)))
(broj (append (cons k (inv cifre)) (list (- razlika (* k k))))))
)
(t (nadji2 (+ k 1) cifre razlika))
)
)
(define (inv l)
(if (null? l) nil
(append (inv (cdr l)) (list (car l)))
)
)
(define (jesteCifra n)
(if (and (> n 0) (< n 9)) t nil)
)
Zadatak 4.
duzina([],0).
duzina([G|R],N) :- duzina(R,N1), N is N1 + 1.
sp(L1,L2,N) :- duzina(L1,D1), duzina(L2,D2), !, D1 =!= D2, N is 0.
sp([G1|R1],[G2|R2],N) :- sp(R1,R2,N1), N is N1 + G1 * G2.