You are on page 1of 12

OSNOVI PROGRAMIRANJA

(X)
KOLOKVIJUM 3

Dino Kosić
Elektrotehnički fakultet Banja Luka
2009.
10.1. Zadatak 1

#include <stdio.h>
main()
{
unsigned char p1=0x20, p2, p3;
p3=~(0xF*0x10); p2=p1|~p1;
printf("%x %o", p2, p3);
}

f f 1 7

2
10.2. Zadatak 2

#include <stdio.h>
union U { int i; char c; } u={0x35};
main()
{
printf("%d %c", u.i, u.c);
}

5 3 5

3
10.3. Zadatak 3

#include <stdio.h>
int m[4][4]={{1},{2,3}};
void f(int *p, int m, int n)
{
int i,b1,b2=0,s=0;
for (i=m, b1=b2; i<=n; s+=*p, i++)
if (*(p+i)) b1++;
else ++b2;
printf("%d %d", b2, s);
}
main()
{
int *p=&m[1][1];
f(p,1,5);
}

5 1 5

4
10.4. Zadatak 4

#include <stdio.h>
void rf(char b)
{
printf("%d",b&1);
if (b>>1)
rf(b>>2);
}
main()
{
rf(6);
}

0 1

5
10.5. Zadatak 5

#include <stdio.h>
struct S {char *c1,*c2;} s,*ps=&s;
main()
{
char c1,c2;
s.c1=&c2;
*s.c1='3';
c1++;
ps->c2=&c1;
*ps->c2 ='C';
printf("%c%c", c2, ++(*ps->c1));
}

4 4

6
10.6. Zadatak 6

Napisati program koji u dinamički alocirani niz smješta n cijelih


brojeva sa standardnog ulaza, a zatim određuje i ispisuje najveći
prosti broj među učitanima.
#include <stdio.h>
#include <stdlib.h>
int prost(int b)
{
int d,bd=0;
for (d=1; d<=b; d++) if (b%d==0) bd++;
return (bd==2);
}
main()
{
int n, *niz, i, ip=0, maxp=0;
do { printf("n="); scanf("%d",&n); } while(n<1);
niz=(int*)malloc(n*sizeof(int));
for(i=0; i<n; i++){printf("%d. broj:",i+1); scanf("%d",niz+i); }
for(i=0; i<n; i++)
if(prost(*(niz+i)))
{ ip=1; if (*(niz+i)>maxp) maxp=*(niz+i); }
if (ip) printf("Najveci prost broj je: %d\n",maxp);
else printf("Nema prostih brojeva!\n");
}

7
10.7. Zadatak 7

Napisati rekurzivnu funkciju koja izračunava n-ti Fibonačijev broj, ako


je Fibonačijev niz definisan sa:
f1=1 f2=2 fn=fn-1+fn-2

int f(int n)
{
if (n<3)
return (n);
else
return (f(n-1)+f(n-2));
}

8
10.8. Zadatak 8

Napisati program koji učitava naziv datoteke, pa otvara tu datoteku i


određuje broj pojava svakog slova engleskog alfabeta (A do Z) u njoj,
a rezultat upisuje u datoteku SLOVA.DAT.
#include<stdio.h>
main()
{
int b[26]={0}, i;
char naziv[20], c;
FILE *dat;
printf("Naziv datoteke: "); gets(naziv);
if ((dat=fopen(naziv,"r"))!=NULL)
{
while(!feof(dat))
{
c=getc(dat);
if (c>='A' && c<='Z‘) b[c-'A']++;
}
fclose(dat);
dat=fopen("SLOVA.DAT","w");
for (i=0; i<26; i++) fprintf(dat, "%c %d\n", 'A'+i, b[i]);
fclose(dat);
}
else printf("Greska pri otvaranju datoteke!");
}

9
10.9. Parametri komandne linije
KOMANDNA LINIJA?

Komandna linija (Command Line)


Kompajliranjem i bildovanjem C programa dobija se izvršna datoteka (EXE fajl)
Isti se može pokrenuti iz komandne linije
C:\>imefajla [ENTER]
Preko komandne linije se programu mogu “proslijediti” parametri
C:\>imefajla par1 par2 ... parN

Da bi ovo bilo moguće, zaglavlje funkcije main treba da izgleda ovako:


main(int argc, char **argv)
Prvi argument komandne linije je ime same izvršne datoteke.

10
10.9. Parametri komandne linije
KOMANDNA LINIJA?

Program koji u ispisuje broj argumenata i sve argumente komandne linije (ne
računajući ime izvršne datoteke).

#include<stdio.h>
int main (int argc, char** argv)
{
int i;
printf("Broj argumenata: %d\n", argc-1);
for (i=1; i<argc; i++)
printf("%d. argument: %s\n", i, argv[i]);
}

11
10.9. Parametri komandne linije
KOMANDNA LINIJA?

Program koji u datoteku čiji je naziv argument komandne linije upisuje JAJCE

#include<stdio.h>
int main (int argc, char** argv)
{
FILE *dat;
dat=fopen(argv[1],"w");
fprintf(dat, "JAJCE\n");
fclose(dat);
}

12

You might also like