1 / 10

Računalstvo II Programiranje u jeziku C++ Polja

Računalstvo II Programiranje u jeziku C++ Polja. Priredio: Ranko Čelustka Literatura: John R. Hubbard: Programming with C++,Schaum’s Outline Series, McGraw Hill,2000 Stephen G Kochan: Programming in ANSI C,Hayden Books, 1989 http://pubwww.srce.hr/1.tehnicka_skola. Polja.

akiko
Télécharger la présentation

Računalstvo II Programiranje u jeziku C++ Polja

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Računalstvo IIProgramiranje u jeziku C++Polja Priredio: Ranko Čelustka Literatura: John R. Hubbard: Programming with C++,Schaum’s Outline Series, McGraw Hill,2000 Stephen G Kochan: Programming in ANSI C,Hayden Books, 1989 http://pubwww.srce.hr/1.tehnicka_skola

  2. Polja • Polje je niz objekata jednakog tipa. • Objekti od kojih se polje sastoji nazivaju se elementi polja • Pojedini elementi numerirani su redom 0, 1, 2, 3, … • Ti brojevi zovu se indeksi i preko njih se može direktno pristupiti bilo kojem elementu polja • Ako je a ime polja od n elemenata, tada su pojedini elementi označeni s:a[0], a[1], a[2], …, a[n-1] • Indeks ukazuje koliko je neki element udaljen od početnog elementa (koji ima inedks 0) • Polja se koriste kada radimo s više podataka istog tipa koji čine neku cjelinu, a trebamo ih pohraniti radi daljnje obrade • U memoriji polje zauzima kontinuirani prostor

  3. Uočite: s elementima polja može se raditi kao s “običnim” (skalarnim) varijablama! Pozitivna cjelobrojna konstanta Deklaracija polja tip_polja ime_polja[dimenzija]; Primjerice:double a[3]; Dodjela vrijednosti elementima polja a[2]=55.55; a[0]=11.11;a[1]=33.33; Ispis elemenata polja cout <<“a[0]= “ <<a[0] <<endl; cout <<“a[1]= “ <<a[1] <<endl; cout <<“a[2]= “ <<a[2] <<endl; a[0]= 11.11 a[1]= 33.33 a[2]= 55.55

  4. Primjer 1: Učitavnje i ispis elemenata polja #include <iostream.h> void main(){ const int N = 5; double a[N]; cout <<"Upišite " <<N <<" brojeva: "; for (int i=0; i<N; i++) cin >>a[i]; cout <<"Upisali ste slijedeće brojeve: "; for (i=0; i<N; i++) cout <<a[i] <<"\t" ; } Upišite 5 brojeva: 1.1 2.2 3.3 4.4 5.5 Upisali ste slijedeće brojeve: 1.1 2.2 3.3 4.4 5.5 ili cout <<"Ispis obrnutim redoslijedom: "; for (i=N-1; i>=0; i--) cout <<a[i] <<"\t"; Ispis obrnutim redoslijedom: 5.5 4.4 3.3 2.2 1.1

  5. Inicijalizacija polja prilikom deklaracije • Slično kao i sa skalarnim varijablama, polje je moguće inicijalizirati prilikom njegove deklaracije. Primjerice: int a[4] = {22, 33, 66, 55}; char slova[3] = {'a', 'b', 'c'}; • Ako je broj elemenata u listi manji od veličine polja, preostali elementi jednaki su 0. Primjerice: float x[5] = {2.5, 1.2}; int y[100] = {}; Prva dva elementa polja x sadrže 2.5 i 1.2, a ostali nule. Polje y ima 100 elemenata koji su jednaki nuli. • Veličinu polja moguće je izostaviti, primjerice: int b[] = {55, 33, 66}; Veličina polja b je u tom slučaju 3 (tj. jednaka je broju elemenata liste), što je moguće izračunati formulom: velicina_polja = sizeof(b)/sizeof(int); • Ako polje nije inicijalizirano, sadržaj elemenata (prije nego im dodijelimo vrijednost) je posve slučajan!

  6. #include <iostream.h> void main() { const int N = 6; int a[N] = {10, 20}; for (int i=2; i<N; i++) a[i] = i*i; for (i=0; i<N; i++) cout <<"a[" <<i <<"]=" <<a[i] <<" "; } Primjer 2: Dva načina inicijalizacije polja a[0]=10 a[1]=20 a[2]=4 a[3]=9 a[4]=16 a[5]=25 Komentar: prva dva elementa polja inicijalizirana su prilikom deklaracije, a preostala četiri dodjelom vrijednosti u for petlji. Pitanje: Kakav će biti ispis bez prve for petlje? a[0]=10 a[1]=20 a[2]=0 a[3]=0 a[4]=0 a[5]=0

  7. #include <iostream.h> void main() { int zbroj=0; double srednja; const int N = 6; int oc[N] = {4, 3, 5, 3, 4, 4}; cout <<"Mate ima ove ocjene iz fizike: "; for (int i=0; i<N; i++) cout <<oc[i] <<" "; for (i=0; i<N; i++) zbroj=zbroj+oc[i]; srednja=double(zbroj)/N; cout <<"\nSrednja ocjena: " <<srednja <<endl; } Primjer 3: Srednja vrijednost polja Mate ima ove ocjene iz fizike: 4 3 5 3 4 4Srednja ocjena: 3.833333 S double(zbroj) vrši se pretvorba tipa int u double kako bi izbjegli cjelobrojno deljenje! Zadatak za vježbu: a) preuredite ovaj program tako da se unos 6 ocjena vrši preko tipkovnice b)ispišite koliko je bilo ocjena većih od prosječne.

  8. Polje kao parametar funkcije Uočiti:Polje nije lokalna varijabla u funkciji, već funkcija vrši operacije s originalnim poljem iz funkcije main() #include <iostream.h> void ucitajPolje(int x[], int n);void ispisiPolje(int x[], int n); void main() { const int N = 3; int a[N]; ucitajPolje(a, N); ispisiPolje(a, N);}void ucitajPolje(int x[], int n){ for(int i=0; i<n; i++) { cout <<"x[" <<i <<"]= "; cin >>x[i]; }} void ispisiPolje(int x[], int n){ for(int i=0; i<n; i++) { cout <<" x[" <<i <<"]= “ <<x[i]; } } x[0]=11 x[1]=22 x[2]=33 x[0]=11 x[1]=22 x[2]=33

  9. Pronalaženje najvećeg elementa polja Komentar: Pretpostavimo da je prvi element polja najveći. Zapamtimo njegov indeks (0). Zatim provjeravamo da li među preostalim elementima ima neki koji je veći od trenutno najvećeg. Ako ima, zapamtimo njegov indeks. Na kraju imamo indeks najmanjeg elementa (imax)i tu vrijednost funkcija vraća. int max(int x[], int n) { int imax=0; for (int i=1; i<n; i++) if (x[i]>x[imax]) imax=i; return(imax);} Ako znamo da je indeks najvećeg elementa imax, znamo i to da najveći element niza ima vrijednost x[imax] Za vježbu: Napišite funkciju koja će pronaći indeks najmanjeg elementa polja.

  10. Sortiranje polja metodom mjehurića x i=1 0 1 2 3 4 void sortirajPolje(int x[], int n) {for(int i=1; i<n; i++) for(int j=0; j<n-i; j++) if(x[j]>x[j+1]) { int temp=x[j+1]; x[j+1]=x[j]; x[j]=temp; } } i=2 i=3 i=4

More Related