Приклад
Програма роботи
Постановка завдання
Мета роботи
Лабораторна робота № 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’.