C ++ nizovi (s primjerima)

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 doubletipa.

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.

Elementi niza u C ++

Nekoliko stvari koje treba zapamtiti:

  • Indeksi niza započinju s 0. Značenje x (0) prvi je element pohranjen u indeksu 0.
  • 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 elementa x(1)biti 2124d, adresa x(2)2128d i tako dalje.
    Ovdje se veličina svakog elementa povećava za 4. To je zato što je veličina int4 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);
Elementi niza C ++ i njihovi podaci

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.

Praznim članovima polja automatski se dodjeljuje vrijednost 0

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 forpetlju za ponavljanje od i = 0do 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 &numjesto int nkao deklaraciju raspona. Međutim, const int &npreferira se jer:

  1. Korištenje int njednostavno 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.
  2. Jednostavno ispisujemo elemente niza, a ne mijenjamo ih. Stoga koristimo constkako 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:

  1. 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 and count = 0.
  2. 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.
  3. Također povećavamo vrijednost count za 1u svakoj iteraciji, tako da možemo dobiti veličinu niza do kraja for petlje.
  4. Nakon ispisa svih elemenata, ispisujemo zbroj i prosjek svih brojeva. Prosjek brojeva dan je saverage = sum / count;

Napomena:for Umjesto uobičajene forpetlje koristili smo rangiranu petlju.

Normalna forpetlja zahtijeva da odredimo broj iteracija, koji se daje veličini niza.

Ali rangirana forpetlja 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.

Zanimljivi članci...