Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет. вказ. Программирование (2 сем).doc
Скачиваний:
24
Добавлен:
26.11.2018
Размер:
2.57 Mб
Скачать

Лабораторна робота 5 Програмування з використанням масивів

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

Масив – це структурований тип даних, що використовується для опису упорядкованої сукупності фіксованого числа елементів одного типу, що мають загальне ім'я. Для позначення елементів масиву використовуються ім'я змінної масиву й індекс.

Перед виконанням роботи необхідно вивчити правила опису і використання змінних типу масив, типізованих констант типу масив.

Приклад. Дано двомірний масив. У кожнім рядку всі його елементи, не рівні нулю, переписати (зберігаючи порядок) у початок рядка, а нульові елементи – у кінець масиву. Новий масив не заводити.

Етапи рішення задачі:

1. Суть одного з алгоритмів рішення даної задачі полягає в том щоб "переглядати" масив і знаходити в кожному рядку пари (0:число), а потім змінювати їх місцями між собою і так доти таких пар не виявиться в рядку. 2. Напишемо програму на псевдо Паскале:

Program example5;

var V:array[1..100,1..100] of integer; m,n, i,j, c: integer; flag: boolean;

begin

<уведення розмірності масиву m*n>

<заповнення масиву>

for i:=1 to m do

repeat

flag:= true;

for j:=1 to n-1 do

if (v[i,j]=0) and (v[i,j+1]<>0) then begin

<поміняти їх місцями>

flag:= false;

end;

until flag;

<Друк масиву>

readln;

end.

3. Складемо блок схему алгоритму

Деталізуємо блок "Впорядковуємо перший рядок"

4. Приведемо програму мовою Паскаль:

program example6;

var V:array[1..100,1..100] of integer; m,n, i,j, c: integer; flag: boolean;

begin

write('Уведіть розмірність масиву m-n '); readln(m,n);

for i:= 1 to m do

for j:=1 to n do begin

write('V[',i,',',j,']= '); readln(V[i,j]);

end;

for i:=1 to m do

repeat

flag:= true;

for j:=1 to n-1 do

if (v[i,j]=0) and (v[i,j+1]<>0) then begin

c:=v[i,j]; v[i,j]:=v[i,j+1]; v[i,j+1]:=c;

flag:= false;

end;

until flag;

for i:= 1 to m do begin

for j:= 1 to n do write(V[i,j]:2);

writeln

end;

readln;

end.

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

  1. Яким чином визначаються змінні типу масив (одномірний і двовимірний)?

  2. Як здійснюється доступ до окремого елемента одномірного масиву?

  3. Як здійснюється доступ до окремого елемента двомірного масиву?

  4. Яким чином виводяться елементи масиву на екран?

  5. Приведіть приклад фрагмента програми, що виводить на екран двовимірний масив у виді матриці.

  6. Скільки чисел можна записати в шестивимірний масив X : Array[0..1, 0..1, 0..1, 0..1, 0..1, 0..1] of Integer?

Задачі

  1. Дано цілі числа а1, а2, а3. Одержати матрицю з цілими елементами [bij] і,j=1,2,3, для якої bij=ai-3aj.

  2. Одержати [aij] і=1,...10; j=1,...12 - матрицю з цілими елементами, для якої aij=і+2j.

  3. Дано натуральне число n. Одержати матрицю з дійсними елементами [aij] i, j= 1,…n, для який aij=n-i

  4. Дано квадратну матрицю з дійсними елементами порядку n. Знайти найбільше зі значень елементів, розташованих у заштрихованій частині матриці.

а) б) в) г)

  1. Дано квадратну матрицю розмірності n з дійсними елементами. Знайти кількість нульових елементів, що розташовані: вище головної діагоналі; нижче головної діагоналі; вище і нижче побічної.

  2. Дано квадратну матрицю з дійсними елементами. По матриці одержати логічний вектор, привласнивши його k-ому елементу значення True, якщо виконане зазначена умова і значення False інакше: а) всі елементи k стовпця нульові; б) елементи k рядка матриці упорядковані по спаданню; в) k рядок масиву симетричний.

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

  4. Дано двомірний масив A[1..m,1..n]. Написати програму побудови одномірного масиву B[1..m], елементи якого відповідно рівні а) сумам елементів рядків, б) добуткам елементів рядків, в) найменшим середніх арифметичних елементів рядків.

  5. Розташувати елементи даного масиву в зворотному порядку (перший елемент міняється з останнім, другий - з передостаннім і т.д. до середини; якщо масив містить непарна кількість елементів, то середній залишається без зміни).

  6. У даному масиві поміняти місцями елементи, що розташовані на непарних місцях, з елементами, що розташовані на парних місцях.

  7. У масиві А[1..N,1..N] визначити номера рядка і стовпця будь-якої сідлової точки. Деякий елемент масиву називається сідловою точкою, якщо він є одночасно найменшим у своєму рядку і найбільшим у своєму стовпці.

  8. Масив А[1..5,1..7] містить дійсні числа. Потрібно ввести ціле число K і обчислити суму елементів А[I,J], для яких I+J=К. Треба переконатися, що значення K дозволяє знайти рішення, у іншому випадку потрібно надрукувати повідомлення про помилку.

  9. Дано масив A[1..N,1..N]. Скласти програму, що додала б кожному елементу даного рядка елемент, що належить цьому рядку і головній діагоналі.

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