Масиви - лекции

  • Масиви

     

    1.      Структурни типове данни – често в практиката се налага да бъдат обработвани множество типове данни. Например : програма , която въвежда данни за отсъствията на учениците от един клас за едноседмичен период с цел обработката им. Задачата изисква запазване броя на отсъствията за дните от седмицата .

    Отсъствията за:  Понеделник, Вторник, Сряда, Четвъртък и Петък ; при това всяка променлива трябва да е от реален тип. Ако при решението на задачата се използват дотук познатите начини за работа с променливи е необходимо да се декларират около 180 различни променливи за една учебна година. Това ще усложни прекалено записа на алгоритъма, неговата четимост и вероятността от допускането на грешки нараства.

    Задача от подобен род броят на елементите за обработка е прекалено голям и не е удачно да се използват само познатите ни прости типове данни.

    Основни скаларни типове данни са: целочислен (int-4B) , реален (float-4B, double-8B), логически (bool-1B), символен (char-1B).

    Структура от данни се нарича организирана информация, която може да бъде описана, създадена и обработена с помоща на програма.

    2.      Структутрен тип данни – масив.

    Масивът е структурен тип данни, представляващ край на редица от еднотипни елементи с ряк достъп да всеки елемент.

    За решаването на задачата за отсъствията е удобно да се използва структурен тип данни – масив. Необходима е променлива, от тип масив. Името на тази променлива е „otsyst”. Понеже учебните дни в седмицата са 5, то елементите на масива „otsyst” са точно 5. Тази променлива „otsyst” се състои от клетки последователно разположени в ОП (оперативна памет). Във всяка от клетките може да се запише едно реално число.

     

    Масивът е статична структура от данни, защото в процеса на обработване е невъзможно да се изключват или добавят нови елементи.

     

    Отделните клетки се наричат елементи на масива, а означенията otsyst [0], [1], [2], [3], [4] се наричат индексирани променливи.

    3.      Деклариране на масив – за изграждането на един масив определящи са броят на елементите му и техният тип.

    Пример:

    Програма, която въвежда 30 цели числа от клавиатурата и намира и отпечатва средноаритметичното на отрицателните числа, най - малкото въведено отрицателно число, сумата на абсолютните стиности в интервала [-10 , 10]. Задачата да се реши с масиви.

     

     

     

     

     

     

     

     

     

    #include <iomanip.h>

    #include <conio.h>

    int main ( )

    { int n, iotr = 0, nom_otr = 0;

       int S rar = 0, S = 0, min_otr = 0;

       int x[30];

      do

       { cout<<” Broi chisla: “;

          cin>>n;

          if( n>1|| n<30 )

             cout<<” n trqbva da e mejdu 1 i 30 !\n”;

       }

      while ( n<1 || n>30 )

        for (int i = 0; i <= n-1; i++)

        { cout<<”x [“ << i <<”]= “;

           cin >> x[i];

        }

       for (i = 0; i <= n-1; i++)

       { if (x[i]<0 && x[i] % 2 = =0)

          S rar + = x[i];

           if (x[i] < 0 && min_otr < x[i])

            { min_otr = x[i];

              nom_min = i;

             }

           if(x[i] >-10 && x[i] < 10)

             S + =x[i];

     

     

    В Примера броят на елементите на масива x е 30 и са цели числа.

    За друга задача може да се изисква масивът да има повече или по – малко елементи и те да са от друг тип. Максималният брой елементи и техния тип се задават ри декларацията на масива.

    Синтаксис: <тип> <име на масива>[<брой елементи>];

    Където <тип> - може да бъде всеки стандартен или структурен тип; нарича се базов тип на елементите от масив;

    <име на масив> - идентификатор, който се задава от програмиста;

    [<брой елементи>] – константа от дискретен тип, която задава максималния брой елементи на масива;

     

    Семантика: В ОП се заделят [<брой елементи>] последователни клетки. Големината на всяка клетка съответства на базовия тип на масива.

    Достъпът до всеки елемент на масива се осъществява посредством индексирана променлива (x[i]), в която са оказани името на масива и индексът (номерът) на съответния елемент поставен в квадратни скоби. Индексите на елементите  на масива имат номерация, започваща от 0 и са задължително от дискретен тип – целочислен, символен или логически.

     

    Int ms[‘a’]; - декларация на масив

     

    Символния тип чрез своя ASCII код задава брой елементи на масива. Размерът на заделената ОП е 97 клетки по 4B, защото ASCII кодът на символа А е 97.

    4.      Основни алгоритми на работа с масиви:

    а) сумиране на елементите с масив;

    б) преброяване елементите на масив отговарящи на дадено условие;

    в) намиране на максимален (минимален) елемент в масив;

    г) търсене на елемент в масив;

    д) размяна стойностите на два елемента от масив.

    5.      Инициялизация на масив – когато се декларира променлива от стандартен тип,  тя риема случайна стойност, налична в ОП. При декларирането на масив, елементите му също съдържат случайни стойности. Това налага инициализиране на масива.