Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Слични документи
Microsoft PowerPoint - 07-DinamickeStrukturePodataka

Uvod u računarstvo 2+2

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

07_PJISP_II_Predavanja

Uvod u računarstvo 2+2

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Microsoft Word - AIDA2kolokvijumRsmerResenja.doc

Funkcije predavač: Nadežda Jakšić

Uvod u računarstvo 2+2

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

Funkcije predavač: Nadežda Jakšić

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Microsoft PowerPoint - Datoteke [Compatibility Mode]

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost

Model podataka

Tutoring System for Distance Learning of Java Programming Language

The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature opti

Рачунарска интелигенција

Studijski primer - Dijagrami toka podataka Softverski inženjering 1

Datoteke predavač: Nadežda Jakšić

Računarski praktikum I - Vježbe 09 - this, static

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr

Programski jezik C

Programiranje 1

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

070-ALIP2-udzbenik.indb

PowerPoint Presentation

Računarski praktikum I - Vježbe 06 - Standard Template Library (2)

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

Microsoft Word - 1.Operacije i zakoni operacija

Tutoring System for Distance Learning of Java Programming Language

Електротехнички факултет Универзитета у Београду Катедра за рачунарску технику и информатику Kолоквијум из Интелигентних система Колоквију

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

Primenjeno programiranje - Vežbe

MergedFile

NIZOVI

Baza fakultet sadrži 3 tabele: tabela studenti sadrzi informacije o studentima Njeni atributi su: indeks indeks studenta (primarni kljuc) ime ime stud

Програмирај!

Introduction to Programming

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite U

Fakultet tehničkih nauka, Novi Sad Predmet: ISIBP

Microsoft Word - SYLLABUS -Dinamicki

Uvod u računarstvo 2+2

Microsoft Word - MySQL_3.doc

Strukture predavač: Nadežda Jakšić

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

PowerPoint Presentation

Tutoring System for Distance Learning of Java Programming Language

Računarski praktikum I - Vježbe 11 - Funktori

23. siječnja od 13:00 do 14:00 Školsko natjecanje / Osnove informatike Srednje škole RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovi

P11.3 Analiza zivotnog veka, Graf smetnji

Microsoft PowerPoint - NAD IR OS pravila 2017.pptx

PowerPoint Presentation

P11.2 Izbor instrukcija, IBURG

Računarski praktikum I - Vježbe 01 - Uvod

Inženjering informacionih sistema

Primenjeno programiranje - vezbe GUI i baze podataka

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

На основу члана 115 став 1 Закона о високом образовању («Службени гласник Републике Српске» бр

Programiranje 2 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/7

Računarske mreže Čas 2 Ivana Tanasijević Matematički fakultet, Beograd 1

1. Vremensko ograničenje Memorijsko ograničenje ulaz izlaz 0,1 s 64 MB standardni ulaz standardni izlaz Banka želi da upozori kupce na sumnjive aktivn

Programiranje za UNIX Okruženje unix procesa

ZADACI ZA VEŽBU 1. Realizovati konzolnu aplikaciju koja će računati površinu kvadrata, pravougaonika ili trougla. 2. Preko konzole se unosi ocena od 1

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Introduction to Programming

Орт колоквијум

Microsoft Word - WP_kolokvij_2_rjesenja.doc

SKRIPTE EKOF 2019/20 skripteekof.com Lekcija 1: Brojevni izrazi Lekcija 1: Brojevni izrazi Pregled lekcije U okviru ove lekcije imaćete priliku da nau

PASCAL UVOD 2 II razred gimnazije

Programski jezici i strukture podataka

Uvod u takmičarsko programiranje

Microsoft PowerPoint - 6. Query Builder.pptx

Državna matura iz informatike

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6

UPUTSTVO ZA KRETANJE KROZ EON KORISNIČKI INTERFEJS 1

Uvod u PHP

Орт колоквијум

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Microsoft PowerPoint - jkoren10.ppt

Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica

Slide 1

Државно такмичење године 5. и 6. разред 1. [pločice] Правоугаону терасу димензија d s центиметара квадратних треба поплочати коришћењем плочица

PowerPoint Presentation

Pojačavači

PORTAL KATEDRE ZA MEDICINSKU STATISTIKU I INFORMATIKU uputstvo za pristup i korišćenje Ovo uputstvo podrazumeva da studenti imaju osnovno znanje koriš

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime

8 2 upiti_izvjesca.indd

Logicko projektovanje racunarskih sistema I

Microsoft PowerPoint - JavaP9_2019

Pravilnik o upisu

Microsoft Word - Zadaci za samostalno vjezbanje 4.doc

P1.2 Analiza efikasnosti algoritama 2

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

Транскрипт:

Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijski program: Informacioni inženjering Informacioni inženjering 1

Rekurzivne funkcije Binarna stabla Informacioni inženjering 2

Rekurzivne funkcije Rekurzija nastaje kada se pojam definiše pomoću samog sebe Rekurzivna funkcija u svom telu ima poziv same sebe Rekurzivna funkcija mora sadržati uslov za poziv same sebe Informacioni inženjering 3

Primer rekurzivne funkcije Rekurzivno računanje faktorijela int faktorijel(int n) { if (n <= 1) return 1; else return n*faktorijel(n-1); Informacioni inženjering 4

Binarno traženje int binarysearch(int arr[], int l, int r, int x) { if (r >= l) { int mid = l + (r - l)/2; if (arr[mid] == x) return mid; // Ako je manji od središnje, tražimo u levoj polovini niza if (arr[mid] > x) return binarysearch(arr, l, mid-1, x); // U suprotnom, tražimo u desnoj polovini niza else return binarysearch(arr, mid+1, r, x); // Element nije nađen return -1; Informacioni inženjering 5

Zadatak 1 Napisati C program kojim će se pomoću rekurzivne funkcije vršiti konverzija nenegativnih celih brojeva iz dekadnog zapisa u binarni. Primeri poziva funkcije: tobinary(17) vraća broj 10001 tobinary(53) vraća broj 110101 Informacioni inženjering 6

Stabla Nelinarna struktura podataka Modeluju hijerarhijski odnos među elementima Svaki element ima: tačno jednog roditelja (osim korenskog) nula ili više dece Element koji nema dece zove se list Informacioni inženjering 7

Binarna stabla Uređena stabla kod kojih svaki čvor ima najviše dvoje dece Podstablo čiji je koren levo (desno) dete zove se levo (desno) podstablo Realizacija sekvencijalna spregnuta Informacioni inženjering 8

Binarna stabla Operacije na binarnim stablima: generičke size isempty pristupne root parent left right sibling Informacioni inženjering 9

Binarna stabla Operacije nad binarnim stablima: upiti isleaf da li je list isroot da li je koren ažuriranje insert dodavanje elementa delete brisanje elementa Informacioni inženjering 10

Obilazak binarnog stabla Vrste obilazaka preorder čvor, levi, desni postorder levi, desni, čvor inorder levi, čvor, desni Informacioni inženjering 11

Binarno stablo spregnuta realizacija Čvor stabla sadrži: podatak (ili pokazivač na podatak) pokazivač na roditeljski čvor pokazivač na levo dete pokazivač na desno dete typedef struct node { int key; struct node *parent, *left, *right; TNODE; Informacioni inženjering 12

Dodavanje elementa u stablo void insert(tnode **proot, int key) { TNODE *new = makenode(key); if (*proot == NULL) { new->parent = NULL; *proot = new; return; insertnode(*proot, new); TNODE* makenode(int key) { TNODE *new; new = (TNODE*) malloc(sizeof(tnode)); new->key = key; new->left = new->right = NULL; return new; void insertnode(tnode *root, TNODE *new) { if (root->key == new->key) { free(new); return; if (root->key < new->key) { if (root->right == NULL) { new->parent = root; root->right = new; else insertnode(root->right, new); else { if (root->left == NULL) { new->parent = root; root->left = new; else insertnode(root->left, new); Informacioni inženjering 13

Traženje elementa u stablu TNODE* find(tnode *node, int key) { if (!node) return NULL; if (node->key == key) return node; if (node->key > key) return find(node->left, key); else return find(node->right, key); Informacioni inženjering 14

Brisanje elementa iz stabla (1/2) void delete(tnode **proot, int key) { TNODE *del = find(*proot, key); if (!del) return; if (*proot == del) { if (del->left == NULL) { *proot = del->right; (*proot)->parent = NULL; free(del); return; if(del->right == NULL) { *proot = del->left; (*proot)->parent = NULL; free(del); return; deletenode(del); Informacioni inženjering 15

Brisanje elementa iz stabla (2/2) void deletenode(tnode *node) { TNODE *parent = node->parent; // Ako je list if (isleaf(node)) { if (parent->left == node) parent->left = NULL; else parent->right = NULL; free(node); return; // Ako ima tačno jedno dete if (node->left == NULL node->right == NULL) { TNODE *child; if (node->left) child = node->left; if (node->right) child = node->right; child->parent = parent; if (parent->left == node) parent->left = child; else parent->right = child; free(node); return; // Ako ima oba deteta TNODE *maxleft = node->left; // Pratimo pokazivač do krajnjeg desnog // elementa (najvećeg) u levom podstablu while (maxleft->right) maxleft = maxleft->right; // Zapamtimo ključ tog elementa int maxleftkey = maxleft->key; // Obrišemo taj element deletenode(maxleft); // Sačuvani ključ dodelimo elementu koji // je trebalo obrisati node->key = maxleftkey; Informacioni inženjering 16

Inorder obilazak i visina stabla void inorder(tnode *root) { if (root->left) inorder(root->left); printf("%d ", root->key); int height(tnode *node) { if (!node) return 0; int l, r; l = height(node->left); r = height(node->right); if (root->right) inorder(root->right); return l > r? l+1 : r+1; Informacioni inženjering 17

Brisanje stabla void destroy(tnode *node) { if (node) { destroy(node->left); destroy(node->right); free(node); Informacioni inženjering 18

Zadatak 2 Napisati C program koji korisniku nudi meni sa sledećim operacijama nad binarnim stablom: unos novog elementa brisanje postojećeg elementa traženje elementa u stablu obilazak stabla (inorder, preorder, postorder) prikaz visine stabla broja elementa u stablu Informacioni inženjering 19

Zadatak 3 Proširiti Zadatak 1 tako da nudi i sledeće akcije: izračunavanje sume elemenata niza ispis svih listova prikaz broja elemenata na N-tom nivou u stablu broja elemenata koji imaju oba deteta Informacioni inženjering 20

Zadatak 4 Napisati C program kojim se iz tekstualne datoteke "studenti.txt" za svakog studenta učitava broj indeksa, ime, prezime i broj osvojenih poena na testu i upisuje u binarno stablo sortirano po broju indeksa. U izlaznu datoteku "polozili.txt" ispisati podatke o studentima koji su osvojili više poena od srednje vrednosti broja poena dvoje studenata koji su najbolje i najlošije uradili test. Informacioni inženjering 21

Zadatak 5 Napisati C program kojim se iz tekstualne datoteke "klubovi.txt" za svaki klub učitava naziv kluba, oznaka konferencije, broj pobeda i broj poraza. Za svaku konferenciju kreirati binarno stablo sa klubovima sortiranim u opadajućem odnosu broja pobeda i poraza. Podatke o najboljih 8 klubova iz svake konferencije ispisati u datoteku čiji se naziv dobija spajanjem oznake konferencije i stringa "_playoff.txt". Informacioni inženjering 22