Vous êtes sur la page 1sur 10
8.1. Predstavijanje skupine Tipovi poput “int”, “double” itd. dozvoljav vrijednosti: int brojaci double temperatura; char Slovo; ao sve istog tipa, na primjer: + Prosjeéne koligine padavina za svaki mjesec; © Ocjene svih uéenika u razredu; + Stanje prodaje za svaki dan u sedmici, itd. U jeziku C++, mi predstavljamo takve skupine vrijednosti pot mozemo kreirati pomocu deklaracije pop’ double prosjecne_padavine[12]; svaka od tih vrijednosti tipa “double”: l prosjecne_padavine prosjecne_padavine[4] = 20.0; cout << prosjecne_padavine[7]; ig an ‘0 | kod obiénih promjenljivih, elementi niza nemaju | sve dok se a eee ne izvr%i dodjela, bilo pomogu a Zeljko Juries Prine len ie Uo Jue: Princip programiean voy rogramski jerik © ( jikom deklaracije nizova, unutar uglastih zagrada my 2, poput broja, ili Konstante deKlarirane sa “cong thy we Helto Gija je veljednost ija poput «Tako, ako Je “n promjentjive, fe prosjecne_padavine(n]; prosi dok je ista deklaracija dozvoljena u sh t slugaju ois amo elementima niza, indleks w zagradi Pp fei § eu ad ae Voljan cjelobrojnl ariimeti je uz pretpostavku da je “n" cjelobrojna promjentiva, alloted perk @davine(2*n - 3) = 13.7; tipovi (engl. non-scalar types) pa izjave poput: ku C++. Drugim rijecima, kod nizova iskljutivo pristupamo pojedinacnim da nizu kao cjelini. Ne memo jednom naredbom ispisati Citav niz-na ekran, ijeti cijeli niz sa tastature vi su specijalni slutaj tzv. pokazivaéa o kojima ¢e biti govora kasnije. ce je da na posljednju od gore navedene 3 “neisprayne” naredbe kompajler (jer C+ dozvoljava da se pokazivact ispisuju na ekran), ai ta naredba nese cujemo (ispisati niz na ekran). Tim prije moramo zapamtiti da ne ‘uradimo, jer nas kompajler neGe upozoriti da radimo pogresno. imo istu operaciju nad svakim elementom niza. To se najlakse move “for” petlje. Na primjer, podrazumijevajuti da je deklarirana cjelobrojna , slijedeéa “for” naredba -niza na 0. U slijedecem primjeru programa koji tradi unos pet cijena | ‘naslovom, koristi se tkode niz i naredba jor’ ipak cijena\n"; cout << aenenees=\n"y cout << "Stavka cijena\n") for (1 = 0; 4 < Sy ite) cout << * Primijetimo da se moramo navidi na pomalo “neobisnu” ginjeni i 7 elemenata kreéu od 0 do N=1, ane od 1 do N. Tako, W prethodnom nied ge su smjetiene u elemente niza sa indeksima 0, 1, 2, 31 4, tako da je prva cijens emer “null” clement niza, itd, Ovakva numeraeija, sasvim logiéna sa aspekia ragungra, necoteee’ je sa aspekta covjeka, koji je navikno da sve indcksira pogevsi od | nadalje. 2ooe wee prethodnom programu, prilikom ispisacijena, u koloni "stavka” indeks “yjeStagki" used 2 tako da. Ge brojeviispisani u ovo) koloni biti, 2, 3, 4 1 5, kao Sto je uobitajeno, Generaine 4 prilikom svakog ispisa indeksa niza na ekran, on obiGno uveéava za 1 za bi se isis prilagodie obliku na koji je Zovjek navikao, Slinu situaciju imamo i u slijedeéem programy, koi uftag brosietnu temperatury za svaki od 12 mjesec, i priktzje unesene temperature na kr obliku tabele: #include #include void main (void) ( double temperature (12); int mjesec; for (mjesec = 0; mjesec < 12; mjesect+) C cout << “Unesi prosjeénu temperaturu cout << "u toku " << mjesec + 1 << ". mjeseca: cin >> temperature[mjesec]; i d cout << “\nMjesec Temperatura\n"; for (mjesec = 0; mjesec < 12; i++) cout << setw(6) << mjesec + 1; t << setw(14) << temperature(mjesec] << endl; viti ilustriran primjer ¢ mn Zeljko Jurie: Principi programi ranja ks 2 Drogramsk jesik +41, gg rijeé od " << broj 5) < "unesi rijeé © Bee a cout << 9, 4 < broj_slova; i++) fie (ec OR a for Ub ijec(s]: 3 cin >? nijeé izgovorena natraSke je: "), coit ? a vevieraee ioSa 20; Mesy fOr ce eects ovaj program je Jako prepraviti da radi sa duziim ili kragim rijeima prostom prom " sjenom ore post u defnieji Konstante “broj_siova’ ali sa dosada no napraviti program Koji bi radio za proizvoline unesen yemo njihovu duzinu. Sta ée se desiti ako unesete vise ili ma segno ako ste shvatili kako tatno rade sve upotrebljene nare tinos 5a tastature). Naime, ako unesemo viSe od 5 slova, vigak ée bi manje od 5 slova, nakon pritiska na prikupi taéno 5 slova Raugenim znanjem jo ne fe rijeti, bez da unaprijed inje slova, trebalo bi da vam dbe (a pogotovo naredba z: re : iti ignoriran, a ako unesemo SNTER program ée ponovo traziti unos, sve dok se ne poz bude jasno Program u slijedeéem primjeru zahtijeva unos broja studenata koji su prisustvovali nekom petodnevnom kursu za svaki dan pojedinatno, a zatim prikaruje linijski dijagram (engl. line chart) prisustva, sastavljen od zvjezdica: ym. h> oid) zvjezdica, broj_polaznika[5]; 0; dan < 5; dant+) cout << "Unesi broj polaznika u toku " << dan + 1 << “dana n >> broj_polaznika [dan] ; cout << “Dijagram prisustva\n"; odie sspeiel for (dan = 0; cout << setw(2) << dan << fl for (zvjezdica = 1; zvjezdica zvjezdicat+) cout << "#"; broj_polaznika [dan]; Ako su, na primjer, une: 11, 18 i 15, nakon njihovog unosa dobiéerio eni podaci bili 16, 13, slijed ‘Zeljko Jurié: Prineipi programiranja. ed koliko ée elemenata imati niz. U tom sh ivani bro} elemenata, pri Cemu se nem cana orinjer, odreden broj studenata (ali ne vise od 100) polade eieered do 100 poena. Slijedeci program prvo pita lew nikal ristpiloispitu, zatim uéitava broj poena za svakog Kandidata posebno, i tae rezultate ispita (polozio/pao) za svakog kandidata. esto ne znamo unaprije’ niza zadajemo najvedi oée #include #include void main(void) i const int max_broj = 100; int i, poeni[max_broj]; int broj_kandidata; do © Gut..ee.sROLIKG kandidata Je pettea a een cin >> broj_kandidata; ‘\e i (broj_kandidata < 1 || broj_kandidata > max_broj wer cout << "Broj mora biti od 1 do " << max brog ee #iM treat ena aca <1 || bro: for (i = 0; i < broj_kandidata; { - cout << "Unesi broj poena za " << i + 1 << “kandidata: cin >> poeni {i}; ) cout << endl; cout << *Kandidat Status\n* for (i = 0; i < broj_kandidat. ( cout << setw(7) << i +1 << ="; if (poeni[i] >= 50) : cout "POLOZIO\n"; else cout “PAO\n"; its) ) Cesto je potrebno ispitati da li svi eleme: jednom od ranije navedenih primjera i Potrebno utvrditi da li su sve temperatu (Podrazumijevajuti da je deklarirana py nti nekog niza posjeduju neko svojstvo. mali smo niz nazvan “temperature”, ire pozitivne, mogli bismo koristiti slijedeéu romjenljiva “svi_su_pozitivni”): Svi_su_pozitivni = 1; for (mjesec = Q; if (temperature [mj svi_su_pozitivni Prost ili ne, Drugim rijetima, aprin ncibe oii s Smo logitku promjenijivu “ey apriori smo pretpostavili vi_su_pozitir eventualan Kontraprimjer. Ukoliko pri tal e oe Zeljko Jurié: Principi programiranja hcg clement), ov promjenljivu postavljamo na 0, éime si . i (fj, da svi clementi nisu pozitivni). Ukoliko se oiea el eae negativan, tijelo naredbe “it” neée se izvtSiti niti jedamput “gvi_su_pozitivni” ostati onakva kakva je bila na potetu ( A ‘etku da je pretpostavkja bila taéna, t. da su zaista svi elementi celia “ Pretpostavka nije bila taéna 2 ni jedan element nije bio tako da ée promjenljiva . 1), iz éega zakljugujemo § druge strane, ako treba ispitati da li makar i : Jedan element niza posjeduje odred potrebno je poti od suprotne preipostavke, i tragati za eventualnim Sater Tao ee svojstva. Na primer, da smo Zeljeliispitati dali je makar jedan element niza “e. ure” pozitivan, uradili bismo slijedeée: See aae makar_jedan_pozitivan = 0; for (mjesec = 0; mjesec < 12; mjesec++) if (temperature(mjesec] > 0) makar_jedan_pozitivan = 1; Oba primjera je moguée utiniti efikasnijim “nasilnim” prekidom petlje kada se uoti Kontraprimjer, odnosno primjer. Mnoge od dosada opisanih tehnika ilustrira slijedeéi primjer. Neka meteoroloska sluzba svakog dana registrira najviSu i najnizu dnevnu temperatura Slijedeéi program utitava najvigu i najniZu temperaturu za svaki dan jednog mjeseca (od 30 dana), i na izlazu daje slijedeée podatke: ¢ Maksimalnu temperatura zabiljeZenu tokom tog mjeseca; * Minimalnu temperaturu zabiljeZenu tokom tog mjeseca; * Broj dana u toku mjeseca u kojima je zabiljeZena maksimalna temperatura; + Pretpostavku 0 godi’njem dobu na osnovu slijedeéih pravila: pretpostaviti da je u pitanju zima ako je makar jedamput maksimaina dnevna temperatura bila ispod nule, a pretpostaviti da je u pitanju Ijeto ako minimalne dnevne temperature nisu bile ispod 15 stepeni. #inelude void main(void) { const int broj_dana = 30; ¢ max_temperature(broj_dana], min_temperature[broj_dana]; doubl atura, min_temperatura; double max_temper int br_dana_sa_max_temp = 0; int dan; int da_li_je_ljeto = 1, da_li_je_zima = 0; for (dan « 0; dan < broj_dana; dan++) As. 2 : uru u toku "7 cout << "Unesite minimalnu temperat cout << dan + 1 << ee ie cin >> min_temperature(dan]; A tout << *Unesite makeimalnu temperatury U toku "7 cout << dan + 1 << “dana: "7 ein >> max_temperature (dan); ‘sirana 105 Zeljko rie) Princip programiranja (rox rogramskl jezik Cee, 1 gig emperature (dan) ) if (min_temperature(dan) > max { cout << “Neispravan unos! \n"; : cout << "MAX mora biti vedi od MIN!\n"; ) ) while (min_temperature(dan] > max_temperature(dan]) ; max_temperatura = max_temperature [0]; min temperatura = min_temperature [0] for (dan = 1; dan < broj_dana; dan++) ( if (max_temperature(dan) > max_temperatura) max_temperatura = max_temperature [dan] ; iff (min_temperature(dan] < min_temperatura) min_temperatura = min_temperature [dan] ; ) cout << "Maksimalna temperatura zabiljeZena u toku mjeseca je cout << max_temperatura << cout << "Minimalna temperatura zabiljeZena u toku mjeseca je cout << min_temperatura << *.*; for (dan = 0; dan < broj_dana; dan++) if (max_temperature(dan} == max_temperatura) br_dana_sa_max_temp++; cout << "Maksimalna temperatura zabilezena je "; cout << br_dana_sa_max_temp << " puta u toku mjeseca."; for (dan = 0; dan < broj_dana; dan++) if (max_temperature[dan} < 0) { da_li_je_zima 1; break; ) for (dan = 0; dan < broj_dana; dan++) if (min_temperature(dan] < 15) { da_li_je_ljeto break; ) if (dal je_ljeto && da_li_je_zima) Gout << "Temperaturne oscilacije ovog mjeseca su veoma éudne."; else if (da_li_je_ljeto) cout << "Jako je toplo, vjerovatno je 1jeto. else if (da_li_je_zima) cout << “VJerovatno je zima, temperature su bile ispod nule.*; ) U ovom programu je narogito bitno razlikovati Promjenijive nazvane “max_temperature” i max_temperatura”. “max_temperature” Je niz od 30 elemenata koja guva Promjenijiva “br_dana_sa_ma: ” inieij i ne as _temp” inici maksimalnu temperatura 2a tay mjesec, ne eo.

Vous aimerez peut-être aussi