V tej vadnici se bomo naučili delati z nizi. S pomočjo primerov se bomo naučili prijavljati, inicializirati in dostopati do elementov matrike v programiranju na C ++.
V jeziku C ++ je polje spremenljivka, ki lahko shrani več vrednosti istega tipa. Na primer
Recimo, da ima razred 27 učencev in moramo shraniti ocene vseh. Namesto da ustvarimo 27 ločenih spremenljivk, lahko preprosto ustvarimo matriko:
double grade(27);
Tu je ocena matrika, ki lahko vsebuje največ 27 elementov double
tipa.
V C ++ po deklaraciji ni mogoče spremeniti velikosti in vrste polj.
Izjava o matriki C ++
dataType arrayName(arraySize);
Na primer
int x(6);
Tukaj,
int
- vrsta elementa za shranjevanje- x - ime matrike
6
- velikost polja
Dostopajte do elementov v matriki C ++
V jeziku C ++ je vsak element v matriki povezan s številom. Številka je znana kot indeks matrike. Z uporabo teh indeksov lahko dostopamo do elementov polja.
// syntax to access array elements array(index);
Upoštevajte matriko x, ki smo jo videli zgoraj.
![](https://cdn.wiki-base.com/7012201/c_arrays_with_examples.png.webp)
Nekaj stvari, ki si jih je treba zapomniti:
- Indeksi nizov se začnejo z
0
. Pomen x (0) je prvi element, shranjen v indeksu0
. - Če je velikost matrike
n
, je zadnji element shranjen v indeksu(n-1)
. V tem primeru je x (5) zadnji element. - Elementi polja imajo zaporedne naslove. Denimo, da je začetni naslov
x(0)
2120d. Nato bo naslov naslednjega elementax(1)
2124d, naslovx(2)
2128d in tako naprej.
Tu se velikost vsakega elementa poveča za 4. To je zato, ker je velikostint
4 bajtov.
Inicializacija matrike C ++
V jeziku C ++ je mogoče matriko inicializirati med deklaracijo. Na primer
// 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 inicializacijo matrike med deklaracijo:
// declare and initialize an array int x() = (19, 10, 8, 17, 9, 15);
Tu nismo omenili velikosti polja. V takih primerih prevajalnik samodejno izračuna velikost.
Polje C ++ s praznimi člani
Če ima matrika velikost v C ++, n
lahko v njo shranimo do n elementov. Kaj pa se bo zgodilo, če shranimo manj kot n števila elementov.
Na primer
// store only 3 elements in the array int x(6) = (19, 10, 8);
Tu je polje x velikost 6
. Vendar smo ga inicializirali s samo 3 elementi.
V takih primerih prevajalnik preostalim mestom dodeli naključne vrednosti. Pogosto je ta naključna vrednost preprosto 0
.
![](https://cdn.wiki-base.com/7012201/c_arrays_with_examples_3.png.webp)
Kako vstaviti in natisniti elemente matrike?
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);
Primer 1: Prikaz elementov matrike
#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; )
Izhod
Številke so: 7 5 6 12 35 Številke so: 7 5 6 12 35
Tu smo uporabili for
zanko za ponovitev od i = 0
do i = 4
. V vsaki ponovitvi smo natisnili numbers(i)
.
Za izpis elementov polja smo spet uporabili obseg, ki temelji na zanki. Če želite izvedeti več o tej zanki, preverite C ++ Ranged for Loop.
Opomba: V naši zanki, ki temelji na obsegu, smo uporabili kodo const int &n
namesto int n
kot izjavo obsega. Vendar const int &n
je bolj zaželena, ker:
- Uporaba
int n
preprosto kopira elemente polja v spremenljivko n med vsako ponovitvijo. To ni pomnilniško učinkovito.
& n pa za dostop do njihovih podatkov uporablja pomnilniški naslov elementov polja, ne da bi jih kopiral v novo spremenljivko. To je pomnilniško učinkovito. - Preprosto tiskamo elemente polja in jih ne spreminjamo. Zato uporabljamo,
const
da ne bi pomotoma spremenili vrednosti polja.
2. primer: Vzemite vnose uporabnika in jih shranite v matriko
#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; )
Izhod
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. - V
1
vsaki ponovitvi povečamo tudi vrednost count tako, da lahko dobimo velikost polja do konca zanke for. - Po tiskanju vseh elementov natisnemo vsoto in povprečje vseh števil. Povprečje števil je podano z
average = sum / count;
Opomba:for
Namesto običajne for
zanke smo uporabili obsežno zanko.
Običajna for
zanka zahteva, da določimo število ponovitev, ki je določeno z velikostjo polja.
Toda for
zanka z obsegom ne zahteva takšnih specifikacij.
Matrika C ++ zunaj meja
Če razglasimo polje velikosti 10, bo polje vsebovalo elemente od indeksa 0 do 9.
Če pa poskusimo dostopiti do elementa z indeksom 10 ali več kot 10, bo to povzročilo nedefinirano vedenje.