Увод в програмирането  alpha
Масиви низ от символи

Масив

Масивът е n-мерна наредена съвкупност от елементи от един и същ тип. Преди да се използва един масив той трябва да се дефинира. NB! Има ограничения в размерността!

Примери за дефиниране на масив:

        int arr[5]; // дефинираме масив с 5 елемента тип int

На мястото на "5" може да стои произволна целочислена константа.

Примери: 4,10,11,12,15,100,100000 ;

Работа с елементи на масив:

        int vect[7] = { 1, 2, 3, 4, 5, 6, 7 };
        // Дефинира масив с 7 елемента като същевременно инициализираме стойностите на масива
        cout<<vect[0]<<endl;
        // извежда първият елемент от масива ( 1 ) на екрана последван от нов ред;

        cout<<vect[1]<<endl;
        // извежда първият елемент от масива ( 2 ) на екрана последван от нов ред;
        
        cout<<vect[2]<<endl;
        // извежда първият елемент от масива ( 3 ) на екрана последван от нов ред;
        
        cout<<vect[3]<<endl;
        // извежда първият елемент от масива ( 4 ) на екрана последван от нов ред;
        
        cout<<vect[4]<<endl;
        // извежда първият елемент от масива ( 5 ) на екрана последван от нов ред;
        
        cout<<vect[5]<<endl;
        // извежда първият елемент от масива ( 6 ) на екрана последван от нов ред;
        
        cout<<vect[6]<<endl;
        // извежда първият елемент от масива ( 7 ) на екрана последван от нов ред;
Note
При дефиниране на масив arr[N] индексите започват от 0 и свършват с N-1.

Пример:

        int arr[5]; 
        // Валидни индекси на елементи от масива са 0, 1, 2, 3, 4 .

Едномерните масиви се използват за представяне на вектори: -> Последователните елементи се представят като последователни полета в оперативната памет.

Пример: Искаме да ползваме следния вектор: a ( 1, 2, 3) Като код представянето изглежда така:

        int vector_a [3] = { 1, 2, 3};

Представяне на матрици - двумерни масиви:

        double mat[3][2];

Инициализиране на елементите на масива:

        ляляляля

Обръщения към елементите на масива:

        mat[0][0];
        mat[0][1];
        mat[1][0];
        mat[1][1];
        mat[2][0];
        mat[2][1];

Елементите на масива се записват в посочения ред в оперативната памет.

Общ модел на достъпване на елемент:

        mat[i][j];

Пример за работа с 3мерен масив:

        float table[4][3][2];
        // дефиниране на 3мерен масив;
        
        // Достъпване на елементи:
        table[0][0][0];
        table[0][0][1];
        table[0][1][0];
        table[0][1][1];
        table[0][2][0];
        table[0][2][1];
        
        table[1][0][0];
        table[1][0][1];
        table[1][1][0];
        table[1][1][1];
        table[1][2][0];
        table[1][2][1];
        
        table[2][0][0];
        table[2][0][1];
        table[2][1][0];
        table[2][1][1];
        table[2][2][0];
        table[2][2][1];
        
        table[3][0][0];
        table[3][0][1];
        table[3][1][0];
        table[3][1][1];
        table[3][2][0];
        table[3][2][1];
Note
Компилаторите не правят проверки дали индексите са част от масива!
За компилаторът валидно обръщение е table[10][10][10] , но то води до грешка по време на изпълнение на програмата.
При работа с масиви бъдете изключително внимателни с индексите им.

Едномерен символен масив / масив от char-ове /

        char str[12];

В C/C++ няма вграден тип низ от символи ( string ).

За това разглеждаме едномерни символни масиви като променливи от тип низ от символи.

Работа с низове:

        char str[12];
        // Грешно:
        str = "abc"; // Невалидна команда! 
        
        // Правилно:
        str[0] = 'a';
        str[1] = 'b';
        str[2] = 'c';
        str[3] = '\0'; // специален символ; нулев байт; сигнализира край на низ

С дефинирането на един масив се определя диапазоните на индексите.

Не се прави вградена проверка дали индексът, който се използва, е в диапазоните.

Ако индексът не е в зададените диапазони се генерира адрес на поле, което е извън разпреленената памет за масива.

Стойността на елемента е неопределена.

Трябва да се оцени правилно колко памет изисква масивът.

Задача:

От клавиатурата се въвеждат n цели числа и се извеждат в обратен ред:

        #include <iostream >
        
        using namespace std;
        
        int main()
        {
                int n,i;
                int number[20];
                
                cout<<"Въведете броя на числата: \n"
                cin>>n;
                i = 0;
                while( i < n)
                {
                        cout<<"Въведете "<< i <<"-то число: ";
                        cin>>number[i];
                        i++;
                }
                cout<<"\n Числата в обратен ред: \n";
                i = n-1;
                while( i >= 0 )
                {
                        i--;
                        cout<<number[i]<<"  ";
                }
                return 0;
                
        }
Note
String не е вграден тип в C++!