Programiranje 1,
zavrsni ispit, januarski rok, 14.02.2007.
II deo
RESENJA
1. Napisati
funkciju
int
fibonaci(int n);
koja racuna n-ti fibonacijev broj. (n<=50) smatrajuci da F0=1, F1=1.
unsigned long
fibonaci(int
n)
{
int i;
unsigned
long prethodni=1,tekuci=1,
sledeci;
if
((n==0) || (n==1) ) return 1;
for(i=2;i<=n;i++)
{
sledeci=prethodni+tekuci;
prethodni=tekuci;
tekuci=sledeci;
}
return
tekuci;
}
2. Napraviti program koji ucitava ime
datoteke iz komandne linije i zatim odredjuje maximalni ceo broj koji se
pojavljuje u toj
datoteci. (ne znamo unapred broj elemenata u
datoteci, znaci
bez koriscenja nizova). Pretpostavljamo da
se datoteka sastoji samo od celih brojeva. Ukoliko u komandnoj
liniji nije
navedeno ime datoteke, poruku o tome ispisati stderr.
#include <stdio.h>
#include <stdlib.h>
main(int
argc, char *argv[])
{
FILE *in;
int max, broj;
if
(argc <2)
{
fprintf(stderr, "\nNije navedeno ime datoteke \n");
exit(1);
}
in=fopen(argv[1],"r");
fscanf(in, "%d",
&max);
broj=max;
while(!feof(in))
{
if
(max<broj) max=broj;
fscanf(in,
"%d", &broj);
}
printf("\nMax=%d\n",
max);
fclose(in);
}
3. Napisati
funkciju koja izracunava sumu bitova celog broja x.
4. Napraviti
program koji sa standardnog ulaza (ili preko argumenata komandne linije)
ucitava dva stringa. Proveriti da
li se svi karakteri prvog stringa nalaze u
drugom stringu. Na kraju ispisati odgovarajucu poruku.
(npr. aka se nalazi u bajka, baba se nalazi u bajka, majka se ne nalazi u bajka.)