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.)