Professional Documents
Culture Documents
- Nizovi -
Nizovi podataka
Nizovi su skupovi podataka istog tipa
Omoguavaju pristupanje veem broju podataka preko zajednikog simbolikog
imena i indeksa koji daje redni broj elementa u nizu
razreda
Prvi lan niza ima indeks 0 , zadnji ima indeks za jedan manji od duljine niza
lanovi niza se dohvaaju preko njihovog indeksa
Na primjer, naredbom:
Nizovi podataka
Podaci u nizu mogu biti bilo kojeg tipa:
Ugraenog (npr. int, float, ...)
Korisniki definiranog
niza
Na primjer, naredbom:
ocjena[7] = 5;
e se osmom lanu niza ocjena dodijeliti vrijednost 5
a ostale ocjene u nizu e ostati nepromijenjene
Nizovi mogu biti jednodimenzionalni (u linearnom slijedu) ili
viedimenzionalni
Deklaracija jednodimenzionalnih
nizova
Openito se deklaracija niza vri navoenjem
Ako je broj inicijalizatora u listi manji od duljine niza, onda se lanovima kojima
nedostaju inicijalizatori dodjeljuje vrijednost nula
Dakle, naredbom:
Primjer
Treba unijeti N lanova jednodimenzionalnog niza, pa
....
....
Rjeenje
#include <iostream>
using namespace std;
int main ()
{
int N, i, zbroj;
int X[10];
zbroj=0;
do
{
cout << "Upisi broj clanova niza: ";
cin >> N;
}
while((N<=0) || (N>10));
for (i=0; i<N; i++)
{
cout << endl << "Upisi X[" << i << "]: ";
cin >> X[i];
}
cout << endl;
for (i=0; i<N; i++)
{
cout << X[i] << endl;
zbroj=zbroj+X[i];
}
cout << endl << "N = " << N << ". Zbroj " << N << " clanova niza iznosi "<< zbroj << "." << endl;
cout << endl;
return 0;
}
Deklaracija varijabli
#include <iostream>
using namespace std;
int main ()
{
int N, i, zbroj;
int X[10];
zbroj=0;
do
{
cout << "Upisi broj clanova niza: ";
cin >> N;
}
while((N<=0) || (N>10));
for (i=0; i<N; i++)
{
cout << endl << "Upisi X[" << i << "]: ";
cin >> X[i];
}
cout << endl;
for (i=0; i<N; i++)
{
cout << X[i] << endl;
zbroj=zbroj+X[i];
}
cout << endl << "N = " << N << ". Zbroj " << N << " clanova niza iznosi "<< zbroj << "." << endl;
cout << endl;
return 0;
}
Inicijalizacija varijabli
#include <iostream>
using namespace std;
int main ()
{
int N, i, zbroj;
int X[10];
zbroj=0;
do
{
cout << "Upisi broj clanova niza: ";
cin >> N;
}
while((N<=0) || (N>10));
for (i=0; i<N; i++)
{
cout << endl << "Upisi X[" << i << "]: ";
cin >> X[i];
}
cout << endl;
for (i=0; i<N; i++)
{
cout << X[i] << endl;
zbroj=zbroj+X[i];
}
cout << endl << "N = " << N << ". Zbroj " << N << " clanova niza iznosi "<< zbroj << "." << endl;
cout << endl;
return 0;
}
Ispis
#include <iostream>
using namespace std;
int main ()
{
int N, i, zbroj;
int X[10];
zbroj=0;
do
{
cout << "Upisi broj clanova niza: ";
cin >> N;
}
while((N<=0) || (N>10));
for (i=0; i<N; i++)
{
cout << endl << "Upisi X[" << i << "]: ";
cin >> X[i];
}
cout << endl;
for (i=0; i<N; i++)
{
cout << X[i] << endl;
zbroj=zbroj+X[i];
}
cout << endl << "N = " << N << ". Zbroj " << N << " clanova niza iznosi "<< zbroj << "." << endl;
cout << endl;
return 0;
}
Konaan program
#include <iostream>
using namespace std;
int main ()
{
int N, i, zbroj;
int X[10];
zbroj=0;
do
{
cout << "Upisi broj clanova niza: ";
cin >> N;
}
while((N<=0) || (N>10));
for (i=0; i<N; i++)
{
cout << endl << "Upisi X[" << i << "]: ";
cin >> X[i];
}
cout << endl;
for (i=0; i<N; i++)
{
cout << X[i] << endl;
zbroj=zbroj+X[i];
}
cout << endl << "N = " << N << ". Zbroj " << N << " clanova niza iznosi "<< zbroj << "." << endl;
cout << endl;
return 0;
}
Oprez!
C++ ne provjerava granice niza prilikom pristupa
lanovima niza
Ako se navede prevelik ili negativan indeks:
prevoditelj nee javiti pogreku
meutim, to e prouzroiti neispravan rad
programa:
Ako se dohvaa lan s nedozvoljenim indeksom, rezultat je
prema najveem
Tako sortirane brojeve treba ispisati
"Bubble sort" algoritam za sortiranje
pogodan za sortiranje manjeg broja podataka (s
obzirom na brzinu)
Primjer
Imamo niz: 13, 7, 6, 3, 1
Prvi prolaz:
13, 7, 6, 3, 1 7, 13, 6, 3, 1
7, 13, 6, 3, 1 7, 6, 13, 3, 1
7, 6, 13, 3, 1 7, 6, 3, 13, 1
7, 6, 3, 13, 1 7, 6, 3, 1, 13
Drugi prolaz:
7, 6, 3, 1, 13 6, 7, 3, 1, 13
6, 7, 3, 1, 13 6, 3, 7, 1, 13
6, 3, 7, 1, 13 6, 3, 1, 7, 13
Trei prolaz:
6, 3, 1, 7, 13 3, 6, 1, 7, 13
3, 6, 1, 7, 13 3, 1, 6, 7, 13
etvrti prolaz:
3, 1, 6, 7, 13 1, 3, 6, 7, 13
zamjena = true;
}
}
if (zamjena == false) {
break;
}
}
cout << "Brojevi slozeni po velicini: " << endl;
for (i = 0; i < N; ++i) {
cout << Niz[i] << endl;
}
return 0;
}
Dvodimenzionalni nizovi
lanovi dvodimenzionalnog niza imaju dva indeksa
Deklaracija:
int Tablica[3][5];
Niz smo nazvali Tablica jer je dvodimenzionalne
Primjer
Napiimo program za unos lanova
4 5 6