Лабораторна робота № 8. Передача масивів у функцію
Рекомендації до виконання лабораторних робіт
ü Для передачі масиву у функцію, обов’язково потрібно вказати його розмірності за допомогою одного або більше цілочисельних параметрів, наприклад: float func(int n, float arr[]) {…}.
ü Іншим способом передачі масивів у функцію є використання імені масиву в якості вказівника (float func(int n, float * arr) {…}). Для двовимірного масиву його ім’я є масивом вказівників, наприклад:
long func1 (int n, int m, long*mas []) {…}).
ü Для передачі у функцію рядкових масивів розмірність вказувати не потрібно, оскільки ознакою кінця будь-якого рядка є нуль-символ ’\0’.
ü При виклику функції для передачі масиву зазначається лише його ім’я без квадратних дужок, наприклад, виклик функції func для роботи з масивом float a [10] матиме вигляд: func(10, a);
ü При перетворенні масивів на екран слід виводити початковий масив, якщо масив двовимірний – у вигляді матриці, а потім у такому ж вигляді – результат обробки.
Варіанти індивідуальних завдань
Варіант 8.1
У двовимірному масиві записано «слова», що є послідовністю цифр, кожне з яких завершується 0. Необхідно надрукувати слова через кому, взявши кожен рядок у дужки. Довжина рядка 60 символів. Вилучення слів оформити у вигляді функції.
Наприклад:
вихідні дані - 123023402303450
результат - (123,234,23,345)(23445,234567,1)(23445567767,45)
Варіант 8.2
Напишіть функцію для обміну рядків двовимірного масиву і з її допомогою відсортуйте масив за елементами третього стовпчика.
Варіант 8.3
Напишіть функцію для сумування матриць. Використайте її для додавання вихідної і транспонованої* матриць (*транспонована матриця одержується шляхом повертання вихідної на 90 °).
Варіант 8.4
Напишіть функцію для видалення рядка з двовимірного масиву. Решта рядків повинні розташовуватися щільно, вилучені елементи замінити 0. За допомогою розроблених функцій вилучіть з масиву рядки з номерами від А до В.
Варіант 8.5
Елемент матриці є седловою точкою, якщо він є найменшим у своєму рядку і найбільшим у своєму стовпчику (або навпаки: найбільшим у своєму рядку і найменшим у своєму стовпчику). Для заданої матриці визначіть всі седлові точки.
Варіант 8.6
Створіть функцію обміну стовпчика і рядка двовимірного масиву. З її допомогою поміняти місцями ті рядки і стовпчики, перші елементи яких співпадають.
Варіант 8.7
Напишіть функцію транспонування квадратної матриці (тобто повертання вихідної матриці на 90°). Використовуючи її визначіть, чи є задана матриця симетричною. (Матриця називається симетричною, якщо транспонована матриця рівна вихідній).
Варіант 8.8
Напишіть функцію для обчислення суми елементів квадратної матриці, які розташовані нижче головної діагоналі. З її допомогою знайдіть максимальне значення такої суми в n матрицях.
Варіант 8.9
Напишіть функцію, що перевіряє чи є від’ємні елементи у вказаному рядку двовимірного масиву. Видаліть з масиву всі рядки з від’ємними елементами. Вилучений рядок заповнюється 0 і переноситься в кінець масиву.
Варіант 8.10
Визначіть функцію, що перевіряє, за зростанням чи за спаданням елементів впорядковано вказаний рядок двовимірного масиву. Впорядкуйте за зростанням всі рядки двовимірного масиву.
Варіант 8.11
Напишіть функцію для пошуку максимального елементу в зазначеному рядку двовимірного масиву. Зсуньте у цьому масиві всі рядки циклічно вправо на кількість елементів рівну максимальному елементові в кожному рядку.
Варіант 8.12
Задано двовимірний масив. Запишіть функцію, яка б знаходила суму елементів першого стовпчика без одного останнього елемента, суму елементів другого стовпчика без двох останніх тощо. Останній стовпчик не обробляється. Серед знайдених сум визначіть максимальну.
Варіант 8.13
Напишіть функцію, за допомогою якої можна було б визначити добуток всіх стовпчиків масиву, в яких перший елемент більший за всі елементи, розташовані на головній та побічній діагоналях.
Варіант 8.14
Визначіть за допомогою функції, чи можливо у двовимірному масиві знайти такий стовпчик, який розбиває масив на два так, що сума елементів в першому більша за суму елементів у другому. Сам рядок до цих частин не належить.
Варіант 8.15
Задано двовимірний масив N x N. Дозволяється довільно переставляти елементи всередині будь-якого стовпчика. Перевірте за допомогою функції, чи можливо, виконавши кінцеву кількість перестановок у стовпчиках, розташувати на побічній діагоналі елементи за зростанням.
Варіант 8.16
Створити функцію, за допомогою якої можна знайти мінімальний серед тих елементів двовимірного масиву, що зустрічаються в ньому лише один раз.
Варіант 8.17
За допомогою функції знайдіть максимальний серед тих елементів двовимірного масиву, що зустрічаються більше одного разу.
Варіант 8.18
Створіть функцію, яка у двовимірному масиві знаходить середнє арифметичне елементів стовпчика і у кожному стовпчику шукає кількість елементів, що перевищують середнє арифметичне попереднього стовпчика.
Варіант 8.19
Дано одновимірний масив N цілих чисел. За допомогою функції сформуйте на його основі двовимірний масив N x N так, щоб сума елементів у першому стовпчику була рівна першому елементу одновимірного масиву, сума елементів другого стовпчика була рівна другому елементу одновимірного масиву тощо. Нулі не використовувати.
Варіант 8.20
За допомогою функції визначіть кількість елементів двовимірного масиву більших за будь-який елемент на головній діагоналі.
Варіант 8.21
З двовимірного масиву в одновимірний записано в довільному порядку спочатку рядки, а потім стовпчики. Напишіть програму з використанням функції, яка б відтворювала вихідний двовимірний масив за одновимірним, якщо відома розмірність двовимірного масиву і елементи в ньому не повторюються.
Варіант 8.22
Визначіть чи є матриця ортонормованою, тобто такою, що скалярний добуток кожної пари різних рядків дорівнює 0, а скалярний добуток рядка самого на себе дорівнює 1.
Варіант 8.23
Дано двовимірний масив N x M. Знайдіть у ньому підмасив 3 х 3, сума елементів якого максимальна. N і M можуть бути некратні трьом.
Варіант 8.24
Дано двовимірний масив N x N. Послідовно розглядаються квадратні підмасиви, правий верхній елемент яких лежить на побічній діагоналі. У кожному такому підмасиві знайдіть максимальний елемент. У кожному підмасиві шляхом перестановок рядків і стовпців елемент потрібно перемістити у правий верхній кут підмасиву. Перевірте чи отримана на побічній діагоналі спадаюча послідовність елементів.
Варіант 8.25
Задано рядок з N2 цифр. Встановіть чи можливо розбити рядок на підрядки довжиною N, записати їх у рядки двовимірного масиву N x N по одній цифрі в одному елементі так, щоб вони у першому стовпці розташувалися за зростанням.
Варіант 8.26
Дано двовимірний масив N x M. Знайдіть максимальний елемент на головній діагоналі, мінімальний елемент – на побічній і поміняйте їх місцями.
Варіант 8.27
Дано рядок з N символів. Знайдіть послідовності символів, що не розділені пробілом чи комою, і замініть їх відповідними цифрами на кнопках телефону у такий спосіб: 2= ABC, 3= DEF, 4=GHI, 5=JKL, 6=MNO, 7=PRS, 8=TUV, 9=WXY.
Варіант 8.28
Дано рядок, що представляє собою довільне рівняння зі стандартними позначками операцій (int i=8, і++; 3*4%5, 12<0&&15>8 тощо). Створіть функцію, що виводить результат обчислень в якості результату.
Варіант 8.29
Дано рядок, написаний з використанням скорочень і позначок, які широко зустрічаються у SMS-повідомленнях. За допомогою функції замініть ці позначки на відповідні еквіваленти латинської абетки.
Варіант 8.30
Дано рядок символів, що представляє собою послідовність з нулів та одиниць, тобто число у двійковому представленні. За допомогою функції визначіть, якому десятковому числу відповідає задана послідовність.