Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 1k_2sem_2_dyn_mas_1112.doc
Скачиваний:
1
Добавлен:
11.08.2019
Размер:
126.46 Кб
Скачать

Лабораторна робота № 2 (2 сем.)

Тема: Розробка мовою С++ функцій з аргументами-масивами, що можуть мати різну кількість елементів.

Ціль: Придбання навичок розробки функцій з використанням масивів, які можуть мати різну кількість елементів при викликах функції.

Вимоги до реалізації:

1)Програма повинна складатися не менш ніж з двох функцій (одна з них  функція main()). Функції можуть знаходитись у одному модулі, але не повинні використовувати змінні з глобальною областю визначення, тобто обмін даними між функціями повинен здійснюватися за допомогою списку аргументів.

2)За бажанням та доцільністю використати у допоміжній функції значення аргументу по замовченню.

3)Головна функція повинна здійснювати декілька викликів допоміжної функції (яка виконує основний алгоритм) з передачею масивів з різною кількістю елементів. Заповнення масивів та відображення результатів виконує головна функція. Форма введення-виведення вхідних та вихідних даних повинна забезпечувати зручне тестування програми і аналіз отриманих результатів:

a) вхідні дані вводяться за запрошеннями, які повинні бути конкретними і зрозумілими;

b) виведення повинно супроводжуватися відповідними коментарями;

c) масиви повинні відображатися у вигляді таблиць з рівно віддаленими стовпчиками (повторно відображаються вхідні дані у зручній формі, а також отримані результати);

d) дійсні числа відображати у звичайному (не експоненціальному) вигляді: ціла частина, крапка, дробова частина (з двома знаками після крапки).

4)Програма повинна демонструвати два варіанти доступу до елементів масивів у допоміжній функції: за допомогою приведеного індексу та з використанням двох індексів для матриць, тобто необхідно передавати у функцію покажчик на масив та передавати подвійний покажчик на матрицю (для іншого масиву у тій самій функції або для того самого масиву у іншому варіанті аналогічної функції). Пам`ять під масив покажчиків та елементи матриці виділяти динамічно, за необхідним обсягом (див. приклади – Додатки 1, 2).

5)Тестування програми провести на варіантах вхідної інформації, які передбачають різні ситуації у границях обмежень у постановці задачі. Аналіз результатів необхідно провести самостійно до демонстрації програми викладачу та зафіксувати тести у зошиті з розрахунками або посиланнями на відповідні текстові файли (якщо результати не треба перевіряти: наприклад, сортування).

6)Програма повинна супроводжуватися коментарем, якій містить в собі: П.І.Б., шифр групи, умову завдання, примітки (якщо необхідно). Допоміжна функція повинна супроводжуватися коментарем, якій містить в собі: пояснення щодо призначення результату та аргументів функції, назву їх типів та розподіл аргументів на вхідні, вихідні та(або) вхіднівихідні (тобто ті, що змінюються).

Індивідуальні завдання:

  1. Дана квадратная матрица вещественных чисел: . Если сумма элементов всех строк с четными номерами меньше 250, то обнулить элементы главной диагонали матрицы А.

  2. Дана прямоугольная матрица вещественных чисел: . Для каждого столбца вычислить среднее арифметическое его элементов и перемножить их.

  3. Дана прямоугольная матрица вещественных чисел: . Найти общее произведение элементов строк, имеющих четный номер. В строках с нечетными номерами все отрицательные элементы заменить на это произведение.

  4. Дана квадратная матрица вещественных чисел: и вектор . Для каждой строки матрицы выполнить следующее преобразование. Если максимальный элемент i-ой строки матрицы меньше 10, тогда элемент на главной диагонали – заменить на .

  5. Дана квадратная матрица вещественных чисел: . Если в i-ой строке матрицы элемент на главной диагонали , то все элементы этой строки заменить числом –1. Если , то все элементы строки заменить нулями. Если , то все элементы строки заменить числом +1.

  6. Дана прямоугольная матрица вещественных чисел: . Вычислить сумму максимальных элементов в строках, т.е. найти , и заменить все элементы диагонали на величину S.

  7. Дана прямоугольная матрица вещественных чисел: . Найти максимальный элемент среди минимальных элементов по строкам матрицы, т.е. . Если этот элемент больше чем (m+n), тогда уменьшить все элементы последнего столбца на число М.

  8. Дана прямоугольная матрица вещественных чисел: . Найти сумму номеров тех столбцов матрицы, где на главной диагонали стоит нулевой элемент. Если , тогда заменить элемент на найденное значение суммы, иначе изменить значение элемента .

  9. Дана квадратная матрица вещественных чисел: . Если сумма элементов главной диагонали больше суммы элементов побочной диагонали, то обнулить первую строку и первый столбец матрицы А.

  10. Задана квадратная матрица вещественных чисел: . В качестве результирующего вектора Х принять главную диагональ данной матрицы, преобразованной следующим образом: в начале каждой строки должны быть собраны неотрицательные элементы, а в конце – отрицательные элементы (с сохранением порядка следования тех и других). Вывести заданную матрицу, преобразованную матрицу и вектор-результат.

  11. Задана квадратная матрица вещественных чисел: . Найти в матрице первую по порядку строку с наибольшей суммой элементов и в качестве компонент вектора Х принять упорядоченные по неубыванию элементы этой строки. Вывести заданную матрицу, суммы по строкам, номер строки с максимальной суммой и вектор-результат.

  12. Найти компоненты вектора Х – упорядоченные по невозрастанию средние арифметические значения элементов строк вещественной матрицы . Вывести матрицу А, средние арифметические строк и вектор Х.

  13. Строки вещественной матрицы упорядочить по неубыванию ее первого столбца и в качестве вектора Х принять главную диагональ преобразованной матрицы А. Вывести исходную матрицу, преобразованную матрицу и вектор Х.

  14. Задана квадратная матрица вещественных чисел: . В качестве компонент вектора Х принять

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