Pripremni zadaci za vežbanje iz Osnova programiranja  u 2005/06 godini - I deo

 

 

Pripremni zadaci za vežbanje sa rešenjima iz prethodnih godina 

I grupa zadataka

 

1. Šta je rezultat rada sledećeg programa:

 

#include <stdio.h>

main()

{

    int i=700, j=-2;

    char c='3'

 

   printf("\n%5d-%5d\n", i, j);

   printf("\n%10u%10ld\n", i, j);

   printf("\n/%c/%d/\n", c, c);

 

}

 

 

2. Šta je rezultat rada sledećeg programa:

 

#include <stdio.h>

main()

{

    float i=12.123, j=-12.3456789;

 

   printf("\n%5f-%5f\n", i, j);

   printf("\n%5.2f%-5.0f\n", i, j);

}

 

3. Navesti redosled izvrŠavanja operacija i vrednost kompletnog izraza:

 a) z=(y=10/(5*1)) + 8;

 b) z=5*(x=8) + 3*(y=4/2);

c) x=y=2; z=(x-(++y))*4;

 

4. Koristeći operatore poređenja i logičke operatore, napisati izraze dodele kojima se:

 

a) promenljivoj rez  dodeljuje vrednost 1, ako se od stranica dužina a,b,c može sačiniti trougao, a inače 0

REŠENJE:  rez= (a+b >c) && (a+c>b) && (b+c >a)

 

b) promenljivoj rez  dodeljuje vrednost 1, ako su stranice dužina a,b,c jednake po dužinama, a inače 0

 

c) promenljivoj rez  dodeljuje vrednost 1, ako su stranica dužina a,b,c takve da su svake dve različite dužine, a inače 0

 

d) promenljivoj rez  dodeljuje vrednost 1, ako su stranice dužina a,b,c takve da su dužine parni brojevi, a inače 0

 

e) promenljivoj rez  dodeljuje vrednost 1, ako su stranice dužina a,b,c takve da su dužine neparni brojevi, a inače 0

 

f) promenljivoj rez  dodeljuje vrednost 1, ako su stranice dužina a,b,c takve da su dužine pozitivni brojevi ne veći od 10, a inače 0

 

g) promenljivoj rez  dodeljuje vrednost 1, ako su stranice dužina a,b,c takve da su dužine zadate u strogo rastućem poretku, a inače 0

 

h) promenljivoj rez  dodeljuje vrednost 1, ako su stranice dužina a,b,c takve da su dužine zadate u nerastućem poretku, a inače 0

 

5. Koristeći operator ? : napisati izraz koji za tri različita cela broja a, b, c promenljivoj max dodeljuje najveću vrednost među njima.

 

6. Dat je fragment C programa:

i=1; j=1;

while (i+j<10)

 { ++j; i+=2;}

suma=i+j;

 

a) Koliko puta će se ponoviti while ciklus?

b) Koje su vrednosti promenljivih i, j, suma nakon izvrsenja fragmenta?

c) Napisati ekvivalentan for ciklus.

 

7. Dat je fragment C programa:

i=1; j=1;

while (i+j<10)

  ++j; i+=2;

suma=i+j;

 

a) Koliko puta će se ponoviti while ciklus?

b) Koje su vrednosti promenljivih i, j, suma nakon izvrsenja fragmenta?

c) Napisati ekvivalentan for ciklus.

 

8. Dat je fragment C programa:

i=107; j=0;

while (i>0)

  { j+=i%10; i/=10;}

suma=i+j;

 

a) Koliko puta će se ponoviti while ciklus?

b) Koje su vrednosti promenljivih i, j, suma nakon izvrsenja fragmenta?

c) Napisati ekvivalentan for ciklus.

 

9. Koliko puta će se ponoviti while ciklus:

                    while (i<j) suma=i+j;

 Diskusiju izvrŠiti analizirajući moguće vrednosti za celobrojne promenljive i,j.

 

10 Koliko puta će se ponoviti while ciklus:

                     while (i) i-=3;

Diskusiju izvrŠiti analizirajući moguće vrednosti za celobrojnu promenljivu i.

 

 

11.  Šta je rezultat rada sledećeg programa

       int i;

      for (i=1; i<10; i++) ;

      printf ("%d  ",  i);

 

12.  Šta je rezultat rada sledećeg programa

       int i;

      for (i=1; i<10; i++)

      printf ("%d  ",  i);

 

13.  Šta je rezultat rada sledećeg programa

 

#include <stdio.h>

#define  KUB(a)      ( a * a * a)

main()

{

int b=1;

printf("KUB(%d) = %d\n", 2*b+4, KUB(2*b+4) );

}

14. Sta je rezultat rada sledeceg programa

#define zbir(x,y)  x+y
main()
{
    int a=0, b=1, c=1;
    printf("%d\n", zbir(3,5)*2);
    printf( (a=b)==(c++>b)? "\\\\\n" : "\"ta\tta\"");
    printf("a=%d\tb=%d\tc=%d\n",a,b,c);
}

 

II grupa zadataka

 

1. Napisati C program koji ispisuje na standardni izlaz zbir prvih n Fibonačijevih brojeva, gde broj n se zadaje sa standardnog ulaza.

 

2. Napisati C program koji tekst sa standardnog ulaza kopira na standardni izlaz tako da se uzastopne pojave tabulatora zamene jednim tabulatorom, a svaka pojava podvlake udvoji.

 

3. a) Napisati C program koji kreira datoteku koja sadrži opis HTML tabele sa tri kolone. Zaglavlja kolona su redom niske: Redni broj, Prost broj, Kubovi. U prvoj koloni se nalaze vrednosti od 1..15, u 2. koloni prvih 15 prostih brojeva, a u 3. koloni kubovi tih prostih brojeva. Program mora da radi sa preusmeravanjem standardnog izlaza.

  b) Pod pretpostavkom da datoteka tabela.c sadrži rešenje Vašeg zadatka, napisati šta je potrebno otkucati u komandnoj liniji Linux operativnog sistema da biste kreirali datoteku prosti.html koja sadrži tabele opisane u delu a).

4. Napisati C program koji će sa standardnog ulaza učitati niz različitih celih brojeva do broja 0 i ispisati redni broj elementa koji je najveći među njima.

 

5. Učitati sa tastature broj x (unsigned int) i brojeve k, p1 i p2 (int), pri čemu je
0£p1£p2<sizeof(unsigned)*8   1£k£sizeof(unsigned)*8.

-   formirati vrednost m (unsigned int) u kojoj je bit na poziciji p jednak 1 akko je p1 £ p £ p2

(pozicije se broje od nule sdesna na levo, počev od 0 do sizeof(unsigned )*8-1).

-   formirati x0, koji se dobija od x postavljanjem na 0 svih bitova koji su u m jednaki 1.

-   formirati x1, koji se dobija od x postavljanjem na 1 svih bitova koji su u m jednaki 1.

-   formirati xi, koji se dobija od x promenom (komplementiranjem) svih bitova koji su u m jednaki 1.

-   ciklično pomeriti sadržaj promenljive x za k bitova ulevo.

-   prikazati na ekranu (uz komentar) sve četiri izračunate vrednosti u dekadnom i heksadekadnom obliku.

#include <stdio.h>
void main() 
{
  unsigned int x, m, k, p1, p2, x0, x1, xi;
   /*x, k, p1, p2 su brojevi uneti sa tastature tako da  0<=p1<=p2<sizeof(unsigned)*8 i da  1<=k<=sizeof(unsigned)*8 */
   /* m, x0, x1, xi su resenja odgovarajucih podzadataka */ 


  printf("\nUnesite brojeve x, k, p1 i p2\n ");

  scanf("%u%u%u%u", &x, &k,  &p1, &p2);


  /* m je unsigned int takav da bit na poziciji p je jednak 1 akko je p1 <=p <= p2*/
  m=(1 << (p2-p1+1)) - 1; 
  m<<=p1;
  printf("m= %d = %x\n", m, m);


/* x0   se dobija od x postavljanjem na 0 svih bitova koji su u m jednaki 1 */
  x0 = x & (~m);

/*  x1  se dobija od x postavljanjem na 1 svih bitova koji su u m jednaki 1 */
  x1 = x | m;

/* xi   se dobija od x promenom svih bitova koji su u m jednaki 1*/
  xi = x ^ m;

/* ciklicno pomeren sadrzaj promenljive x za k bitova ulevo */
  x = (x << k)| (x  >> (sizeof(unsigned )*8-k));

    printf("x0= %d = %x\n", x0, x0); 
    printf("x1= %d = %x\n", x1, x1); 
    printf("xi= %d = %x\n", xi, xi); 
    printf("x= %d = %x\n", x, x); 
}




6.Naredba if. Operatori konjunkcije, disjunkcije i negacije

Učitati sa tastature trocifren broj b. Ispitati da li njegove cifre čine rastući, opadajući, nerastući, neopadajući ili niz koji nije monoton. Odgovor prikazati na ekranu.

Primeri: 134 - rastući, 155 - neopadajući, 531 - opadajući, 776 - nerastući, 132 - nije monoton, 312 - nije monoton.

 

7. Naredba if. Operator ? :

Učitati sa tastature tri cela broja (pozitivni su, međusobno različiti i manji od 30000). Koristeći operator ? : ispisati na ekranu da li je srednji po veličini među njima prvi, drugi ili treći po redu.

Primeri: 1 3 4 - drugi, 1 3 2 - treći, 2 1 3 - prvi.

 

8. Naredba ciklusa. Operator %. Deljenje nulom.

Napisati C program koji na standardni izlaz ispisuje odgovor da li je dati prirodan broj x deljiv svim svojim ciframa.  (102 nije, 132 jeste)

 

9. Naredba for. Operatori ++, +=

Učitati sa standardnog ulaza broj n, a zatim n celih brojeva. Ispisati u fajl prosek.out aritmetičku sredinu pozitivnih među tim brojevima, ako ima pozitivnih. Koristiti operatore ++ i +=. Program mora da radi sa preusmeravanjem standardnog izlaza.

 

10. Naredba for.  Operatori ++, --

Učitati iz fajla ulaz.txt broj n, a zatim n celih brojeva. Odredi najveći od unetih brojeva i koliko se puta pojavljuje. Program mora da radi sa preusmeravanjem standardnog ulaza.

 

11. Naredba ciklusa.

Učitati sa tastature dva prirodna broja a i b.  Napisati program kojim se proverava da li su to  uzastopni  članovi Fibonačijevog niza. (f[1]=1, f[2]=1, f[n]=f[n-1]+f[n-2] za n>2)

 III grupa zadataka

 

1. Napisati C program koji ucitava sa standardnog ulaza linije limitirane duzine. Ispisati na standardni izlaz liniju cija duzina je maksimalna. Broj linija nije unapred poznat. Ako postoji vise linija cija duzina je maksimalna ispisati ma koju od njih.

2. Napisati C program koji ucitava sa standardnog ulaza linije limitirane duzine, pronalazi liniju cija duzina je maksimalna i ispisuje je bez samoglasnika a, e, i, o, u. Broj linija nije unapred poznat. Ako postoji vise linija cija duzina je maksimalna ispisati ma koju od njih bez samoglasnika.

3. Napisati C program koji ucitava sa standardnog ulaza linije limitirane duzine, pronalazi liniju cija duzina je maksimalna i ispisuje je obrnutu. Broj linija nije unapred poznat. Ako postoji vise linija cija duzina je maksimalna ispisati ma koju od njih obrnuto.

4. Napisati C program koji ucitava sa standardnog ulaza linije limitirane duzine, pronalazi liniju cija duzina je maksimalna i ispisuje ukupan broj samoglasnika u toj liniji. Broj linija nije unapred poznat. Ako postoji vise linija cija duzina je maksimalna ispisati broj samoglasnika za ma koju od njih. Rec je ma koja niska znakova koja ne sadrzi znak blanko, horizontalni tabulator i znak prelaza u novi red.

5. Napisati C program koji ucitava sa standardnog ulaza linije limitirane duzine, pronalazi najduzu rec u svakoj liniji i ispisuje ih na standardni izlaz. Broj linija nije unapred poznat. Ako postoji vise reci jedne linije cija duzina je maksimalna ispisati ma koju od njih.Rec je ma koja niska znakova koja ne sadrzi znak blanko, horizontalni tabulator i znak prelaza u novi red.

6. Napisati C program koji ucitava sa standardnog ulaza u svakoj liniji po jedan heksadekadni triplet kojim je predstavljena neka od boja RGB modela. Ispisati na standardni izlaz redni broj linija koji sadrze opis bele boje (#FFFFFF).

Na primer   ULAZ
                  #FFFFF
                  #FF0033
                  #AA00EE
                  #FFFFF
                  #8000FF
IZLAZ: 1, 4

7. Napisati C program koji ucitava sa standardnog ulaza u svakoj liniji po jedan heksadekadni triplet kojim je predstavljena neka od boja RGB modela. Ispisati na standardni izlaz heksadekadni triplet ciji dekadni zapis koda je najmanji .

Na primer   ULAZ
                  #FFFFF
                  #10004a
                  #aa00ee
                  #FFFFF
                  #8000FF
IZLAZ: #10004a, jer dekadna vrednost heksadekadnog broja 10004a je 1*165 +  4*16 + a= 1048650

8. Napisati C program koji ucitava sa standardnog ulaza linije limitirane duzine, pronalazi liniju cija duzina je maksimalna i ispisuje ukupan broj reci u toj liniji. Broj linija nije unapred poznat. Ako postoji vise linija cija duzina je maksimalna ispisati ukupan broj reci za ma koju od njih. Rec je ma koja niska znakova koja ne sadrzi znak blanko, horizontalni tabulator i znak prelaza u novi red.

9. Napisati C program koji ucitava sa standardnog ulaza linije limitirane duzine, pronalazi liniju cija duzina je maksimalna i ispisuje broj pojava dekadnih cifri u toj liniji. Broj linija nije unapred poznat. Ako postoji vise linija cija duzina je maksimalna ispis pojava cifara izvrsiti za ma koju od njih. Izvestaj treba da je u obliku:
  Broj pojave cifre 0 je ...  Broj pojave cifre 1 je...     Broj pojave cifre 9 je...

10. Napisati C program koji ucitava sa standardnog ulaza linije limitirane duzine, pronalazi liniju cija duzina je maksimalna i ispisuje najduzu seriju cifara. Broj linija nije unapred poznat. Ako postoji vise linija cija duzina je maksimalna ispis izvrsiti za ma koju od njih.Serija cifara je podniska koja se sastoji samo od uzastopnih pojava cifri.

Na primer za nisku Ho12 34ima a45678x pojava5
         postoji cetri serije cifara: serija 12, serija 34, serija 45678, serija 5 i najduza je serija 45678.
 


              

IV grupa zadataka

1. Napisati C program koji ucitava sa standardnog ulaza u svakoj liniji po jedan nenegativan dekadni broj sa ne vise od 80 cifara. Ispisati na standardni izlaz najmanji broj . Ako ima vise takvih ispisati ma koji.

Na primer   ULAZ
                  111111111111111111111111111111
                  99999234
                  000000000000000000000000004
                  09
                  223400000000000000000000
IZLAZ: 4

 

2. Napisati C program koji ucitava sa standardnog ulaza u svakoj liniji po jedan nenegativan dekadni broj sa ne vise od 5 cifara. Ispisati na standardni izlaz broj cija suma kubova cifara je najmanja. Ako ima vise takvih ispisati ma koji.

Na primer   ULAZ
                  9
                  111 
                  04
                  22
                  1101
IZLAZ: 111 ili 1101, jer je najmanja suma 13+ 13+ 13= 3, te se ispisuje 111 ili 1101

3. Napisati C program koji ucitava sa standardnog ulaza u svakoj liniji po jedan nenegativan dekadni broj sa ne vise od 5 cifara i ispisuje neparne brojeve u obrnutom poretku cifara .

Na primer   ULAZ
                  9
                  127 
                  04
                  22
                  1105  

IZLAZ:     9
             721
            5011

4. Napisati C program koji ucitava sa standardnog ulaza u svakoj liniji po jedan pozitivan dekadni broj sa ne vise od 5 cifara. Ispisati na standardni izlaz najmanji prost broj.

5. Napisati C program koji ucitava sa standardnog ulaza pozitivan ceo broj n i ispisuje na standardni izlaz u zasebnim redovima vrednosti suma:
  a) 1!+ 2! + 3! +...+ n!        b) n! - (n-1)! + (n-2)! - (n-3)! +... 1!

6. Napisati C program koji ucitava sa standardnog ulaza pozitivan ceo broj n i ispisuje na standardni izlaz n-ti po velicini prost broj.

 

V grupa zadataka

1. Napisati C program koji ucitava sa standardnog ulaza dva datuma u formatu dd.mm.gggg i ispisuje stariji datum.

Na primer. ULAZ  22.11.2005.  1.1.2006.     IZLAZ 22.11.2005.
                 ULAZ  22.11.2005.  22.11.2005.     IZLAZ nema starijeg


 

2. Napisati C program koji ucitava sa standardnog ulaza datum u formatu dd.mm.gggg i ispisuje na standardni izlaz datum prethodnog dana i datum narednog dana. Pretpostaviti da uneti datumi su nakon datum 15.10.1573.

Na primer  ULAZ  01.11.2005.  IZLAZ  31.10.2005.  2.11.2005.
                 ULAZ  31.12.2005.  IZLAZ  30.12.2005.  1.01.2006.

3. Napisati C program koji ucitava sa standardnog ulaza dva datuma u formatu dd.mm.gggg i ispisuje ceo broj dana izmedju ta dva datuma.

Na primer  ULAZ  22.11.2005.  23.11.2005.     IZLAZ  0
                 ULAZ  23.11.2005.  12.11.2005.     IZLAZ  10

4. Napisati C program koji ucitava sa standardnog ulaza vremenske oznake unutar filmskog titla u obliku hh:mm:ss tj cas:minut:sekund. Vremenske oznake nisu dobro sinhronizovane sa titlom i treba ih pomeriti za -00:00:11. Ispisati na standardni izlaz korigovane vremenske oznake za titl s obzirom na zadati pomeraj.

Na primer  ULAZ                           IZLAZ 
                01:00:00                          00:59:89
                03:58:10                          03:57:99

VI grupa zadataka

1. Napisati C program koji sa standardnog ulaza unosi pozitivne cele brojeve i,j,n i ispisuje na standardni izlaz broj n kome su razmenjeni i-ti i j-ti bit. Pozicija najnizeg bita je 0.

Na primer ULAZ 0,3,8    IZLAZ 1  jer  0-ti bit u 8ci je 0, 3-ci bit u 8ci je 1.

2. Napisati C program koji sa standardnog ulaza unosi pozitivan ceo broj n<=31, proverava korektnost unetog broja i ispisuje broj bitova koji su jednaki 1 u binarnoj reprezentaciji za n.

3. Napisati C program koji sa standardnog ulaza unosi pozitivan ceo broj n<=8, proverava korektnost unetog broja i ispisuje na standardni izlaz trocifrene brojeve cija suma bitova je jednaka n. Ispis brojeva urediti u opadajucem poretku.

4. Napisati C program koji sa standardnog ulaza unosi pozitivan ceo broj n<=31 i ispisuje na standardni izlaz sumu bitova na parnim pozicijama i sumu bitova na neparnim pozicijama.

  

VI grupa zadataka

 

1. Zaokruži rečenice ispred netačnog tvrđenja. Odgovor obrazložiti:

.........

 

2. Datoteka slika.gif sadrži sliku dimenzije 1600x1200. Napisati HTML fragment kojim je umanjeni prikaz te slike (sa dimenzijama 200x150) hiperveza bez okvira ka slici u prirodnoj veličini.

 

3. Šta je URL? Objasniti formu zadavanja URL-a i navesti primer jednog URL-a.

 

4. Koje su posledice dekompresije, editovanja i kompresije izmenjene JPEG datoteke?

 

 

 

 

 

 

 

 

 


Naslovna Primene računara

e-mail: Jelena Grmuša




URL: http://www.matf.bg.ac.yu/~jelenagr/op/