Обчислення суми елементів масиву 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Обчислення суми елементів масиву



Для одновимірного масиву А{a1,..., an} необхідно обчислити

S:=0;

For i:=1 to N do S:=S+A[i];

Для двовимірного масиву В розміром N x M необхідно обчислити

 

S:=0;

For i:=1 to N do

For j:=1 to M do S:=S+B[i, j];

 

Обчислення суми діагональних елементів матриці (сліду матриці)

Для матриці В розміром N x N необхідно обчислити .

S:=0;

For i:=1 to N do S:=S+B[i,i];

Сумування двох масивів

Для одновимірних масивів A i B розміром N необхідно обчислити
ci = ai + bi, i= 1, 2, …,N

For i:=1 to N do C[i]:=A[i]+B[i];

Для двовимірних масивів А і В розміром N x M необхідно обчислити
ci j = aij + bij, i= 1, 2, …,N; j=1, 2, …,M.

For i:=1 to N do

For j:=1 to M do C[i,j]:=A[i,j]+B[i,j];

 

Сумування елементів заданого рядка матриці

Для матриці В розміром N x M необхідно обчислити

S:=0;

For j:=1 to M do S:=S+B[i,j];

Сумування елементів рядків матриці

Необхідно обчислити суму елементів кожного рядка матриці В розміром N x M. Результат отримаємо у вигляді вектора D, тобто обчислити
, i= 1, 2, …,N.

For i:=1 to N do

begin

S:=0;

For j:=1 to M do S:=S+B[i,j]; D[i]:=S;

End;

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

Необхідно замінити рядки матриці її стовпцями, а стовпці — рядками, тобто обчислити
bij = aji, i= 1, 2, …,N; j=1, 2, …,M.

For i:=1 to N do

For j:=1 to M do B[i,j]:=A[j,i];

Вилучення рядка з матриці

Необхідно вилучити рядок з заданим номером К. Розв’язок задачі аналогічний вилученню елемента з одновимірного масиву. Всі рядки, починаючи з (К+1) -го, слід перемістити вгору. Кількість рядків зменшиться на 1.

N:=N-1;
For i:=K to N do For j:= 1 to M do B[i,j]:= B[i+1, j];

Перестановка рядків матриці

З використанням допоміжної змінної Р перестановка здійснюється у всіх стовпцях двох рядків.

For k:= 1 to M do begin P:= A[i,k]; A[I,k]:=A[j,k]; A[j,k]:=P;

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

Необхідно знайти мінімальний елемент в масиві і його значення помістити у змінну Р, а індекс — у змінну К.

 

P:= A[1]; K:= 1;

For i:= 2 to N do
begin if P <= A[i] then continue;
P:= A[i]; K:= i;
end;

 

Хід роботи

Задача1. Задано таблицю, що містить цілі числа, організовані в чотири рядки і чотири стовпці. Обчислити середнє арифметичне додатних елементів цієї таблиці, розміщених вище головної діагоналі.

 

Задача 2. Задано квадратну матрицю 4 х 4, яка містить цілі числа. Обчислити середнє арифметичне тих елементів головної діагоналі, які за модулем не перевищують деякого введеного з клавіатури числа. Якщо таких елементів нема, вивести про це повідомлення.

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

Задача 4. Задано цілочисловий масив C(n). Знайти суму, різницю, добуток, кількість, мінімальний, максимальний елемент серед:
а) всіх додатних / від’ємних елементів масиву;
б) всіх парних / непарних елементів масиву;
в) всіх парних елементів, розташованих на парних /непарних місцях;
г) елементів, більших /менших даного числа А;
д) елементів, що належать проміжку від А до В;
є) елементів з k1 до k2.

 

Контрольні питання до лабораторної роботи № 16:

  1. Які операції можна виконувати над елементами масиву?
  2. Які типи даних не припустимі для елементів масиву?
  3. Де і як визначається загальна кількість елементів масиву?
  4. Які типи даних можна використовувати при описі індексів?
  5. Чи може ліва межа індексів масиву бути менше правої?
  6. Чи може ліва межа індексів масиву дорівнювати нулю?
  7. Чи може ліва межа індексів масиву бути від’ємною?

________________________________________________________________________________________________

Лабораторна робота № 17

 

Тема: Складання програм з використанням алгоритмів упорядкування масивів

Мета роботи. Навчитися складати програми з використанням операцій сортування масивів, застосовувати процедури введення/виведення елементів масиву, виконувати пошук у масивах.

Методичні вказівки до виконання лабораторної роботи

Упорядкування масивів

Упорядкованим вважається масив, елементи якого розташовані за зростанням або спаданням. Всі методи впорядкування можна поділити на:

· прямі методи;

· удосконалені методи.

Прямі методи, у свою чергу, поділяються на:

· упорядкування вставлянням;

· упорядкування вибором;

· упорядкування обміном.

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

Упорядкування вставлянням

Масив поділяється на дві частини: впорядковану і невпорядковану. Елементи з невпорядкованої частини по черзі вибираються і вставляються в упорядковану частину, не порушуючи при цьому впорядкованості елементів. На початку роботи алгоритму до впорядкованої частини масиву відносять тільки перший елемент, а до невпорядкованої — всі інші елементи. Таким чином, потрібно (n-1) раз (n –розмірність масиву) виконати дії:

  • вибрати i -й елемент із невпорядкованої частини і зберегти в допоміжній змінній;
  • знайти позицію j у впорядкованій частині масиву, в якій вибраний елемент не порушуватиме впорядкованості;
  • зсув елементів масиву від (i-1) -го до (j-1) -го вправо для звільнення знайденої позиції;
  • вставити вибраний елемент у знайдену j –ту позицію.

 

Const MaxN =20;

Type TMas= array [1..MaxN] of real;

Var A: TMas; T: real; N, I, j: 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 do Write (A[i], ‘ ‘); Writeln;

For i:=2 to N do

Begin T:=A[i]; j:=1;

While T>A[j] do j:= j +1;

For k:=i – 1 downto j do A[k+1]:= A[k]; A[j]:=T;

End;

Writeln (‘Упорядкований масив: ’);

For i:= 1 to N do Write(A[i],’ ‘); Writeln;

End.

Упорядкування вибором

Знаходимо найменший елемент масиву на інтервалі від 1 -го елемента до n -го (останнього) елемента і переставляємо його місцями з першим елементом. На другому кроці знаходимо найменший елемент масиву на інтервалі від 2-го до n-го елемента і переставляємо його місцями з другим елементом. І так далі для всіх елементів до (n-1) – го.

Const MaxN =20;

Type TMas= array [1..MaxN] of real;

Var A: TMas; T: real; N,Nmin, I, j: 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 do Write (A[i], ‘ ‘); Writeln;

For i:=1 to N-1 do

Begin Nmin:=i;

For j:= i+1 to N do

If A[Nmin] > A[j] then Nmin:=j;

T:= A[Nmin]; A[Nmin]:= A[i]; A[i]:=T;

End;

 

Writeln (‘Упорядкований масив: ’);

For i:= 1 to N do Write(A[i],’ ‘); Writeln;

Readln;

End.

Упорядкування обміном

Зліва направо по черзі порівнюються два сусідні елементи (перший з другим, другий з третім і т.д.), і якщо їх взаємне розміщення не відповідає критерію впорядкування, то вони переставляються місцями. Після першого перегляду на останній n -й позиції масиву буде знаходитися найбільший елемент. Тому другий перегляд виконується до (n-1) -го елемента. Третій — до (n-2) -го, і т.д. Всього потрібний (n-1) перегляд.

 

Const MaxN =20;

Type TMas= array [1..MaxN] of real;

Var A: TMas; T: real; N,Nmin, I, j: 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 do Write (A[i], ‘ ‘); Writeln;

For i:= N downto 2 do

For j:=1 to i-1 do

If A[j] > A[j+1] then begin T:= A[j]; A[j]:=A[j+1];

A[j+1]:= T;

end;

Writeln (‘Упорядкований масив: ’);

For i:= 1 to N do Write(A[i],’ ‘); Writeln;

Readln;

End.

Хід роботи

Задача 1. Задано цілочисловий масив C(n). Вставити новий елемент перед першим, останнім, k-м, кожним третім:
а) додатним / від’ємним елементом масиву;
б) максимальним / мінімальним елементом масиву;
в) парним /непарним елементом масиву;
г) кратним числу А елементом масиву;
д) більшим числа А елементом масиву.


Задача 2. Задано два масиви A(n) і B(n), елементи яких упорядковані за зростанням / спаданням. Об'єднати ці масиви так, щоб результуючий масив залишився упорядкованим.

 

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

 

Задача 4. Перетворити двовимірний масив за правилом:
а) в кожному рядку змінити знак максимального по модулю елемента на протилежний;
б) останній від’ємний елемент кожного стовпця замінити нулем;
в) до елементів стовпця /рядка k1 додати елементи стовпця / рядка k2.

 

Контрольні питання до лабораторної роботи № 17:

  1. Чи вірно, що можуть існувати масиви масивів?
  2. Чи може індекс бути виразом цілого типу?
  3. Чи може індекс бути виразом дійсного типу?
  4. Який масив називається одновимірним, двовимірним, n-вимірним?
  5. Чи вірно, що одновимірний масив відповідає поняттю лінійної таблиці (вектора)?
  6. Чи вірно, що двовимірний масив відповідає поняттю прямокутної таблиці (матриці)?
  7. Чи можна при описі масиву використовувати попередньо визначені константи?
  8. Чи може процедура Read (X) ввести весь масив X цілком?
  9. Чи можна за допомогою стандартної процедури Write(X) вивести весь масив X цілком?

________________________________________________________________________________________________

Лабораторна робота № 18

 

Тема: Створення бібліотеки підпрограм користувача (програміста)

 

Мета роботи. Навчитися створювати власні модулі (бібліотеки), розміщати в них функції, процедури, оголошення констант, змінних; використовувати ці модулі у програмах.

 

Методичні вказівки до виконання лабораторної роботи

Модуль в Turbo Pascal є одним із засобів створення бібліотек програмних ресурсів (процедур, функцій, типів та ін.). Кожен модуль має своє ім'я, вказавши яке в розділі Uses будь-якої програми, можна отримати доступ до всіх ресурсів даного модуля. Загальна структура модуля:

unit <ім'я модуля>;

Interface {інтерфейсна секція}

<заголовок процедури (функції)1 з параметрами>;

<заголовок процедури (функції)2 з параметрами>;

.............

<заголовок процедури (функції)n з параметрами >;

Implementation {секція реалізації}

<заголовок без параметрів і тіло процедури (функції)1>;

<заголовок без параметрів і тіло процедури (функції)2>;

.............

<заголовок без параметрів і тіло процедури (функції)n>;

Begin {секція ініціалізації модуля}

<оператор>;

.............

<оператор >;

End.

Розділ Unit міститься ім'я модуля. Воно обов'язково повинно співпадати з іменем дискового файла, в якому зберігається текст модуля. Наприклад, якщо файл називається Menu.pas, то модуль повинен мати ім'я Menu:Unit Menu;

В інтерфейсній частині (Interfase) описують ті константи, типи, змінні, процедури та функції, які є глобальними, тобто доступними в основній програмі (модулі), яка використовує даний модуль.

В секції реалізації модуля (Implementation) визначаються всі глобальні процедури та функції. Також описуються константи, змінні процедури і функції, які є локальними (недоступними для основної програми), але використовуються в глобальних процедурах і функціях.

Секція ініціації повинна бути основною секцією модуля. Вона може складатись або зарезервованих слів beqin і end (в цьому випадку модуль не ініціалізується), або із операторної частини, яка виконується при ініціалізацію модуля.

Після того як модуль створено, його необхідно скомпілювати. Компіляція здійснюється в режимі Compile з встановленою директивою Destination=Disk і приводить до створення файла з розширенням TPU.

 

Хід роботи

Задача 1. Створити модуль програміста з іменем My_Unit, в якому розмістити дві функції Ltrim, яка вилучає у рядку початкові пробіли та Upper, яка перетворює рядок символів до верхнього регістру.

Вказівка:При створенні бібліотечного модуля його ім’я вказати в секції Unit.

В секції Interface перелічити імена функції з параметрами.

В секції реалізації запрограмувати дії, які виконують функції

 

Задача 2. Написати програму, яка звертається до створеного модуля My_Unit и використовує функції Ltrim та Upper.

 

Задача 3. Додати до модуля My_Unit функцію Rtrim, яка вилучає з рядка кінцеві пробіли. Використати дану функцію у програмі.

Контрольні питання до лабораторної роботи № 18:

  1. Що таке модуль користувача (програміста)?
  2. Яку структуру має модуль програміста?
  3. Як створити модуль програміста?
  4. Який формат має файл модуля програміста після компіляції?
  5. Який порядок звернення до модуля програміста?

________________________________________________________________________________________________

Лабораторна робота № 19

 

Тема: Використання можливостей псевдографіки. Створення вікон

 

Мета роботи. Навчитися складати програми з використанням псевдографічних символів: виводити рамки різних типів; створювати вікна у текстовому режимі.

Хід роботи

Задача1. У текстовому режимі створити вікно з координатами (20,5,60,15) та вивести в нього своє ім’я. За допомогою псевдографічних символів вивести у створене вікно рамку червоного кольору.

Вказівка: для виведення сторін рамки використати оператор циклу

Задача 2. Написати процедуру, яка створює на екрані у текстовому режимі вікно із заданими координатами та заповнює його по горизонталі будь-якими символами певного кольору. Формальні параметри, що передаються у процедуру: координати вікна та номер кольору. Використовуючи створену процедуру, розмістити на екрані 16 різнокольорових вікон, що заповнюють весь екран.

Вказівка:

1.Зміна кольору повинна мати циклічний порядок.

2. Для виведення всіх вікон слід попередньо розрахувати координати кожного вікна, виходячи з розмірів екрану у текстовому режимі

 

Контрольні питання до додаткової лабораторної роботи № 2:

1. Скільки знакомісць можна розмістити на екрані, що працює у текстовому режимі?

2. Що таке псевдографічні символи?

3. Для чого у програмах на Turbo Pascal використовуються псевдографічні символи?

4. Яка стандартна функція призначена для виведення псевдографічних символів?

5. Що представляє собою вікно у текстовому режимі?

6. Яка стандартна процедура призначена для створення вікон?

7. Який сенс мають параметри процедури Window?
_________________________________________________________________________________________

Лабораторна робота № 20

 

Тема: Організація підпрограм з використанням процедур

 

Мета роботи. Навчитися складати програми з використанням процедур, визначати формальні та фактичні параметри, локальні та глобальні змінні.

 



Поделиться:


Последнее изменение этой страницы: 2016-06-22; просмотров: 1950; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.126.74 (0.073 с.)