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

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

Читайте также:
  1. Агент генеральний агентські операції
  2. Активними операціями називаються операції з розміщення банківських ресурсів.
  3. Арифметичні операції
  4. Банківські операції на міжнародних ринках.
  5. Безготівкові операції банків
  6. Біржові операції
  7. Біржові операції з цінними паперами
  8. Валютний кліринг валютні операції
  9. Валютні операції на умовах спот
  10. Вексель як форма міжгосподарських розрахунків. Банківські операції з векселями
  11. Відобразити вказані операції в бухгалтерському обліку.
  12. Відобразити ці операції в бухгалтерському обліку.

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

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

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

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

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.

Сортування обміном: послідовно порівнюються пари сусідніх елементів x k u x k+1 (k = 1, 2, 3,..., n -1) і якщо x k >/< x k+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.

 


1 | 2 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.01 сек.)