У овом упутству научићемо рад са низовима. Научићемо да декларишемо, иницијализујемо и приступимо елементима низа у програмирању на Ц ++ уз помоћ примера.
У Ц ++, низ је променљива која може да ускладишти више вредности истог типа. На пример,
Претпоставимо да разред има 27 ученика, а ми морамо да сачувамо оцене свих њих. Уместо да креирамо 27 засебних променљивих, можемо једноставно створити низ:
double grade(27);
Овде је оцена низ који може да садржи највише 27 елемената double
типа.
У Ц ++, величина и врста низа не могу се мењати након његове декларације.
Декларација низа Ц ++
dataType arrayName(arraySize);
На пример,
int x(6);
Ево,
int
- врста елемента који треба чувати- к - име низа
6
- величина низа
Приступ елементима у низу Ц ++
У Ц ++-у је сваки елемент у низу повезан са бројем. Број је познат као индекс низа. Помоћу тих индекса можемо приступити елементима низа.
// syntax to access array elements array(index);
Размотримо низ к који смо видели горе.
![](https://cdn.wiki-base.com/7012201/c_arrays_with_examples.png.webp)
Неколико ствари које треба запамтити:
- Индекси низа почињу са
0
. Значење к (0) је први елемент сачуван у индексу0
. - Ако је величина низа
n
, последњи елемент се чува у индексу(n-1)
. У овом примеру, к (5) је последњи елемент. - Елементи низа имају узастопне адресе. На пример, претпоставимо да је почетна адреса
x(0)
2120д. Тада ће адреса следећег елементаx(1)
бити 2124д, адресаx(2)
2128д и тако даље.
Овде се величина сваког елемента повећава за 4. То је зато што је величинаint
4 бајта.
Иницијализација низа Ц ++
У Ц ++-у је могуће иницијализирати низ током декларације. На пример,
// 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)
Друга метода за иницијализацију низа током декларације:
// declare and initialize an array int x() = (19, 10, 8, 17, 9, 15);
Овде нисмо поменули величину низа. У таквим случајевима, компајлер аутоматски израчунава величину.
Ц ++ низ са празним члановима
У Ц ++-у, ако низ има величину n
, можемо да похранимо до н броја елемената у поље. Међутим, шта ће се догодити ако похранимо мање од н броја елемената.
На пример,
// store only 3 elements in the array int x(6) = (19, 10, 8);
Овде низ к има величину 6
. Међутим, иницијализовали смо га са само 3 елемента.
У таквим случајевима, компајлер додељује случајне вредности преосталим местима. Често је ова случајна вредност једноставно 0
.
![](https://cdn.wiki-base.com/7012201/c_arrays_with_examples_3.png.webp)
Како уметнути и одштампати елементе низа?
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);
Пример 1: Приказивање елемената низа
#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; )
Оутпут
Бројеви су: 7 5 6 12 35 Бројеви су: 7 5 6 12 35
Овде смо користили for
петљу за понављање од i = 0
до i = 4
. У свакој итерацији смо штампали numbers(i)
.
Поново смо користили опсег заснован на петљи за испис елемената низа. Да бисте сазнали више о овој петљи, проверите Ц ++ Рангед фор Лооп.
Напомена: У нашој петљи заснованој на опсегу користили смо код const int &n
уместо int n
као декларацију опсега. Међутим, предност const int &n
се даје јер:
- Употреба
int n
једноставно копира елементе низа у променљиву н током сваке итерације. Ово није меморијски ефикасно.
& н, међутим, користи меморијску адресу елемената низа за приступ њиховим подацима без копирања у нову променљиву. Ово је меморијски ефикасно. - Једноставно исписујемо елементе низа, а не их мењамо. Због тога користимо
const
како не бисмо случајно променили вредности низа.
Пример 2: Узмите улазе од корисника и спремите их у низ
#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; )
Оутпут
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. - Такође повећавамо вредност цоунт за
1
у свакој итерацији, тако да можемо добити величину низа до краја петље фор. - Након штампања свих елемената, исписујемо збир и просек свих бројева. Просек бројева дат је са
average = sum / count;
Напомена:for
Уместо нормалне for
петље користили смо петљу са опсегом.
Нормална for
петља захтева да одредимо број итерација, који је дат величином низа.
Али рангирана for
петља не захтева такве спецификације.
Ц ++ низ изван граница
Ако прогласимо низ величине 10, тада ће низ садржати елементе од индекса 0 до 9.
Међутим, ако покушамо да приступимо елементу са индексом 10 или већим од 10, то ће резултирати недефинисаним понашањем.