Приклад

Програма роботи

Постановка завдання

Мета роботи

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

Двовимірні МАСИВИ (МАТРИЦІ)

 

Дослідити роботу операторів циклу мови програмування С++, засвоїти методику складання, налагодження та розрахунку програм для процесів обробки матриць на ПЕОМ.

 

Скласти схему алгоритму, таблицю символічних імен та програму мовою С++ відповідно заданого варіанта. Налагодити та розв’язати задачу на ПЕОМ.

Теоретичні відомості

 

Двовимірний масив (матриця) подається як одновимірний, елементи якого - також масиви. Наприклад, визначення char а[10][20] задає масив, що складається з 10 одновимірних масивів розміром 20 елементів, кожен з яких - символьного типу. Елементи двовимірного масиву зберігаються по рядках, тобто якщо ними проходити в напрямку їх розміщення в пам’яті, то спочатку буде змінюватися правий індекс. Наприклад, звернення до дев’ятого елементу п’ятого рядка запишеться а[5][9].

Задано масив:

int a[2][3];

Елементи масиву а так розміщені в пам’яті:

 

a[0][0], a[0][1], a[0][2], a[1][0], a[1][1], a[1][2].

 

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

 

int a[ M ][ N ] = { { 11, 2, 6, 9, 7, 14 }, { 14, 25,

36, 17, 18, 3} };

або безпосередньо в функції:

 

for( i = 0; i < M; i++ )

{

for ( j = 0; j < N; j++ )

cout <<”Уведіть елементи матриці”;

cin>> a[ i ][ j ];

}

Доступ до елементів можливий за допомогою вкладених циклів for, де перший цикл надає доступ до перебирання лівих індексів (рядків), а другий, укладений – до правих індексів (стовпців).

3.1. Записати запропанований викладачем варіант завдання з п. 5.

Ознайомитись з рекомендованою літературою та конспектом лекцій.

3.2. Програмування задачі:

– скласти таблицю символічних імен;

– скласти схему алгоритму або псевдокод (за вказіквою викладача);

– скласти програму розв’язання задачі мовою С++.

3.3. Розв’язання задачі на ПЕОМ.

На ПЕОМ набрати, відлагодити та розв’язати складену програму.

3.4. Оформлення звіту.

Звіт повинен містити:

– номер лабораторної роботи та її назву;

– умову задачі та дані свого варіанта;

– таблицю символічних імен;

– схему алгоритму (або псевдокод);

– лістинг (або рукопис) програми;

– результати розрахунку задачі;

– висновки.

 

 

Дано матрицю T(2,6). Мінімальний і максимальний елементи матриці поміняти місцями.

Розв’язання.

Таблиця символічних імен

Математичне ім’я Ім’я у програмі Смислове значення Змінна
Тип Значення
А a Матриця з N рядків та M стовпців int Початкові дані
i,j i,j Індекси елементів матриці А int Початкові дані
max max Максимальний елемент int Результат
min min Мінімальний елемент int Результат
imax imax i- й індекс максимального елемента int Результат
jmax jmax j - й індекс максимального елемента int Результат
imin imin i - й індекс мінімального елемента int Результат
jmin jmin j - й індекс мінімального елемента int Результат
vsp vsp Буферна змінна int Допоміжна змінна
N N Кількість стовпців у матриці int
M M Кількість рядків у матриці int

Текст програми мовою C++

для компіляторів Visual C++2

# include <iostream.h>

const int M = 2;

const int N = 6;

int main()

{ // ініціалізація масиву а

int a[M][N]={{11,2,6,9,7,14},{14,25,36,17,18,3}};

int i, j, max, min, imax, imin, jmax, jmin, vsp;

cout << "Isxodniy massiv:" << endl;

for( i = 0; i < M; i++ ) // вивід вихідного масиву

{

for ( j = 0; j < N; j++ )

cout << a[ i ][ j ] << ‘\t’;

cout << endl;

}

max = a[0][0]; // допускаємо, що елемент a[0][0]максимальний

min = a[0][0]; // допускаємо, що елемент a[0][0]мінімальний

// відповідно до цього зазначаємо їх індекси

imax = 0; jmax = 0;

imin = 0; jmin = 0;

for ( i = 0; i < M; i++ ) // виконуємо доступ до рядків

for ( j = 0; j < N; j++ ) // виконуємо доступ до стовпців

{

if (max < a[i][j]) // пошук максимального елементу {

max = a[ i ][ j ];// фіксуємо значення елементу

imax = i; // фіксуємо номер рядка

jmax = j; // фіксуємо номер стовпця

}

if (min > a[i][j]) // пошук мінімального елементу

{

min = a[ i ][ j ]; // фіксуємо значення елементу

imin = i; // фіксуємо номер рядка

jmin = j; // фіксуємо номер стовпця

}

}

cout << endl;

cout << "Максимальний елемент = " << max << endl;

cout << "Мінімальний елемент = " << min << endl;

// міняємо місцями мінімальний і максимальний елементи:

vsp = a[imax][jmax]; // копіюємо максимальний елемент в буфер

a[imax][jmax] = a[imin][jmin]; // на місце максимального

// елементу записуємо мінімальний

a[imin][jmin] = vsp; // на місце мінімального елементу записуємо

// дані з буфера

cout << endl << "Масив після перестановки: " << endl;

for( i = 0; i < M; i++ )

{

for ( j = 0; j < N; j++ )

cout << a[ i ][ j ] << ‘\t’;

cout << endl;

}

return 0;

}

5. Варіанти завдань

 

Кожен студент вибирає варіант завдання за номером у списку групи.

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

 

1. Дано масив розміром 5х6 з елементами цілого типу. Написати програму для обчислення кількості елементів масиву, кратних трьом.

2. Дано масив розміром 7x2 з елементами дійсного типу. Написати програму для обчислення суми всіх додатних елементів масиву.

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

4. Дано масив розміром 4x6 з елементами цілого типу. Написати програму для обчислення суми елементів масиву.

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

6. Дано масив розміром 3x5 з елементами цілого типу. Написати програму для обчислення кількості елементів масиву, що при діленні на п’ять дають у залишку одиницю.

7. Дано масив розміром 5x2 з елементами дійсного типу. Написати програму, що визначає наявність від’ємних елементів в масиві.

8. Дано масив розміром 2x4 з елементами символьного типу. Написати програму для обчислення кількості елементів масиву, відмінних від ‘0’.

9. Дано масив розміром 2x4 з елементами дійсного типу. Написати програму, що визначає наявність у масиві хоча б одного елемента, що дорівнює нулю.

10. Дано масив розміром 4x2 з елементами цілого типу. Написати програму для обчислення кількості елементів масиву, модуль яких менший 12.

11. Дано масив розміром 2x5 з елементами дійсного типу. Написати програму для обчислення кількості елементів масиву, ціла частина яких дорівнює семи.

12. Дано масив розміром 3x4 з елементами дійсного типу. Написати програму для обчислення кількості елементів масиву, що при округленні дають шість.

13. Дано масив розміром 3x2 з елементами цілого типу. Написати програму для обчислення суми квадратів елементів масиву.

14. Дано масив розміром 6x2 з елементами дійсного типу. Написати програму для обчислення номера рядка, в якому розміщено мінімальний елемент масиву.

15. Дано масив розміром 3x5 з елементами цілого типу. Написати програму для обчислення номера стовпця, де міститься мінімальний елемент масиву.

16. Дано масив розміром 4x3 з елементами дійсного типу. Написати програму для обчислення кількості елементів масиву, дробова частина яких менша 0,1.

17. Дано масив розміром 3x6 з елементами дійсного типу. Написати програму для обчислення добутку всіх позитивних елементів масиву.

18. Дано масив розміром 6x2 з елементами дійсного типу. Написати програму для обчислення виразу max - min , де max - максимальний за модулем елемент масиву, а min - мінімальний за модулем елемент масиву.

19. Дано масив розміром 5x6 з елементами цілого типу. Написати програму для обчислення кількості позитивних елементів масиву, кратних п’яти.

20. Дано масив розміром 7x2 з елементами дійсного типу. Написати програму для обчислення суми всіх від’ємних елементів масиву, кратних двом.

21. Дано масив розміром 3x5 з елементами цілого типу. Написати програму для обчислення кількості елементів масиву, що при діленні на шість дають у залишку одиницю.

22. Знайти середнє геометричне позитивних елементів кожного рядка матриці Y(5x6).

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

24. Знайти найбільший елемент матриці А(2х3) і номер рядка та стовпця, в якому він міститься.

25. Дано масив розміром 4x4 з елементами символьного типу. Написати програму для обчислення кількості елементів масиву, що дорівнюють ‘0’.