Читайте также:
|
|
Матриці та використання покажчиків
Зміст роботи: матриці та одержання практичних навичок програмування і розв’язання задач обробки матриць.
Двовимірний масив об’являється у програмі заданням імені та двох розмірів, які пишуться у квадратних дужках. Наприклад:
int num[4][6]; // матриця цілих чисел з 4
// рядків і 6 стовпців
float temp[3][5];// матриця дійсних чисел з 3
// рядків і 5 стовпців
Двовимірний масив розміщується в пам’яті подібно одномірним масивам, займаючи послідовні ячейки пам’яті. Порядок задається тим, що самий правий індекс масиву змінюється першим, тобто спочатку розміщується перша строчка, за нею друга і т. д.
Щоб правильно ініціювати двомірний масив, потрібно дані, що відносяться до окремих рядків масиву, вказувати в окремих фігурних дужках:
int sol[2][4] = {{ 1, 2, 5, 6 },
{ 7, 3, 5, 1 }};
Якщо даних менше ніж потрібно для ініціалізації, то решта елементів масиву заповнюється нулями.
Показчик - це змінна, значенням якої є адреса деякого об’єкту. Приклади правильного опису показчиків:
int *pi; // pi – покажчик на об’єкт цілого типу
char *pch; // pch – покажчик на об’єкт типу char
float *pf, *pg; // pf, pg – покажчики на об’єкти // типу float
Ім’я масиву є показчик (точніше, константа типу покажчик), який вказує на перший елемент масиву. Тобто, для нашого прикладу score == &score[0]. Показчик можна використовувати для доступу до окремого елемента масива, наприклад:
score+2 == &score[2] // одна і та ж адреса
*(score+2) == score[2] // одне і те ж значення
Оскільки операція (*) має більш високий пріорітет, ніж +, то вираз *(score+2) означає значення третього елементу масива score, а *score+2 – до значення першого елементу масива добавляється 2.
Приклад.
// введення рахунку
void main()
{ int i, score[10];
int *pi;
for (i=0, pi=score; s<=9; i++)
scanf("%d", pi+i); // введення результатів
for (i=0; s<=9; i++)
printf("%5d", *(pi+i)); // перевірка
printf("\n");
test(score); // обробка результатів
}
Задачі цієї лабораторної роботи слід виконати в двох варіантах: без явного використання показчиків та з застосуванням показчиків на масиви.
Варіант 1.
1. Одержати матрицю , елементи якої є мінімальними значеннями з відповідних значень елементів матриць і .
2. В матриці знайдіть такий елемент , що має таку властивість: будь-який стовпець матриці містить хоча б один не менший за модулем ніж .
Варіант 2.
1. В кожному непарному стовпці матриці підрахуйте кількість елементів, що належать проміжку .
2. Перевірте чи є матриця магічним квадратом.
Варіант 3.
1. Задана матриця . Якщо елементи симетричні відносно головної діагоналі, рівні за модулем, то матриця є або симетричною (елементи рівні), або кососиметричною (елементи мають протилежні знаки). З’ясувати вид матриці .
2. Пронормуйте матрицю за першою нормою, тобто одержіть матрицю , де , .
Варіант 4.
1. Сформуйте вектор із цілих елементів матриці розміру , які лежать правіше обох діагоналей і належать проміжку .
2. З’ясуйте, чи є симетричною матриця , тобто .
Варіант 5.
1. Сформуйте вектор, елементи якого відповідно дорівнюють квадратам сум елементів діагоналей матриці розміру .
2. Одержіть таблицю Піфагора - матрицю , де . Протранспонуйте її. Знайдіть і порівняйте сліди матриць та (слідом матриці називається число, яке дорівнює сумі елементів головної діагоналі).
Варіант 6.
1. Сформуйте вектор із середній арифметичних значень елементів, які є непарними числами парних рядків матриці .
2. З’ясуйте, чи є ортогональною матриця , тобто чи виконується .
Варіант 7.
1. Пронормуйте матрицю за її третьою нормою, тобто одержіть матрицю , де , .
2. Із матриці одержіть вектор, який містить середньоквадратичні значення елементів непарних стовбців початкової матриці.
Варіант 8.
1. Матриця містить два однакових елемента. Знайдіть ці елементи та їх індекси (ніякий елемент матриці не повинен порівнюватись сам із собою).
2. Пронормуйте матрицю за другою нормою, тобто одержіть матрицю , де , .
Варіант 9.
1. Утворіть квадратну матрицю розміру із чисел від 1 до , розмістивши їх зигзагом. Обхід почніть з лівого верхнього кутка.
2. В матриці знайдіть рядок, сума елементів якого максимальна. Підрахуйте добуток елементів того стовпця матриці, якому належить цей елемент.
Варіант 10.
1. Одержіть вектор, елементи якого дорівнюють елементам побічної діагоналі матриці , перетвореної попередньо наступним чином: на початку кожного рядка матриці знаходяться додатні елементи, потім слідують нулі, а в кінці – від’ємні елементи.
2. В матриці кожний елемент дорівнює одиниці, двійці, трійці або четвірці. Підрахуйте кількість четвірок , в кожній із яких всі елементи не дорівнюють одне одному.
Варіант 11.
1. Обчисліть , де - кількість нульових елементів в парних стовбцях матриці .
2. Утворіть квадратну матрицю розміру із чисел від 1 до , розмістивши їх зиґзаґом. Обхід почніть з правого нижнього кутка.
Варіант 12.
1. Знайдіть головний (найбільший за модулем) елемент матриці , його індекси та розділіть на нього всі елементи матриці.
2. В матриці всі додатні елементи, що лежать вище і нижче діагоналей, замініть одиницями, а від’ємні елементи, розміщені лівіше та правіше діагоналей, - нулями.
Варіант 13.
1. Знайдіть максимальний елемент серед від’ємних елементів, розміщених лівіше обох діагоналей матриці та визначте його індекси.
2. В матриці елементи кожного рядка є довжинами сторін чотирикутника, вписаного в коло. Знайдіть чотирикутник, що має найменшу площу.
Варіант 14.
1. В матриці знайдіть найменше число , що має таку властивість: хоча б в одному рядку матриці всі елементи не перевищують .
2. В кожному рядку матриці знайдіть мінімальний елемент , та виконайте циклічний зсув елементів рядка за годинниковою стрілкою, так щоб знайдений елемент був в першому стовпці.
Варіант 15.
1. Знайдіть суму елементів парних рядків матриці , в яких на головній діагоналі розміщені числа кратні .
2. Кожен елемент матриці - ціле число. Одержіть вектор, кожний елемент якого дорівнює кількості елементів в відповідних рядках матриці, що не дорівнюють одне одному.
Контрольні запитання до лабораторної роботи № 4
1. Як оголошується двовимірний масив?
2. Як масив розміщується у пам’яті?
3. Що ви розумієте під ініціалізацією масиву?
4. Чи може масив містити значення різних типів?
5. Відповідність масиву і покажчика на масив.
6. Операції, які використовуються для змінних типу покажчик.
7. Що таке покажчик? Якщо у програмі є визначення виду float *num, у чому буде різниця між num та *num?
8. Яка різниця між ім’ям масиву і покажчиком?
9. Операції адресової арифметики.
Дата добавления: 2015-08-20; просмотров: 102 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Do оператор while (вираз); | | | Лабораторна робота №5 |