62
O O снови снови програмирања програмирања 1 1 Лекција Лекција 6 6 Висока школа електротехнике и рачунарства струковних студија Београд др др Зоран Зоран Бањац Бањац [email protected]

Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

OOсновиснови програмирањапрограмирања 11ЛекцијаЛекција 66

Висока школа електротехнике и рачунарства струковних студијаБеоград

дрдр ЗоранЗоран БањацБањац

[email protected]

Page 2: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац2

СадржајСадржај

Низови• Дефинисање низова• Иницијализација низова• Приступање елементима низова

Page 3: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац3

УводУвод

• Подела типова података– Основни– Сложени

• Основни типови података:– int – long int– double– ...

• Зову се основни, јер променљиве могуистовремено да садрже само једну вредност

• Променљиве СЛОЖЕНОГ типа могу дасадрже више од једне вредности

Page 4: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац4

УводУвод

• Обрада информација за 20, 200 или 2000 студената

• Може да се дефинише 20, 200 или 2000 променљивих

int st1, st2, st3, st4, st5, … st2000;st1 = 0; st2 = 0; …; st2000 = 0;

• Много куцања• Грешке• ...

Page 5: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац5

РешењеРешење......

• Да ли може да се користити индексирање:sti - примена индекса i за приступ сваком

податку

• Да ли је могућ запис следећег облика?

for (i=0; i < 2000; i++) sti = 0;

za 20 000 студената се мења само један број

Page 6: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац6

НизовиНизови ((ААrrayrray))• Синоними: Табеле, Поља, Матрице...• Сложени тип податка• Елементи, чланови низа могу бити описаниједном вредношћу (скаларни) или су сложени типподатка-описани са више вредности

• Служе за представљање мартрица (вектора), односно више-димензионалних података

СВИ ПОДАЦИ У НИЗУ ИМАЈУ ИСТИ ТИП

2 55 326 83 478 1 7

[ ]2 5 3

Page 7: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац7

НизовиНизови

• Податак унутар низа се назива Елементниза

• Сваки елемент низа има свој редни број, преко кога се идентификује

• Ти редни бројеви се називају индекси.• Индекс почиње од нуле (не од јединице!)

Page 8: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац8

ЈеднодимензионалниЈеднодимензионални низовинизови

• Низ или вектор је једнодимензионалнопоље

• То је скуп података истог типа• У меморији се смешта у скуп узастопнихлокација

• Сви подаци у низу имају једно име = ИМЕНИЗА

• Име низа је почетна адреса низа умеморији (показивачи...)

Page 9: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац9

ЈеднодимензионалниЈеднодимензионални низовинизови

• Сваки елемент низа је одређен : – именом низа, и– индексом

(померај у односу на почетак низа)

МЕМОРИЈА

niz[4]

niz[3]

niz[2]

niz[1]

niz[0]nizВеличина

једног елемента(број бајтова)

зависи одтипа низа

Page 10: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац10

ДефинисањеДефинисање низованизова

tip ime_niza [duzina1] [duzina2]..[duzinaN];

• tip било који тип који је до сада коришћен• ime_niza у складу са правилима за

идентификаторе• duzina број елемената низа ( цео број)

float plate[10]; /* 10 elemenata */int a[10][5]; /* 10x5 elemenata */

Page 11: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац11

ДефинисањеДефинисање низованизова

float plate[10];?

?

?

?

plate[0]

?

?

?

?

?

?

plate[4]

plate[2]

plate[3]

plate[1]

plate[5]

plate[9]

plate[7]

plate[8]

plate[6]

...

...

plate

главна меморија

КоликоКолико бајтовабајтовазаузимазаузима једанједанелементелемент низаниза??

КоликоКолико бајтовабајтовазаузимазаузима цеоцеонизниз??

Page 12: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац12

ИницијализацијаИницијализација низованизова

tip ime[Duzina] = {vrednost0, vrednost1,…,vrednostDuzina-1};

• vrednost0 иницијализује ime[0], vrednost1иницијализује ime[1], итд.

• vrednost мора да буде одговарајућег типа, иначе ће доћи до аутоматске конверзије типова

Page 13: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац13

ПримериПримери иницијализацијеиницијализације

int tablica [4]={3, 5, 7, 9};

long x[6]={3, 5, 7, 9, 0, 0};

float plate[10]={223.44, 435.11, 322.76,218.44, 481.65, 712.34,490.09, 395.27, 318.66,348.33};

Page 14: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац14

ПримериПримери иницијализацијеиницијализације

223.44

435.11

218.44

481.65

plate[0]

322.76

712.34

490.09

318.66

348.33

395.27

plate[4]

plate[2]

plate[3]

plate[1]

plate[5]

plate[9]

plate[7]

plate[8]

plate[6]

...

...plate

главна меморија

Page 15: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац15

ПримериПримери иницијализацијеиницијализације

int NumDays1[12] = { 31, 28, 31, 30,31, 30, 31, 31, 30, 31, 30, 31 };

/* Jan je 0, Feb je 1, ... */

int NumDays2[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,31 };/* Jan je 1, Feb je 2,... */

Page 16: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац16

ПримериПримери иницијализацијеиницијализације

• Ако се наведу почетнe вредности,duzina може да се изостави приликомдефинисања низа.

• Број вредности одређује дужину низа

int b[ ]={3, 5, 7, 9};

b[2]b[0] b[1]73 5 9

b[3]

Page 17: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац17

ПримериПримери иницијализацијеиницијализације

• Ако у дефиницији постоји дужина, бројнаведених вредности за иницијализацијуне сме да буде већи од броја елеменатаниза!

int tablica [3]={3, 5, 7, 9};/*Greska! Posedice....*/

Page 18: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац18

ПримериПримери иницијализацијеиницијализације

• Ако је број вредности које се додељују мањиод димензија низа оне се дoдељујуелементима на почетку низа а остале ћеимати вредност нула.

int tab[5]={3, 5, 7};

float c[3]={0};

tab[0]

3

tab[1]

5

tab[2]

7

tab[3]

0

tab[4]

0

c[0]

0

c[1]

0

c[2]

0

Page 19: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац19

tip imeNiza[brojVrednosti]={listaVrednosti}tip imeNiza[brojVrednosti]={listaVrednosti};;

НизовиНизови -- рекапитулацијарекапитулација

ТипТип податакаподатака уу низунизу, , свисви подациподаци имајуимају истиисти типтип

ИдентификаторИдентификатор, , важеваже правилаправила каокаоии заза основнеосновне променљивепроменљиве

БројБрој елеменатаелемената низаниза.. ЦелобројнаЦелобројна константаконстанта, , резервишерезервише потребанпотребан бројброј бајтовабајтова заза елемелем. . низаниза

ВредностВредност елеменатаелемената уу низунизу((иницијализацијаиницијализација), ), нијеније обавезнаобавезна, , вредностивредности сесе раздвајајураздвајају зарезомзарезом

Page 20: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац20

ПримерПример декларациједекларације низаниза

short int niz[2];char tekst[5];

#define MAX 2#define LEN 5main(){ short int niz[MAX];char tekst[LEN];...

}МЕМОРИЈА

niz[0] niz

2x2Bniz[1]

tekst[0]tekst[1]

tekst[2]tekst[3]

tekst[4]

tekst

5x1B

. . .. . .

. . .. . .

. . .. . .

Page 21: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац21

ПриступањеПриступање елементимаелементима низаниза

• Елементи низа се идентификују помоћуредног броја који се назива индекс.

• Ако је дужина низа дефинисана прековредности duzina ондаиндекс низа може да има вредностод 0 до (duzina-1)

Page 22: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац22

ПриступањеПриступање елементимаелементима низанизаint main(){int i, tablica[4]={3, 5, 7, 9};...

}главна меморија

3

5

9

tablica[0]

7 tablica[2]

tablica[3]

tablica[1]

? i

...

...

Page 23: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац23

ПриступањеПриступање елементимаелементима низаниза

int main(){int i, tablica[4]={3, 5, 7, 9};i = tablica[1];...

}

главна меморија

3

5

9

tablica[0]

7 tablica[2]

tablica[3]

tablica[1]

5 i

...

...

Page 24: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац24

ПриступањеПриступање елементимаелементима низаниза

int main(){int i, tablica[4]={3, 5, 7, 9};i = tablica[1];tablica[0]=i+1;...

}

главна меморија

6

5

9

7

5

...

tablica[0]

tablica[2]

tablica[3]

tablica[1]

i

...

Page 25: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац25

ПриступањеПриступање елементимаелементима низаниза

int main(){int i, tablica[4]={3, 5, 7, 9};i = tablica[1];tablica[0] = i+1;tablica[i-3] = 88;...

}

главна меморија

6

5

9

tablica[0]

88 tablica[2]

tablica[3]

tablica[1]

5 i

...

...

Page 26: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац26

СтруктураСтруктура низаниза

• int s[10]; према int s0,s1,...s9

s S[0]

S[1]

S[2]

S[3]

S[4]

S[5]

S[6]

S[7]

S[8]

S[9]

S0

S1

S2

S3

S4

S5

S6

S7

S8

S9

Page 27: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац27

ВежбаВежба

• Са декларацијом:float Sales[10];x = 1;

• Шта је резултат следећих наредби?Sales[5] = 123.45;Sales[x] = 100.50;Sales[x + 5] = 20.31;Sales[x - 1] = 3.46;

• Прикажите вредност низа

Page 28: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац28

ГрешкеГрешке

Неправилно додељивање вредности:

float Sales[10];

Sales = 17.50; /* nedostaje indeks */Sales[-1] = 17.50; /* negativan indeks */Sales[10] = 17.50; /* indeks van opsega */Sales[7.0] = 17.50; /* tip indeksa */Sales[’a’] = 17.50; /* tip indeksa */Sales[7] = ’A’; /* tip podatka */

Аутоматска конверзија:

Sales[7] = 17; /* 17.00, float tip */

Page 29: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац29

ДоделаДодела вредностивредности ......

int mat[10];int i;...

for(i = 0;i < 10;i++){

mat[i]=5;}

...

5555555555

mat[0]

mat[1]

mat[2]

mat[3]

mat[4]

mat[5]

mat[6]

mat[7]

mat[8]

mat[9]

Page 30: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац30

ИндексирањеИндексирање

• При индексирању низа може да се кориситибило који израз, који као резултат даје цеоброј

• [ ] je оператор, прво израчуна израз апотом тражи ту локацију у низу

• Код примене израза мора да се проверававредност пре употребе:

if ((brojE >= 0) && (brojE <= 9))Zarada[brојЕ] = iznosS;

else/* Problem ... */

Page 31: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац31

СтилСтил

• Дефинише се константа за дужину низа:#define MAXDUZ 10

• Користи се константа у декларацији низа:float Plata[MAXDUZ];

• Користи се константа у петљама:for (i = 0;i < MAXDUZ;i++)

Plata[i]=5345;• Ако треба да се MAXDUZ промени, онда сето ради само на једном месту у програму

Page 32: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац32

ЗбирЗбир елеменатаелемената низаниза#include<stdio.h>#define RADNICI 4int main(){float plate[RADNICI] = {117.0,

129.95, 276.22, 201.10};float zbir = 0.0; int i;

for(i = 0; i < RADNICI; i++)zbir += plate[i];

printf("Za isplatu: %.2f\n", zbir);}

plate117.00 plate[0]129.95 plate[1]276.22 plate[2]201.10 plate[3]

Za isplatu:724.47

Page 33: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац33

МаксималнаМаксимална вредноствредност низаниза#define RADNICI 4int main(){float Plate[RADNICI] =

{117.0, 129.95, 201.10, 276.22};float maxP;int i;

maxP = Plate[0];for (i = 1; i < RADNICI; i++) {if (Plate[i] > maxP)maxP = Plate[i];

}}

Page 34: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац34

МинималнаМинимална вредноствредност низаниза#define RADNICI 4int main(){float Plate[RADNICI] =

{117.0, 129.95, 201.10, 276.22};float minP;int i;

minP = Plate[0];for (i = 1; i < RADNICI; i++) {if (Plate[i] < minP)minP = Plate[i];

}}

Page 35: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац35

ИсписИспис вредностивредности низаниза#include<stdio.h>#define RADNICI 4int main(){float Plate[RADNICI] =

{117.0, 129.95, 201.10, 276.22};int i;

printf(“Radnik broj Zarada\n”);printf(“--------------------\n”);

for (i= 0; i < RADNICI; i++)printf(“%4d%17.2f\n”, i, Plate[i]);

}

Radnik broj Zarada-----------------------

0 117.001 129.952 201.103 276.22

Page 36: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац36

ВишедимензионалниВишедимензионални низовинизови

• Дводимензионални-матрице• три димензије• четири димензије• ...

• Елемент низа може да буде други низ

Page 37: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац37

ВишедимензионалниВишедимензионални низовинизови

• Матрице...0 1 j ... m-1

01

i

n-1

стубац(колона)

mat[1][0]

mat[i][j]

ред(врста)

mat[n-1][m-1]

Page 38: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац38

ДводимензионалнаДводимензионална пољапољаматрицематрице

tip imeMat[D1][D2]={{V0}, {V1},..{Vn-1}};

ТипТип податакаподатака уу низунизу, , свисви подациподаци имајуимају истиисти типтип

ИдентификаторИдентификатор, , важеваже правилаправила каокаоии заза основнеосновне променљивепроменљиве

БројБрој елеменатаелемената низаниза D1xD2D1xD2, , ЦелобројнЦелобројнee констконст..D1 D1 бројброј врставрста, , D2D2 бројброј колонаколона

ВредностВредност елеменатаелемената уу матрициматрици((иницијализацијаиницијализација), ), нијеније обавезнаобавезна, , вредностивредности сесе раздвајајураздвајају зарезомзарезом

Page 39: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац39

ДекларацијаДекларација матрицематрице

• Матрице се попуњавају по принципу редпо ред:

char tablica[2][3];

20 1

?0

1

Логички изглед

МЕМОРИЈА

...

Физички изглед

?tablica[0][0]

tablica[0][1]

tablica[0][2]

tablica[1][0]

tablica[1][1]

tablica[1][2]

...?

????

? ?

?? ?

Page 40: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац40

ДекларацијаДекларација матрицематрице

• Пример декларације и иницијализацијеint mat[2][3] = { {3,1,8}, {2,5,6} };

int mat[2][3] = { {3,1,8} };

20 1

83 1

62 5

0

120 1

83 1

00 0

0

1

Page 41: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац41

ДефинисањеДефинисање низованизова

А00 А01 А02 А03 А04

А10 А11 А12 А13 А14

А20 А21 А22 А23 А24

...

А90 А91 А92 А93 А94

int А[10][5];

Page 42: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац42

ДефинисањеДефинисање низованизова

А001 А011 А021 А031

А000 А010 А020 А030

А101 А111 А121 А131

А100 А110 А120 А130

int А[2][4][2];

Page 43: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац43

ИницијализацијаИницијализација

• Више димензионални низови• Појединачне вредности треба да су и саменизови одговарајућих димензија

int mat2[3][2]={{1,2},{3,4},{5,6}};

int mat2[3][2]={{1,2},{3,4},{5,6}};

2

0 1

5

1 2

6

3 4

0

1

Логички изглед

Page 44: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац44

ИницијализацијаИницијализација

int NumDays2[2][13] = { {0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};

short kvadratA[4][4]={{0,1,2,0},{3,4,0,0},{5,6,7,8},{9,0,0,0}};

short kvadratB[4][4]={{0,1,2},{3,4},{5,6,7,8},{9}};

да ли су исте?

Page 45: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац45

ИницијализацијаИницијализација

int kvA[4][4]={0,1,2,3,4,5,6,7,8,9};

int kvB[4][4]={{0,1,2,3},{4,5,6,7},{8,9,0,0},{0,0,0,0}};

да ли су исте?

2

0 1

0 1

4 5

0

1

2 3

6 7

0 0

0 0

8 9

0 03

2 3kvA

2

0 1

0 1

4 5

0

1

2 3

6 7

0 0

0 0

8 9

0 03

2 3kvB

Page 46: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац46

main(){int mat[4][3];int i,j;

for( i = 0; i < 4; i++ ){

for( j = 0; j < 3; j++ ){

mat[i][j] = 5 ;}

} }

ДоделаДодела вредностивредности ......•свим елементима матрице додели вредност 5

555

555

555

555

Page 47: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац47

for ( red=1; red<=n; red++ ){

for ( kol=1; kol<=m; kol++ ){

printf(”mat[%d][%d]=”,red-1,kol-1);scanf(”%d”, &mat[red-1][kol-1]);

}}

УчитавањеУчитавање податакаподатака саса тасттаст..

for ( red = 0; red < n; red++ ){

for ( kol = 0; kol < m; kol++ ){

printf(”mat[%d][%d]=”,red, kol);scanf(”%d”, &mat[red][kol]);

}}

Page 48: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац48

ИсписИспис елеменатаелемената матрицематрице

for ( red = 1; red <= n; red++ ){

for ( kol = 1; kol <= m; kol++ )printf(”%4d”,mat[red-1][kol-1]);

printf(”\n”); }

for ( red = 0; red < n; red++ ){

for ( kol = 0; kol< m; kol++ )printf(”%4d”,mat[red][kol]);

printf(”\n”); }

Page 49: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац49

ЕлементиЕлементи главнеглавне дијагоналедијагонале

• Приказ елемената главне дијагонале

• Сума елемената главне дијагонале

mat[0][0]mat[1][1]

mat[i][i]

mat[n-1][n-1]

mat[i][j], i=j

printf(”Glavna dijagonala: ”);for ( i = 0; i < n; i++ )

printf(” %d”, mat[i][i]);

printf(”Suma elem. glavne dijagonale:”);for ( s=0,i=0; i < n; i++ )

s += mat[i][i];printf(” Suma elemenata GD je %d”, s);

Page 50: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац50

ЕлементиЕлементи спореднеспоредне дијагоналедијагонале

• Приказ елемената споредне дијагонале

• Сума елемената споредне дијагонале

mat[0][n-1]mat[1][n-2]

...

mat[n-1][0]

mat[i][j], i+j=n-1

printf(”Sporedna dijagonala: ”);for ( i = n-1; i >= 0; i-- )

printf(” %d”, mat[i][n-1-i]);

printf(”Suma elem. sporedne dijagonale:”);for ( s=0,i=0; i < n; i++ )

s += mat[i][n-1-i];printf(” Suma elemenata SD je %d”, s);

Page 51: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац51

EEлементилементи горњегорње троугаонетроугаоне матрицематрице

mat[i][j], ј >= i

printf(”Gornja trougaona matrica:\n ”);for( i = 0; i < n; i++ ) { for( j = 1; j <= i; j++ )

printf(”%5c”,' ');for( j = i; j < n; j++ ) printf(” %4d”, mat[i][j]);

printf(”\n”);}

Page 52: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац52

TTранспоновањеранспоновање матрицематрице

• Испис транспоноване на основу оригиналне

59 10

327

4812

16

1123 7

124 8

9510

16

11

printf(”Transponovana:\n ”);for ( i = 0; i < m; i++ ) { for ( j = 0; j < n; j++ )

printf(” %4d”, mat[j][i]);printf(”\n”);

}

mat[n][m] matTr[m][n]

Page 53: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац53

TTранспоновањеранспоновање матрицематрице

• Формирање транспоноване матрице

59 10

327

4812

16

1123 7

124 8

9510

16

11

for ( i = 0; i < m; i++ ) {for ( j = 0; j < n; j++ ) { matTr[i][j] = mat[j][i];

}}}

mat[n][m] matTr[m][n]

Page 54: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац54

rand()rand()

#include<stdlib.h>int rand( void )

• Функција која враћа псеудослучајнуцелобројну вредност

• Распон вредности: 0 до RAND_MAX. • Не захтева улазне параметре (void)• Дефинисана у stdlib.h

Page 55: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац55

ssrand()rand()

void srand(unsigned int seed)

• Поставаља почетну позицију ПСГ (RNG)• Да би почетна вредност сваки пут биладругачија

srand( (unsigned)time( NULL ) );

Page 56: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац56

rand, srand, timerand, srand, time#include<stdlib.h>#include<time.h>#include<stdio.h>

void main( ){ int i;

srand( (unsigned)time( NULL ) ); /* Prikazi 10 brojeva */for( i = 0; i < 10; i++ ) printf( " %6d\n", rand() );

}

Page 57: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац57

ПримерПример: : #include<stdio.h>#include<stdlib.h>#define MAX 10

main(){

int a[MAX], b[MAX], c[MAX], i;

for(i = 0; i < MAX;i++){a[i] = rand();b[i] = rand();

}for(i = 0; i < MAX; i++){c[i] = a[i] + b[MAX-1-i];printf("c[%d]=%d\n",i, c[i]);

}}

ЗбирЗбир првогпрвог елемелем. . низаниза ааии последњегпоследњег елемелем. . низаниза bbдругогдругог елемелем. . низаниза аа иипретпоследњегпретпоследњег елемелем. . низаниза bb, ...., ....

Page 58: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац58

ЦикличноЦиклично померањепомерање уу леволево

#include<stdio.h>#include<stdlib.h>#define MAX 10main(){

int a[MAX], priv, i;

for(i = 0; i < MAX; i++)a[i]=rand();

priv = a[0];

for(i = 0; i < MAX-1; i++)a[i] = a[i+1];

a[MAX-1] = priv;}

...2 81 970 ...3 92 081

Page 59: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац59

ЦикличноЦиклично померањепомерање уу деснодесно

#include<stdio.h>

#define MAX 10main(){

int a[MAX], priv, i;

for(i = 0; i < MAX; i++)a[i] = rand();

priv = a[MAX-1];

for(i = MAX-1; i > 0; i--)a[i] = a[i-1];

a[0] = priv;}

...2 81 970 ...1 70 869

Page 60: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац60

ЦикличниЦиклични померајпомерај заза m m местаместа#include<stdlib.h>#define MAX 10main(){int a[MAX], priv, i, m = 2;

for(i = 0; i < MAX; i++)a[i] = rand();

for(j = 0, j < m, j++){

priv = a[0];

for(i = 0; i < MAX-1;i++)a[i] = a[i+1];

a[MAX-1] = priv;}

}

...2 81 970

...4 03 192

Page 61: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац61

СумаСума битабита појединихпојединих елемелем. . низаниза

#include<stdio.h>

#define DIM 10main(){short a[DIM]={1,2,3,4,5,6,7,8,9,10};short priv, i, j, suma;

for(i = 0; i < DIM;i++){suma = 0;for(j = 0; j < 16; j++){

priv = (a[i] >> j) & 1;suma += priv;

}printf("suma bita broja %d je %d\n“, a[i], suma);

}}

Page 62: Лекција 6 - vps.ns.ac.rs · ЗоранБањац 4 Увод • Обрадаинформацијаза20, 200 или2000 студената • Можедаседефинише20,

Зоран Бањац62

Хвала на пажњи

Питања?