OSNOVE PROGRAMIRANJA U PROGRAMSKOM JEZIKU C++ OSNOVE PROGRAMIRANJA U PROGRAMSKOM JEZIKU 7. dio
Polja Polje (engl. array) je niz objekata istog 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 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. Polja mogu biti: jednodimenzionalna i višedimenzionalna
Jednodimenzionalna polja Deklaracija: tip naziv_polja [dimenzija] npr. int a[100]; float i[10]; char t[100]; Duljina deklariranog polja se ne može mijenjati.
Jednodimenzionalna polja Pridruživanje vrijednosti elementima polja se može obaviti prilikom deklariranja, primjerice: int broj[5] = {5, 10, 15, 20, 25} ili int broj[] = {5, 10, 15, 20, 25} Ako je deklarirana dimenzija polja veća od pridruženih podataka, preostalim se članovima pridružuje 0. int A[5] = {1, 2, 3} A[0] A[1] A[2] A[3] A[4] 1 2 3
Jednodimenzionalna polja Pridruživanje vrijednosti i/ili ispis vrijednosti članova polja najčešće se obavlja u petlji. … //DEKLARIRANJE int x[6]; int i; //UNOS ČLANOVA POLJA for (i=0;i<6;i++) { cout<<"x["<<i<<"]="; cin>>x[i]; } //ISPIS ČLANOVA POLJA cout<<endl<<"x["<<i<<"]="<<x[i];
Zadatak 1. Unijeti n članova jednodimenzionalnog polja (zadaje korisnik), ispisati ih u obrnutom redoslijedu (od zadnjeg ka prvom) i ispisati njihov zbroj.
Zadatak 1. #include<iostream> #include<conio.h> using namespace std; int main() { int i,n,zbroj; zbroj=0; cout<<"Broj clanova niza? "; cin>>n; int x[n]; for (i=0;i<n;i++) cin>>x[i]; zbroj=zbroj+x[i]; } for (i=n-1;i>=0;i--) cout<<"x["<<i<<"]="<<x[i]<<endl; cout<<"Zbroj clanova polja = "<<zbroj; getch(); return 0;
Zadatak 2. Unijeti n članova jednodimenzionalnog polja (zadaje korisnik), sortirati ih u opadajućem redoslijedu i ispisati.
Zadatak 2. #include <iostream> #include <conio.h> using namespace std; int main () { // DEKLARIRANJE int x[10]; int y[10]; int i, j, n; // UNOS cout << "Unesite broj clanova polja: "; cin >> n; for (i = 0; i < n; i++) cout << "Unesite clan br. " << i << ": "; cin >> x[i]; y[i] = x[i]; }
Zadatak 2. // SORTIRANJE for (i = 0; i < n-1; i++) { for (j = i+1; j < n; j++) if (y[i] < y[j]) swap(y[i],y[j]); // funkcija swap se korisiti za zamjenu vrijednosti dvije darijable } // ISPIS cout <<endl<< "niz x:" << '\t' << "sortirani niz y:" << endl; for (i = 0; i < n; i++) cout << x[i] << '\t' << y[i] << endl; getch(); return 0;
Dvodimenzionalna polja Dvodimenzionalno polje se može shvatiti kao tablica sa određenim brojem redova i stupaca. Položaj člana polja određen je sa dva indeksa, gdje prvi predstavlja red, a drugi stupac. Deklaracija dvodimenzionalnog polja: int A[3][2] Prvi član polja je A[0][0], a posljednji A[2][1]
Dvodimenzionalna polja Pridruživanje vrijednosti članovima dvodimenzionalnog polja vrši se tako da se vrijednosti svakog reda navode unutar vitičastih zagrada. { {...,...,...}, {...,...,...} ... }; Primjerice: int A[3][2]={{1,2}, {3,4}, {5,6}}; 1. stupac 2. stupac red 1 2 2. red 3 4 3. red 5 6
Zadatak 3. Unijeti članove dvodimenzionalnog polja i ispisati ih u obliku tablice. 10 11 12 20 21 22
Zadatak 3. #include<iostream> #include<conio.h> using namespace std; int main() { int i,j; // DEKLARIRANJE POLJA I PRIDRUŽIVANJE VRIJEDNOSTI int X[2][3]={{10,11,12}, {20,21,22}}; for(i=0;i<2;i++) for(j=0;j<3;j++) // ISPIS VRIJEDNOSTI ČLANA [i][j] cout<<X[i][j]<<" "; } cout<<endl; getch(); return 0;
Dvodimenzionalna polja Ukoliko je deklarirana dimenzija niza veća od broja pridruženih vrijednosti, ostalim članovima se dodjeljuje vrijednost 0. Primjerice, da smo u prethodnom primjeru umjesto int X[2][3]={{10,11,12}, {20,21,22}}; naveli int X[2][3]={10,11,12,20} članovima X[1][1] i X[1][2] bi bila pridružena 0.
Dvodimenzionalna polja 10 11 12 20 0 0
Zadatak 4. Unijeti članove dvodimenzionalnog polja [3][3] te ispisati ih tako da u redovima budu vrijednosti kolona. Primjer: 1 2 3 -> 1 4 7 4 5 6 -> 2 5 8 7 8 9 -> 3 6 9
Zadatak 4. #include <iostream> #include <conio.h> #include <iomanip> using namespace std; int main() { int i,j; int X[3][3]; // UNOS CLANOVA NIZA for (i=0;i<3;i++) for (j=0;j<3;j++) cout<<"X["<<i<<"]]"<<j<<"] "; cin>>X[i][j]; cout<<endl; }
Zadatak 4. // ISPIS UNIJETOG POLJA for (j=0;j<3;j++) { for (i=0;i<3;i++) cout<<setw(5)<<X[j][i]; } cout<<endl; cout<<endl<<endl; // IPIS POLJA SA ZAMJENOM REDOVA I KOLONA (TRANSPOZICIJA) cout<<setw(5)<<X[i][j]; getch(); return 0;