Nabrajanja

14. februar 2017.

Nabrajanje  konstante su celobrojne simbolicke konstante kojima su vrednosti dodeljene eksplicitno ili  implicitno, nabrajanjem njihovih imena u jednom nizu. Skup odjednom nabrojenih konstanti cini jedno nabrajanje, koje se moze smatrati tipom podataka koji je definisao programer.

Definisanje nabrajanja:

enum ime_nabrajanja {IME_KONSTANTE=vrednost,

IME_KONSTANTE=vrednost,…};

Ime nabrajanja je identifikator koji sluzi za identifikaciju datog nabrajanja. Moze da se izostavi, ali kasnije nije moguce definisati podaci tipa nabrajanja.

IME KONSTANTE je identifikator, koji predstavlja po jednu simbolicku konstantu. Uobicajeno je da imena konstante se pisu samo velikim slovima.

Vrednosti pojedinih simbolickih konstanti mogu da se odrede konstantnim celobrojnim izrazima. Ako iza konstante nema =vrednost, konstanta ce imati vrednost koja je za jedan veca od predhodne konstante u nizu. Ako iza prvog identifikatora u nizu nema vrednosti, prva konstanta imace vrednost 0.

Pr.

enum {NE, DA};

enum { MIN=10, MAX=100, POZELJNO=20};

enum Kvartal1{JAN=1, FEB, MART, APRIL};

typedef enum {CRNA, SIVA, SMEDJA, CRVENA} Boja;

typedef enum Kvartal1 mesec=JAN;

Boja booja=CRVENA +2;

Unije

17. januar 2017.

Unije su složeni tipovi podataka koji omogućavaju da se u isti memorijski prostor, u različitim trenucima, smeštaju podaci različitih tipova.

Unije se difinišu naredbom union, sve ostalo je kao i kod struktura, navode se polja koja su različitog tipa.

Za razliku od struktura, kod kojih sva polja imaju definisanu vrednost, kod unije samo jedno polje u datom trenutku ima definisanu vrednost, polje kome je posljednje dodeljena vrednost.

Ako se inicijalizira unija, u zagradama se stavlja samo jedna vrednost i ako se ne navede čija je vrednost, dodeljuje se  prvom polju

Pr.

struct s {                                                                 union u {
int i;                                                                                int i;
float d;                                                                            float d;
char *c;                                                                          char *c;
};                                                                                 };

Prikaz u operativnoj memoriji:

s: s.i, s.d, s.c -sizeof s, polja se smeštaju u operativnoj memoriji jednoza drugim i svakom od polja se može dodeliti vrednost. Veličina strukture je  jednaka zbiru veličine polja.

U slučaju unije, sva polja se smeštaju počev od iste adrese. Dodela vrednosti jednog polja uništava ranije dodeljenu vrednost nekom drugom polju. Veličina unije odgovara veličini najvećeg polja. (u: u.i
u.d
u.c
– sizeof u)

Pr.1

typedef union u{
int i;
float f;
char c;
} u;

main()
{
u unija;
unija.c=’A’;
unija.i=5;

/* Dozvoljen je pristup samo poslednje dodeljenom clanu unije */
cout<<„Trenutna vrednost unije je,unija.i“<<unija.i; /* U redu je */

/* Pogresno bi bilo da se napise
cout<<„Trenutna vrednost unije je unija.c“<<unija.c;
*/
}

Pr.2 

#include
#include
using namespace std;
union ceo_ili_realan{
int ceo;
float realan;
};
int main(int argc, char *argv[])
{
ceo_ili_realan x;
cout<<„Unesi ceo broj?“<<endl; cin>>x.ceo;
cout<<“ Unija ima vrednost „<<x.ceo<<endl;
cout<<„Unesi realan broj ?“<<endl; cin>>x.realan;
cout<<“ Unija ima vrednost „<<x.realan<<endl;
system(„PAUSE“);
return EXIT_SUCCESS;
}

Uređivanje niza

26. decembar 2016.

Složeniji proces od  pretraživanja niza je uređivanje. Da bi se niz uredio neophodno je da se svaki element uporedi sa ostalim elementima, po potrbi, izvršiti njihovu međusobnu zamenu.

Metod izbora (selection sort)

Zasniva se na veoma jednostavnoj ideji, izabrati najmanji element niza i dovesti ga na prvo mesto, zatim drugi najmanji, na drugo mesto, itd. do kraja niza.

Pr1.

Napravite program koji niz a čiji elementi su celi brojevi uređuje u rastućem redosledu?

Rešenje:

#include
#include
using namespace std;
void ucitajniz(int a[], int n)
{
int i;
for (i=0;i<n;i++)
{
cout<<“ Unesi „<<i+1<<“ element niza“<<endl; cin>>a[i];
}
}
void razmeni(int *a, int *b)
{
int pom=*a;
*a=*b;
*b=pom;
}
void sortiraj(int a[], int n)
{
int i, j;
for (i=0;i<n-1;i++)
{
for (j=i+1;j<n;j++) { if (a[i]>a[j])
razmeni(&a[i], &a[j]);
}
}
}
void ispisiniz(int a[], int n)
{
int i;
for (i=0;i<n;i++)
cout<<“ a[„<<i+1<<„] je „<<a[i]<<endl;

}

int main(int argc, char *argv[])
{
int a[10],n;
cout<<„Unesi broj elemenata niza“<<endl; cin>>n;
ucitajniz(a,n);
sortiraj (a,n);
cout<<“ Sortirani niz:“<<endl;
ispisiniz(a,n);
system(„PAUSE“);
return EXIT_SUCCESS;
}

Pretraživanje nizova

26. decembar 2016.

Veoma često javlja se potreba ispitivanja da li određeni element pripada određenom skupu, da li je moguće elemente skupa urediti po nekom kriterijumu? Znamo da skup istih elemenata po tip daju niz, kada je reč o programiranju, pa tehnika pretraživnja i uređivanja nizova čini jednu od najznačajniih grupa obrade podataka.

Za pretraživanje nizova postoje dva algoritma koji se načešće koriste u praksi

Sekcencionalno pretraživanje

Uzastopno upoređivanje elemenata niza sa traženom vrednošću (provera da li se vrednost nalazi  u nizu), sve dok se vrednost ne pronađe ili kada se dođe do kraj niza (tražena vrednost nije u nizu) su karakteristike sekvencionalnog pretraživana. 

Sekvencionalno pretraživanje          Funkcija za sekvencionalno pretraživanje

Da je tražena vrednost pronađena zna se po tome što je ciklus pretraživanja završen pre kraja niza (i<n). Vrednost funkcije je 1 u slučaju uspeha, 0 u slučaju neuspeha.

Jednostavnost je dobra strana pretraživanja, mana je relativno veliki broj proba da bi se došlo do rezultata.

Pr1.

U jednom razredu ima n učenika. Prosečna standardna visina je b. da li u razredu ima učenika sa standardnom visinom?

Rešenje:

#include <cstdlib>
#include <iostream>

using namespace std;

/*Funkcija za pretrazivanje*/
int sektra1 (int a[],int n,int b)
{
int i;
for (i=0;i<n && a[i]==b;i++)
return i<n;
}

/*glavni program*/
int main(int argc, char *argv[])
{
int a[30];
int b, n, i;
cout<<„Unesi standardnu visinu?“<<endl;
cin>>b;
cout<<„Unesi broj ucenika u razredu?“<<endl;
cin>>n;
cout<<„Unesi visine svakog ucenika?“<<endl;
for (i=0;i<n;i++)
{
cout<<„Unesi visinu ucenika sa rednim brojem „<<i+1<<endl;
cin>>a[i];

}
cout <<sektra1(a,n,b);

if (sektra1 (a,n,b)==1)
{
cout <<„Postoje ucenici cija visina je „<< b<< „, prosecna visina „<<endl;
}
else
{
cout <<“ Ne postoje ucenici cija visina je „<< b<< „(prosecna visina) „<<endl;
}
system(„PAUSE“);
return EXIT_SUCCESS;
}

 

Pokazivači

29. oktobar 2016.

Svaki podatak u računarskom sistemu ima svoju memorijsku lokaciju. C++ omogučava preko promenljivih određenog tipa pristup podacima, pri čemu nije neophodno da se vodi računa o memorijskoj lokaciji gdegde se podatak nalazi.

Pokazivači su specijalni tipovi podataka koji omogućavaju rad sa memorijskim lokacijama. C++ definiše pokazivače tako što posle tipa pokazivača, ispred naziva stavlja * ( int *pokazivač). Ako želimo da saznamo koja je adresa definisanog pokazivača ispred naziva pokazivača se stavlja & (pr. &pokazivac).

Pr:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int a = 5;
/* pokayivac ka podatku koji je po tip intedjer*/
int *b;
//b je adresa promenljive a („b pokayuje ka a“)
b = &a;
/*
double *k;
k = &a; //GRESKA: pogresen tip na pokazhuvac (double)
*/
cout << a << endl; //stampa ‘5’ (vrednosta promenljive a)
cout << b << endl; //stampa ‘0x27ff44’ (adresa memorijske lokacije a)
system(„PAUSE“);
return EXIT_SUCCESS;
}

pokazivac

Veoma često, kada se kreiraju pokazivači, potrebno je znati koja je vrednost promenljive ka kojoj pokazuje pokazivač. Sa znakom * pristupamo podatku koji se nalazi na odredjenoj memorijskoj lokaciji. Važno je da se zna da pristupom sa znakom * može vrednost memorijske lokacije da se promeni.

Pr.

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int a = 5; //promenliva ‘a’ ima vrednost 5
int *p; //pokazhuvac ka podatkom od tipa int

p = &a; //p ja adresa a („p pokazuje ka a“)

cout << a << endl; //stampa ‘5’
cout << *p << endl; //stampa ‘5’

*p = 3; //promena vrednosti

cout << p << endl; //stampa adresu
cout << *p << endl; //stampa ‘3’ (vrednost)
cout << a << endl; //stampa ‘3’
system(„PAUSE“);
return EXIT_SUCCESS;
}

pok2

Jedan pokazivač može se koristiti više puta pri čemu može  da pokazuje i ka različitim promenljivima i memorijskim lokacijama.

Veličina pokazivača zavisi od arhitekturu računarskog sistema, i operativnog sistema, 32 bitni računarski sistem koristi 32 bitne memorijske adrese, veličina pokazivača je 4 bajta.

Pr.

#include <iostream>
using namespace std;

struct typeX
{
int t1, t2, t3, t4;
double t5, t6, t7, t8;
};

int main()
{
int a = 5, b = 2;
double c = 3.8;
char d = ‘Z’;
typeX e;

int *pa = &a, *pb = &b;
double *pc = &c;
char *pd = &d;
typeX *pe = &e;

cout << sizeof(pa) << endl; //stampa ‘4’
cout << sizeof(pb) << endl; //stampa ‘4’
cout << sizeof(pc) << endl; //stampa ‘4’
cout << sizeof(pd) << endl; //stampa ‘4’
cout << sizeof(pe) << endl; //stampa ‘4’

system(„PAUSE“);
return EXIT_SUCCESS;
}

pok3

Niz i pokazivači

 

Dropbox

20. januar 2016.

Рачунари и програмирање

Дропбокс – мој фаворит.
Дропбокс је мрежни сервис за синхронизацију датотека (фајлова) између више уређаја (истог корисника!): кућни рачунар, рачунар на послу, таблет, паметни телефон…
То је складиште на мрежи у које се пакују фајлови којима корисник може приступити са било ког места: или преко претраживача (фајерфокс, хром…) или преко инсталираног програма, који сам обавља синхронизацију! Подршка је одлична за све системе: линукс, виндовс, андроид…  Бесплатан је и нуди 2GB простора. Тај простор се може повећати до 5GB, позивањем пријатеља да користе дропбокс. Уз доплату од 9,99$ месечно добија се 1ТB!

View original post 680 more words

Elektronski testovi

13. oktobar 2015.

https://docs.google.com/forms/d/1hZw7KOb_CKqaaHcoZM_Xts9balG6QwNE7wS3dGqcPgM/viewform?embedded=true„>Prvi elektrtonski test

I razred DSD–prezentacija Hardware

23. novembar 2014.

I razred DSD–prezentacija Hardware.

Primeri zadataka koji koriste cin i cout

14. septembar 2014.

Računari i programiranje

Pr1.

Napravi program koji unosi i izdaje brojeve?

Rešenje:
#include <iostream>
usingnamespacestd;
intmain()
{
inta, b;
cout << "Unesi dva broja: ";
cin >> a;
cin >> b;
cout << "a = "<< a << endl;
cout << "b = "<< b << endl;
intc, d;
cout << "unesi jos dva broja: ";
cin >> c >> d;
cout << "c = "<< c << endl;
cout << "d = "<< d << endl;
doublereal;
cout << "Unesi jedan decimalni broj: ";
cin >> real;
cout << "real = "<< real;
return0;
}
Pr2.
Napravi program koji izračunava srednju vrednost četiri broja i ispiši rezultat u sledećem obliku:
Unesi cetiri realna broja:
Srednja vrijednost brojeva …., …., …. i …. je ……?

 Rešenje:

#include<iostream>

using namespace std;

int main()

{

    float a,b,c,d,srvr;

    cout<<„Unesi…

View original post 84 more words

VIDEO RAZGLEDNICA GRAFIČKIH RADOVA

13. maj 2014.

Zanimljiv prikaz  grafičkih radova