Лабораторна робота № 2 (2 сем.)
Тема: Розробка мовою С++ функцій з аргументами-масивами, що можуть мати різну кількість елементів.
Ціль: Придбання навичок розробки функцій з використанням масивів, які можуть мати різну кількість елементів при викликах функції.
Вимоги до реалізації:
1)Програма повинна складатися не менш ніж з двох функцій (одна з них функція main()). Функції можуть знаходитись у одному модулі, але не повинні використовувати змінні з глобальною областю визначення, тобто обмін даними між функціями повинен здійснюватися за допомогою списку аргументів.
2)За бажанням та доцільністю використати у допоміжній функції значення аргументу по замовченню.
3)Головна функція повинна здійснювати декілька викликів допоміжної функції (яка виконує основний алгоритм) з передачею масивів з різною кількістю елементів. Заповнення масивів та відображення результатів виконує головна функція. Форма введення-виведення вхідних та вихідних даних повинна забезпечувати зручне тестування програми і аналіз отриманих результатів:
a) вхідні дані вводяться за запрошеннями, які повинні бути конкретними і зрозумілими;
b) виведення повинно супроводжуватися відповідними коментарями;
c) масиви повинні відображатися у вигляді таблиць з рівно віддаленими стовпчиками (повторно відображаються вхідні дані у зручній формі, а також отримані результати);
d) дійсні числа відображати у звичайному (не експоненціальному) вигляді: ціла частина, крапка, дробова частина (з двома знаками після крапки).
4)Програма повинна демонструвати два варіанти доступу до елементів масивів у допоміжній функції: за допомогою приведеного індексу та з використанням двох індексів для матриць, тобто необхідно передавати у функцію покажчик на масив та передавати подвійний покажчик на матрицю (для іншого масиву у тій самій функції або для того самого масиву у іншому варіанті аналогічної функції). Пам`ять під масив покажчиків та елементи матриці виділяти динамічно, за необхідним обсягом (див. приклади – Додатки 1, 2).
5)Тестування програми провести на варіантах вхідної інформації, які передбачають різні ситуації у границях обмежень у постановці задачі. Аналіз результатів необхідно провести самостійно до демонстрації програми викладачу та зафіксувати тести у зошиті з розрахунками або посиланнями на відповідні текстові файли (якщо результати не треба перевіряти: наприклад, сортування).
6)Програма повинна супроводжуватися коментарем, якій містить в собі: П.І.Б., шифр групи, умову завдання, примітки (якщо необхідно). Допоміжна функція повинна супроводжуватися коментарем, якій містить в собі: пояснення щодо призначення результату та аргументів функції, назву їх типів та розподіл аргументів на вхідні, вихідні та(або) вхіднівихідні (тобто ті, що змінюються).
Індивідуальні завдання:
Дана квадратная матрица вещественных чисел: . Если сумма элементов всех строк с четными номерами меньше 250, то обнулить элементы главной диагонали матрицы А.
Дана прямоугольная матрица вещественных чисел: . Для каждого столбца вычислить среднее арифметическое его элементов и перемножить их.
Дана прямоугольная матрица вещественных чисел: . Найти общее произведение элементов строк, имеющих четный номер. В строках с нечетными номерами все отрицательные элементы заменить на это произведение.
Дана квадратная матрица вещественных чисел: и вектор . Для каждой строки матрицы выполнить следующее преобразование. Если максимальный элемент i-ой строки матрицы меньше 10, тогда элемент на главной диагонали – заменить на .
Дана квадратная матрица вещественных чисел: . Если в i-ой строке матрицы элемент на главной диагонали , то все элементы этой строки заменить числом –1. Если , то все элементы строки заменить нулями. Если , то все элементы строки заменить числом +1.
Дана прямоугольная матрица вещественных чисел: . Вычислить сумму максимальных элементов в строках, т.е. найти , и заменить все элементы диагонали на величину S.
Дана прямоугольная матрица вещественных чисел: . Найти максимальный элемент среди минимальных элементов по строкам матрицы, т.е. . Если этот элемент больше чем (m+n), тогда уменьшить все элементы последнего столбца на число М.
Дана прямоугольная матрица вещественных чисел: . Найти сумму номеров тех столбцов матрицы, где на главной диагонали стоит нулевой элемент. Если , тогда заменить элемент на найденное значение суммы, иначе изменить значение элемента .
Дана квадратная матрица вещественных чисел: . Если сумма элементов главной диагонали больше суммы элементов побочной диагонали, то обнулить первую строку и первый столбец матрицы А.
Задана квадратная матрица вещественных чисел: . В качестве результирующего вектора Х принять главную диагональ данной матрицы, преобразованной следующим образом: в начале каждой строки должны быть собраны неотрицательные элементы, а в конце – отрицательные элементы (с сохранением порядка следования тех и других). Вывести заданную матрицу, преобразованную матрицу и вектор-результат.
Задана квадратная матрица вещественных чисел: . Найти в матрице первую по порядку строку с наибольшей суммой элементов и в качестве компонент вектора Х принять упорядоченные по неубыванию элементы этой строки. Вывести заданную матрицу, суммы по строкам, номер строки с максимальной суммой и вектор-результат.
Найти компоненты вектора Х – упорядоченные по невозрастанию средние арифметические значения элементов строк вещественной матрицы . Вывести матрицу А, средние арифметические строк и вектор Х.
Строки вещественной матрицы упорядочить по неубыванию ее первого столбца и в качестве вектора Х принять главную диагональ преобразованной матрицы А. Вывести исходную матрицу, преобразованную матрицу и вектор Х.
Задана квадратная матрица вещественных чисел: . В качестве компонент вектора Х принять
abs ( max { aij } – min { aij } ) , i=1,2,3,…,n. Вывести исходную матрицу и вектор Х.
1<=j<=n 1<=j<=n
15. Задана квадратная матрица вещественных чисел: . Найти в ней первую по порядку строку с максимальной суммой элементов. Сформировать вектор Х из элементов найденной строки с циклическим сдвигом ее элементов на две позиции влево. Вывести исходную матрицу, суммы по строкам и вектор Х.
16. Дана прямоугольная матрица вещественных чисел: . Найти первый максимальный элемент при просмотре матрицы по строкам. Изъять (путем уплотнения) строку и столбец, на пересечении которых находится максимальный элемент, и получить матрицу размером (m-1)*(n-1), а последние строку и столбец заполнить нулями. Вывести исходную матрицу, максимальный элемент, его индексы, новую матрицу.
17. Задана квадратная матрица вещественных чисел: . Сформировать на месте новую матрицу, которая получается «вычеркиванием» всех строк и столбцов, содержащих хотя бы один нулевой элемент. Освободившиеся строки и столбцы заполнить нулями. Вывести исходную матрицу, новую матрицу и ее размерность.
18. Дана прямоугольная матрица вещественных чисел: . Установить, имеется ли в данной матрице хотя бы одна строка, в которой расположены подряд не менее К элементов, равных заданному числу Х. Вывести исходную матрицу и индекс найденной строки с комментарием.
19. Дана прямоугольная матрица вещественных чисел: . Установить, имеется ли в данной матрице хотя бы один столбец, в котором расположены подряд не менее К элементов, равных заданному числу Х. Вывести на печать исходную матрицу и индекс найденного столбца с комментарием.
20. Дана прямоугольная матрица вещественных чисел: . Установить, имеется ли в данной матрице хотя бы одна диагональ, в которой расположены подряд не менее К элементов, равных заданному числу Х. Вывести на печать исходную матрицу и найденную диагональ с комментарием.
21. Дана прямоугольная матрица вещественных чисел: . Преобразовать матрицу следующим образом: все отрицательные элементы заменить числом –1, нулевые оставить без изменения, положительные заменить числом +1.
22. Задана квадратная матрица вещественных чисел: и вектор вещественных чисел Х = (х1, х2, … , хn). Транспонировать матрицу А (на месте) и найти произведение матрицы на вектор, т.е. сформировать вектор С:
n
Сi = ∑ (аij * xj), i=1,2,…,n.
j=1