U ovom uputstvu naučit ćemo raditi s nizovima. Naučit ćemo deklarirati, inicijalizirati i pristupati elementima niza u programiranju na C ++ uz pomoć primjera.
U C ++-u niz je varijabla koja može pohraniti više vrijednosti istog tipa. Na primjer,
Pretpostavimo da razred ima 27 učenika, a mi moramo pohraniti ocjene svih njih. Umjesto stvaranja 27 zasebnih varijabli, možemo jednostavno stvoriti niz:
double grade(27);
Ovdje je ocjena niz koji može sadržavati najviše 27 elemenata double
tipa.
U C ++-u se veličina i vrsta polja ne mogu mijenjati nakon njegove deklaracije.
Izjava o nizu C ++
dataType arrayName(arraySize);
Na primjer,
int x(6);
Ovdje,
int
- vrsta elementa za pohranu- x - naziv niza
6
- veličina polja
Pristupite elementima u nizu C ++
U C ++-u je svaki element u nizu povezan s brojem. Broj je poznat kao indeks niza. Pomoću tih indeksa možemo pristupiti elementima niza.
// syntax to access array elements array(index);
Razmotrimo niz x koji smo vidjeli gore.
![](https://cdn.wiki-base.com/7012201/c_arrays_with_examples.png.webp)
Nekoliko stvari koje treba zapamtiti:
- Indeksi niza započinju s
0
. Značenje x (0) prvi je element pohranjen u indeksu0
. - Ako je veličina niza
n
, posljednji se element sprema u indeks(n-1)
. U ovom je primjeru x (5) posljednji element. - Elementi niza imaju uzastopne adrese. Na primjer, pretpostavimo da je početna adresa
x(0)
2120d. Tada će adresa sljedećeg elementax(1)
biti 2124d, adresax(2)
2128d i tako dalje.
Ovdje se veličina svakog elementa povećava za 4. To je zato što je veličinaint
4 bajta.
Inicijalizacija niza C ++
U C ++-u je moguće inicijalizirati niz tijekom deklaracije. Na primjer,
// declare and initialize and array int x(6) = (19, 10, 8, 17, 9, 15);
![](https://cdn.wiki-base.com/7012201/c_arrays_with_examples_2.png.webp)
Druga metoda za inicijalizaciju niza tijekom deklaracije:
// declare and initialize an array int x() = (19, 10, 8, 17, 9, 15);
Ovdje nismo spomenuli veličinu niza. U takvim slučajevima kompajler automatski izračunava veličinu.
C ++ niz s praznim članovima
U C ++-u, ako niz ima veličinu n
, možemo pohraniti do n broja elemenata u polje. Međutim, što će se dogoditi ako pohranimo manje od n broja elemenata.
Na primjer,
// store only 3 elements in the array int x(6) = (19, 10, 8);
Ovdje niz x ima veličinu 6
. Međutim, inicijalizirali smo ga sa samo 3 elementa.
U takvim slučajevima, sastavljač dodjeljuje slučajne vrijednosti preostalim mjestima. Često je ova slučajna vrijednost jednostavno 0
.
![](https://cdn.wiki-base.com/7012201/c_arrays_with_examples_3.png.webp)
Kako umetnuti i ispisati elemente niza?
int mark(5) = (19, 10, 8, 17, 9) // change 4th element to 9 mark(3) = 9; // take input from the user // store the value at third position cin>> mark(2); // take input from the user // insert at ith position cin>> mark(i-1); // print first element of the array cout <> mark(i-1);
Primjer 1: Prikazivanje elemenata niza
#include using namespace std; int main() ( int numbers(5) = (7, 5, 6, 12, 35); cout << "The numbers are: "; // Printing array elements // using range based for loop for (const int &n : numbers) ( cout << n << " "; ) cout << "The numbers are: "; // Printing array elements // using traditional for loop for (int i = 0; i < 5; ++i) ( cout << numbers(i) << " "; ) return 0; )
Izlaz
Brojevi su: 7 5 6 12 35 Brojevi su: 7 5 6 12 35
Ovdje smo koristili for
petlju za ponavljanje od i = 0
do i = 4
. U svakoj smo iteraciji tiskali numbers(i)
.
Ponovno smo koristili raspon zasnovan na petlji za ispis elemenata niza. Da biste saznali više o ovoj petlji, provjerite C ++ Ranged for Loop.
Napomena: U našoj petlji koja se temelji na rasponu koristili smo kôd const int &n
umjesto int n
kao deklaraciju raspona. Međutim, const int &n
preferira se jer:
- Korištenje
int n
jednostavno kopira elemente niza u varijablu n tijekom svake iteracije. Ovo nije memorijski učinkovito.
& n, međutim, koristi memorijsku adresu elemenata niza za pristup njihovim podacima bez kopiranja u novu varijablu. Ovo je memorijski učinkovito. - Jednostavno ispisujemo elemente niza, a ne mijenjamo ih. Stoga koristimo
const
kako ne bismo slučajno promijenili vrijednosti niza.
Primjer 2: Uzmite ulaze od korisnika i spremite ih u niz
#include using namespace std; int main() ( int numbers(5); cout << "Enter 5 numbers: " << endl; // store input from user to array for (int i = 0; i > numbers(i); ) cout << "The numbers are: "; // print array elements for (int n = 0; n < 5; ++n) ( cout << numbers(n) << " "; ) return 0; )
Izlaz
Enter 5 numbers: 11 12 13 14 15 The numbers are: 11 12 13 14 15
Once again, we have used a for
loop to iterate from i = 0
to i = 4
. In each iteration, we took an input from the user and stored it in numbers(i)
.
Then, we used another for
loop to print all the array elements.
Example 3: Display Sum and Average of Array Elements Using for Loop
#include using namespace std; int main() ( // initialize an array without specifying size double numbers() = (7, 5, 6, 12, 35, 27); double sum = 0; double count = 0; double average; cout << "The numbers are: "; // print array elements // use of range-based for loop for (const double &n : numbers) ( cout << n << " "; // calculate the sum sum += n; // count the no. of array elements ++count; ) // print the sum cout << "Their Sum = " << sum << endl; // find the average average = sum / count; cout << "Their Average = " << average << endl; return 0; )
Output
The numbers are: 7 5 6 12 35 27 Their Sum = 92 Their Average = 15.3333
In this program:
- We have initialized a double array named numbers but without specifying its size. We also declared three double variables sum, count, and average.
Here,sum =0
andcount = 0
. - Then we used a range based
for
loop to print the array elements. In each iteration of the loop, we add the current array element to sum. - Također povećavamo vrijednost count za
1
u svakoj iteraciji, tako da možemo dobiti veličinu niza do kraja for petlje. - Nakon ispisa svih elemenata, ispisujemo zbroj i prosjek svih brojeva. Prosjek brojeva dan je s
average = sum / count;
Napomena:for
Umjesto uobičajene for
petlje koristili smo rangiranu petlju.
Normalna for
petlja zahtijeva da odredimo broj iteracija, koji se daje veličini niza.
Ali rangirana for
petlja ne zahtijeva takve specifikacije.
C ++ niz izvan granica
Ako deklariramo niz veličine 10, tada će niz sadržavati elemente od indeksa 0 do 9.
Međutim, ako pokušamo pristupiti elementu s indeksom 10 ili većim od 10, to će rezultirati nedefiniranim ponašanjem.