Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Операції з масивами

Масиви, як цілісні структури, можуть брати участь тільки в операціях "дорівнює" / "не дорівнює" і в операторах присвоювання. При цьому відповідні масиви повинні бути ідентичні за структурою (мати однакові типи індексів і типи компонентів).

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

Базові операції обробки векторів (одновимірних масивів). Такими базовими операціями є:

§ введення-виведення масиву

for i := 1 to n do ReadLn (a [i]); for i := 1 to n do WriteLn (‘А [‘, i, ‘] = ‘, a [i] );

§ ініціалізація масиву (присвоєння початкових значень)

for i := 1 to n do ReadLn (a [i]); for i := 1 to n do a [i] := 0; for i := 1 to n do a [i] := random;

§ пошук заданого елемента

for i := 1 to n do

if a [i] mod 7 = 0 then WriteLn (a[i] );

§ пошук максимального (мінімального) елемента

max := a [1];

for i := 2 to n do

if a [i] > max then max := a [i];

§ перестановка елементів

t := a [i] ;

a [i] := a [j];

a [j] := t;

§ вставка та видалення елементів

Базові операції обробки матриць (двовимірних масивів). В оперативній пам’яті матриця також зберігається як безперервна послідовність елементів.

Базовими операціями обробки двовимірних масивів є:

§ введення-виведення матриці

for i := 1 to n do for j := 1 to m do ReadLn (a [i, j]); for i := 1 to n do begin for j := 1 to m-1 do Write ( a [i, j]:3 ); WriteLn (a [i, m]:3); end;

§ ініціалізація матриці

for i := 1 to n do for j := 1 to m do ReadLn (a [i, j]); for i := 1 to n do for j := 1 to m do a [i] := 0; for i := 1 to n do for j := 1 to m do a [i] := random;

§ пошук заданого елемента

for i := 1 to n do

for j := 1 to m do

if a [i, j] mod 7 then WriteLn (a[i, j]);

§ підсумовування елементів матриці

for i := 1 to n do

for j := 1 to m do

s := s + a [i, j];

§ підсумовування діагональних елементів матриці

for i := 1 to n do

s := s+ a [i, i];

§ транспонування матриці

for i := 1 to n do

for j := 1 to m do

b[ i, j] := a [j, i];

§ перестановка n-го і m-го рядків

for j := 1 to m do

begin

t := a [n, j] ;

a [n, j] := a [m, j];

a [m, j] := t;

end;

§ видалення рядка (на місце рядка / стовпця, що видаляється, потрібно записати елементи наступного рядка /стовпця і циклічно повторити цю операцію до кінця матриці)

for i := k to n-1 do { Видалення к-го рядка }

for j := 1 to m do

a [i, j] := a [i+1, j];

§ включення рядка у матрицю

for i := n downto k do { Включення к-го рядка }

for j := 1 to m do

a [i+1, j] := a [i, j];

for j := 1 to m do

ReadLn (a [k, j] );

§ множення матриці на матрицю

for i := 1 to n do

for j := 1 to m do

begin

c[i, j] :=0;

for k := 1 to n do

c[i, j] := c[i, j] + a [i, k]* b [k, j];

end;

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

Арифметика покажчиків. При організації доступу до елементів масиву за покажчиком використовуються наступні операції роботи з покажчиками:

§ операція інкремента (++) – значення покажчика збільшується на кількість байт, що визначається типом, на який він вказує;

§ операція декремента (--) – значення покажчика зменшується на кількість байт, що визначається типом, на який він вказує;

§ додавання цілого числа (+) - задає логічне зміщення на кількість байт, яка необхідна для розміщення заданого числа об’єктів, на які посилається покажчик;

§ скорочене додавання цілого числа (+=) - задає фізичне зміщення на кількість байт, яка необхідна для розміщення заданого числа об’єктів, на які посилається покажчик;

§ скорочене віднімання цілого числа (-=) - задає фізичне зміщення на кількість байт, яка необхідна для розміщення заданого числа об’єктів, на які посилається покажчик;

§ віднімання цілого числа (-) - задає логічне зміщення на кількість байт, яка необхідна для розміщення заданого числа об’єктів, на які посилається покажчик;

§ віднімання покажчиків - визначення значення різниці номерів елементів масиву, на які вказують покажчики,

Наприклад,

float m[7], n,*mPtr1,*mPtr2;

mPtr1 = &m[0];

mPtr2 = m;

mPtr1 += 5; // зміщення вперед на 4 об’єкта (дійсних числа)

mPtr1 --; // перехід до попереднього елемента масиву

mPtr2 ++; // перехід до наступного елемента масиву

cout<<*(mPtr2+3)<<“\n”; // покажчик-зміщення вперед на 5 об’єктів (дійсних чисел)

cout<<*(mPtr1-2)<<“\n”; // покажчик-зміщення назад на 3 об’єкта (дійсних числа)

mPtr1 -= 1; // зміщення назад на 1 об’єкт (дійснех число)

n = mPtr1 - mPtr2; // відстань (у елементах) між елементами масиву, на які вказують покажчики mPtr1 і mPtr2

Сортування масиву. Розрізняють декілька алгоритмів сортування елементів масиву:

- сортування вибором,

- сортування вставками

- сортування обміном (бульбашкове сортування), тощо.

Сортування вибором: відшукуються максимальний (мінімальний) елемент і переноситься в початок масиву; потім ця операція застосовується до всіх елементів, крім першого і т.ін.

Сортування вставками: якщо перші k елементів масиву вже впорядковані, наприклад, по зростанню, то береться (k+1)-й елемент і розміщається серед перших k елементів так, щоб упорядкованими виявилися вже k+1 перших елементів; цей алгоритм застосовується при k від 1 до n -1.

Сортування обміном: послідовно порівнюються пари сусідніх елементів xk u xk+1 (k = 1, 2, 3, ..., n -1) і якщо xk >/< xk+1, то вони переставляються; тим самим найбільший (найменший) елемент виявиться на своєму місці наприкінці масиву; потім цей метод застосовується до всіх елементів, крім останнього, і т.ін.

Приклад. Сформувати вектор В, що складається з максимальних елементів рядків матриці А (10 х 3):

Const n=10;

m=3;

Var a : array [1..n, 1..m] of real;

b : array [1..n] of real;

i, j : integer;

max : real;

Begin

for i := 1 to n do

for j := 1 to m do

ReadLn (a [i, j]);

for i := 1 to n do

begin

max := a [i, 1];

for j := 2 to m do

if a [i, j] > max then max := a [i, j];

b [i] := max;

end;

for i := 1 to n do

Write (b [i], ‘ ‘ );

ReadLn;

End.

 




Переглядів: 1557

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.005 сек.