ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Одномірні і двовимірні масиви (таблиці )
         

     

    Інформатика, програмування

    одновимірних і Двовимірного масиву (ТАБЛИЦІ)

    Масив - це пронумерована послідовність величин однакового типу, що позначається одним ім'ям. Елементи масиву розташовуються в послідовних комірках пам'яті, позначаються ім'ям масиву та індексом. Кожне із значень, складових масив, називається його компонентою (або елементом масиву).

    Масив даних в програмі розглядається як мінлива структурованого типу. Масиву присвоюється ім'я, за допомогою якого можна посилатися як на масив даних в цілому, так і на будь-яку з його компонент.

    Змінні, представляють компоненти масивів, називаються змінними з індексами в відміну від простих змінних, що представляють в програмі елементарні дані. Індекс в позначенні компонент масивів може бути константою, змінною або виразом порядкового типу.

    Якщо за кожним елементом масиву закріплений лише один його порядковий номер, то такий масив називається лінійним. Взагалі кількість індексів елементів масиву визначає розмірність масиву. За це ознакою масиви поділяються на одномірні (лінійні), двовимірні, тривимірні і т.д.

    Приклад: числова послідовність парних натуральних чисел 2, 4, 6, ..., N являє собою лінійний масив, елементи якого можна позначити А [1] = 2, А [2] = 4, А [3] = 6, ..., А [К] = 2 * (К +1), де К - номер елемента, а 2, 4, 6, ..., N -- значення. Індекс (порядковий номер елемента) записується у квадратних дужках після імені масиву.

    Наприклад, A [7] - Сьомий елемент масиву А; D [6] - шостий елемент масиву D.

    Для розміщення масиву в пам'яті ЕОМ відводиться поле пам'яті, розмір якого визначається типом, довжиною і кількістю компонент масиву. У мові Pascal ця інформація задається в розділі описів. Масив описується так:

    ім'я масиву: Array [початкове значення індексу .. кінцеве значення індексу] Of базовий тип;

    Наприклад,

    Var B: Array [1 .. 5] Of Real, R: Array [1 .. 34] Of Char;

    - описується У масив, що складається з 5 елементів і символьний масив R, що складається з 34 елементів. Для масиву У буде виділено 5 * 6 = 30 байт пам'яті, для масиву R -- 1 * 34 = 34 байти пам'яті.

    Базовий тип елементів масиву може бути будь-яким, за винятком файлового.

    Заповнити масив можна таким чином:

    1) за допомогою оператора присвоєння. Цей спосіб заповнення елементів масиву особливо зручний, коли між елементами існує будь-яка залежність, наприклад, арифметична або геометрична прогресії, або елементи пов'язані між собою реккурентним співвідношенням.

    Завдання 1. Заповнити одновимірний масив елементами, які відповідають наступному співвідношенню:

    a1 = 1; a2 = 1; ai = ai-2 + ai-1 (i = 3, 4, ..., n).

    Read (N); (Введення кількості елементів)

    A [1]: = 1;

    A [2]: = 1;

    FOR I: = 3 TO N DO

    A [I]: = A [I - 1] + A [I - 2];

    Інший варіант прісваісванія значень елементів масиву - заповнення значеннями, отриманими з допомогою датчика випадкових чисел.

    Завдання 2. Заповнити одновимірний масив за допомогою датчика випадкових чисел таким чином, щоб всі його елементи були різні.

    Program Create;

    Type Mas = Array [1 .. 100] Of Integer;

    Var A: Mas; I, J, N: Byte; Log: Boolean;

    Begin

    Write (''); ReadLn (N);

    randomize; A [1]: = -32768 + random (65535);

    For I: = 2 To N Do

    Begin

    Log: = True;

    Repeat

    A [i]: = -32768 + random (65535); J: = 1;

    While Log and (j <= i - 1) Do

    begin Log: = a [i] <> a [j]; j: = j + 1 End

    Until Log

    End;

    For i: = 1 to N Do Write (a [i]: 7); writeln

    End.

    2) введення значень елементів масиву з клавіатури використовується зазвичай тоді, коли між елементами не спостерігається ніякої залежності. Наприклад, послідовність чисел 1, 2, -5, 6, -111, 0 може бути введена в пам'ять наступним чином:

    Program Vvod;

    Var N, I: Integer;

    A: Array [1 .. 20] Of Integer;

    Begin

    Write ( 'Введіть кількість елементів масиву '); ReadLn (N);

    FOR I: = 1 TO N DO

    Begin

    Write ( 'Введіть A [', I, ']'); ReadLn (A [I])

    End.

    Над елементами масивами найчастіше виконуються такі дії, як

    а) пошук значень;

    б) сортування елементів у порядку зростання або зменшення;

    в) підрахунок елементів у масиві, що задовольняють заданій умові.

    Сума елементів масиву можна підрахувати за формулою S = S + A [I] спочатку задав S = 0. Кількість елементів масиву можна підрахувати за формулою К = К 1, спочатку задавши К = 0. Твір елементів масиву можна підрахувати за формулою P = P * A [I], спочатку задав P = 1.

    Завдання 3. Дан лінійний масив цілих чисел. Підрахувати, скільки в ньому різних чисел.

    (Підрахунок кількості різних чисел в лінійному масиві.

    ІДЕЯ РІШЕННЯ: заводимо допоміжний масив, елементами

    якого є логічні величини (False - Якщо елемент

    вже зустрічався раніше, True - інакше))

    Program Razlichnye_Elementy;

    Var I, N, K, Kol: Integer;

    A: Array [1 .. 50] Of Integer;

    Lo: Array [1 .. 50] Of Boolean;

    Begin

    Write ( 'Введіть кількість елементів масиву: '); ReadLn (N);

    FOR I: = 1 TO N DO

    Begin

    Write ( 'A [', I,']='); ReadLn (A [I ]);

    Lo [I]: = True; (Заповнюємо допоміжний масив значеннями True)

    End;

    Kol: = 0; (змінна, в якій буде зберігатися кількість різних чисел)

    FOR I: = 1 TO N DO

    IF Lo [I] THEN

    Begin

    Kol: = Kol + 1;

    FOR K: = I TO N DO

    (У допоміжний масив заносимо значення False,

    якщо число вже траплялося раніше або збігається з поточним елементом A [I])

    Lo [K]: = (A [K] <> A [I]) And Lo [K];

    End;

    WriteLn ( 'Кількість різних чисел:', Kol)

    END.

    Тест: N = 10; елементи масиву - 1, 2, 2, 2, -1, 1, 0, 34, 3, 3. Відповідь: 6.

    Завдання 4. Дан лінійний масив. Упорядкувати його елементи в порядку зростання.

    (Сортування масиву вибором (у порядку зростання).

    Ідея рішення: нехай частина масиву (з K-й елемент включно)

    відсортована. Потрібно знайти в невідсортоване частини масиву

    мінімальний елемент і поміняти місцями з (K +1)-м)

    Program Sortirovka;

    Var N, I, J, K, Pr: Integer; A: Array [1 .. 30] Of Integer;

    Begin

    Write ( 'Введіть кількість елементів: '); ReadLn (N);

    For I: = 1 To N Do

    Begin

    Write ( 'Введіть A [', I, ']'); Readln (A [I ]);

    End;

    WriteLn;

    For I: = 1 To N - 1 Do

    Begin

    K: = I;

    For J: = I + 1 To N Do If A [J] <= A [K] Then K: = J;

    Pr: = A [I]; A [I]: = A [K]; A [K]: = Pr;

    End;

    For I: = 1 To N Do Write (A [I], '');

    End.

    Тест: N = 10; елементи масиву - 1, 2, 2, 2, -1, 1, 0, 34, 3, 3.

    Відповідь: -1, -1, 0, 1, 2, 2, 2, 3, 3, 34.

    Якщо два масиву є масивами еквіваленти типів, то можливо присвоювання одного масиву іншому. При цьому всі компоненти присвоюється масиву копіюються в той масив, віді присвоюється значення. Типи масивів будуть еквівалентними, якщо ці масиви описуються спільно або описуються ідентифікатором одного і того ж типу. Наприклад, в описі

    Type Massiv = Array [1 .. 10] Of Real;

    Var A, B: Massiv; C, D: Array [1 .. 10] Of Real; E: Array [1 .. 10] Of Real;

    типи змінних A, B еквівалентні, і тому дані змінні сумісні по присвоювання; тип змінних C, D також один і той же, і тому дані змінні також спільно з присвоєння. Але тип змінних C, D не еквівалентний типами змінних A, B, E, тому, наприклад, A і D не спільно з присвоєння. Ці особливості необхідно враховувати при роботі з масивами.

    При вирішенні практичних задач часто доводиться мати справу з різними таблицями даних, математичним еквівалентом яких служать матриці. Такий спосіб організації даних, при якому кожен елемент визначається номером рядка та номером стовпця, на перетині яких він розташований, називається двовимірним масивом або таблицею.

    Наприклад, дані про планети Сонячної системи представлені наступною таблицею:        

    Планета         

    расст.   до Сонця         

    відносить.   обьем         

    відносить.   маса             

    Меркурій         

    57.9         

    0.06         

    0.05             

    Венера         

    108.2         

    0.92         

    0.81             

    Земля         

    149.6         

    1.00         

    1.00             

    Марс         

    227.9         

    0.15         

    0.11             

    Юпітер         

    978.3         

    1345.00         

    318.40             

    Сатурн         

    1429.3         

    767.00         

    95.20     

    Їх можна занести в пам'ять комп'ютера, використовуючи поняття двовимірного масиву. Положення елемента в масиві визначається двома індексами. Вони показують номер рядка та номер стовпчика. Індекси розділяються комою. Наприклад: A [7, 6], D [56, 47].

    Заповнюється двовимірний масив аналогічно одновимірному: з клавіатури, за допомогою оператора привласнення. Наприклад, в результаті виконання програми:

    Program Vvod2;

    Var I, J: Integer;

    A: Array [1 .. 20, 1 .. 20] Of Integer;

    Begin

    FOR I: = 1 TO 3 DO

    FOR J: = 1 TO 2 DO A [I, J]: = 456 + I

    End.

    елементи масиву приймуть значення A [1, 1] = 457; A [1, 2] = 457; A [2, 1] = 458; A [2, 2] = 458; A [3, 1] = 459; A [3, 2] = 459.

    При описі масиву задається необхідний обсяг пам'яті під двовимірний масив, вказуються ім'я масиву і в квадратних дужках діапазони зміни індексів.

    При виконанні інженерних та математичних розрахунків часто використовуються змінні більш ніж з двома індексами. При рішенні задач на ЕОМ такі змінні представляються як компоненти відповідно три-, чотиривимірні масивів і т.д.

    Однак опис масиву у вигляді багатовимірної структури робиться лише з міркувань зручності програмування як результат прагнення найбільш точно відтворити в програмі об'єктивно існуючі зв'язки між елементами даних розв'язуваної завдання. Що ж до образу масиву в пам'яті ЕОМ, то як одномірні, так і багатовимірні масиви зберігаються у вигляді лінійної послідовності своїх компонент, і принципової різниці між одновимірними і багатовимірними масивами в пам'яті ЕОМ немає. Однак порядок, в якому запам'ятовуються елементи багатовимірних масивів, важливо собі уявляти. У більшості алгоритмічних мов реалізується загальне правило, яке встановлює порядок зберігання в пам'яті елементів масивів: елементи багатовимірних масивів зберігаються в пам'яті в послідовності, відповідної більш частого зміни молодших індексів.

    Завдання 5. Заповнити матрицю порядку n за таким зразком:        

    1         

    2         

    3         

    ...         

    n-2         

    n-1         

    n             

    2         

    1         

    2         

    ...         

    n-3         

    n-2         

    n-1             

    3         

    2         

    1         

    ...         

    n-4         

    n-3         

    n-2             

    ...         

    ...         

    ...         

    ...         

    ...         

    ...         

    ...             

    n-1         

    n-2         

    n-3         

    ...         

    2         

    1         

    2             

    n         

    n-1         

    n-2         

    ...         

    3         

    2         

    1     

    Program Massiv12;

    Var I, J, K, N: Integer; A: Array [1 .. 10, 1 .. 10] Of Integer;

    Begin

    Write ( 'Введіть порядок матриці:'); ReadLn (N);

    For I: = 1 To N Do

    For J: = I To N Do

    Begin

    A [I, J] : = J - I + 1; A [J, I]: = A [I, J];

    End;

    For I: = 1 To N Do

    Begin

    WriteLn;

    For J: = 1 To N Do Write (A [I, J]: 4);

    End

    End.

    Завдання 6. Дана цілочисельних квадратна матриця. Знайти у кожному рядку найбільший елемент і поміняти його місцями з елементом головної діагоналі.

    Program Obmen;

    Var N, I, J, Max, Ind, Vsp: Integer; A: Array [1 .. 15, 1 .. 15] Of Integer;

    Begin

    WRITE ( 'Введіть кількість елементів у масиві: '); READLN (N);

    FOR I: = 1 TO N DO

    FOR J: = 1 TO N DO

    Begin

    WRITE ( 'A [', I, ',', J, ']'); READLN (A [I, J])

    End;

    FOR I: = 1 TO N DO

    Begin

    Max: = A [I, 1]; Ind: = 1;

    FOR J: = 2 TO N DO

    IF A [I, J]> Max THEN

    Begin

    Max: = A [I, J]; Ind: = J

    End;

    Vsp: = A [I, I]; A [I, I]: = A [I, Ind]; A [I, Ind]: = Vsp

    End;

    FOR I: = 1 TO N DO

    Begin

    WriteLn;

    FOR J: = 1 TO N Do Write (A [I, J]: 3);

    End; WriteLn

    End.

    Контрольні питання і завдання

    Що таке масив?

    Чому масив є структурованим типом даних?

    Що таке розмірність масиву? Чи існують обмеження на розмірність масиву?

    Якого типу можуть бути елементи масиву?

    Якого типу можуть бути індекси елементів масиву?

    Які прості типи даних відносяться до порядковим?

    Якими способами може бути заповнений масив? Наведіть приклади.

    Як визначити мінімальний обсяг пам'яті, що відводиться під масив?

    Які дії виконують звичайно над елементами масиву?

    Чи може масив бути елементом масиву?

    У якому випадку масиви спільно з привласнення?

    Нехай елементами масиву A (a [1], a [2], a [3], a [4]) є відповідно x,-x, x2,-x2. Чому дорівнюватиме значення виразу

    a [-a [a [3] -2]] + a [-a [a [3 ]]]

    при x = 2?

    Чи можна виконувати обхід двовимірного масиву, організувавши зовнішній цикл по стовпцях, а внутрішній - по рядках?

    Точно і однозначно сформулювати умову задачі, рішення якої наведено в цiй програмі:

    Program Kr_N_4;

    Const NMax = 50; Type Mass = Array [1 .. NMax, 0 .. NMax-1] Of Real;

    Var A: Mass; I, J, N: 0 .. NMax; C: Real;

    Begin Write ( 'Кількість елементів масиву N =? '); ReadLn (N);

    For I: = 1 To N Do

    For J: = 0 To N-1 Do

    Begin Write ( 'A [', I ,',', J, '] ='); Readln (A [I, J]) End;

    For I: = 1 To N Do

    For J: = 0 To N-1 Do

    Begin C: = A [I, J];

    A [I, J] : = A [N-I 1, J];

    A [N-I 1, J] : = C

    End;

    For I: = 1 To N Do

    Begin For J: = 0 To N-1 Do

    Write (A [I, J]: 5:2, ' ');

    WriteLn

    End;

    End.

    Чи використовуються вкладені цикли, якщо здійснюється обхід тільки головної діагоналі квадратної матриці?

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.comp-science.narod.ru/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status