Ц ++ низови (са примерима)

У овом упутству научићемо рад са низовима. Научићемо да декларишемо, иницијализујемо и приступимо елементима низа у програмирању на Ц ++ уз помоћ примера.

У Ц ++, низ је променљива која може да ускладишти више вредности истог типа. На пример,

Претпоставимо да разред има 27 ученика, а ми морамо да сачувамо оцене свих њих. Уместо да креирамо 27 засебних променљивих, можемо једноставно створити низ:

 double grade(27);

Овде је оцена низ који може да садржи највише 27 елемената doubleтипа.

У Ц ++, величина и врста низа не могу се мењати након његове декларације.

Декларација низа Ц ++

 dataType arrayName(arraySize);

На пример,

 int x(6);

Ево,

  • int - врста елемента који треба чувати
  • к - име низа
  • 6 - величина низа

Приступ елементима у низу Ц ++

У Ц ++-у је сваки елемент у низу повезан са бројем. Број је познат као индекс низа. Помоћу тих индекса можемо приступити елементима низа.

 // syntax to access array elements array(index);

Размотримо низ к који смо видели горе.

Елементи низа у Ц ++

Неколико ствари које треба запамтити:

  • Индекси низа почињу са 0. Значење к (0) је први елемент сачуван у индексу 0.
  • Ако је величина низа n, последњи елемент се чува у индексу (n-1). У овом примеру, к (5) је последњи елемент.
  • Елементи низа имају узастопне адресе. На пример, претпоставимо да је почетна адреса x(0)2120д. Тада ће адреса следећег елемента x(1)бити 2124д, адреса x(2)2128д и тако даље.
    Овде се величина сваког елемента повећава за 4. То је зато што је величина int4 бајта.

Иницијализација низа Ц ++

У Ц ++-у је могуће иницијализирати низ током декларације. На пример,

 // declare and initialize and array int x(6) = (19, 10, 8, 17, 9, 15);
Елементи низа Ц ++ и њихови подаци

Друга метода за иницијализацију низа током декларације:

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

Празним члановима низа аутоматски се додељује вредност 0

Како уметнути и одштампати елементе низа?

 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се даје јер:

  1. Употреба int nједноставно копира елементе низа у променљиву н током сваке итерације. Ово није меморијски ефикасно.
    & н, међутим, користи меморијску адресу елемената низа за приступ њиховим подацима без копирања у нову променљиву. Ово је меморијски ефикасно.
  2. Једноставно исписујемо елементе низа, а не их мењамо. Због тога користимо 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:

  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. Такође повећавамо вредност цоунт за 1у свакој итерацији, тако да можемо добити величину низа до краја петље фор.
  4. Након штампања свих елемената, исписујемо збир и просек свих бројева. Просек бројева дат је саaverage = sum / count;

Напомена:for Уместо нормалне forпетље користили смо петљу са опсегом.

Нормална forпетља захтева да одредимо број итерација, који је дат величином низа.

Али рангирана forпетља не захтева такве спецификације.

Ц ++ низ изван граница

Ако прогласимо низ величине 10, тада ће низ садржати елементе од индекса 0 до 9.

Међутим, ако покушамо да приступимо елементу са индексом 10 или већим од 10, то ће резултирати недефинисаним понашањем.

Занимљиви Чланци...