- •Функції стандартного введення-виведення
- •1.1.6. Логічні операції Арифметичні операції:
- •Операції відношення та логічні операції:
- •Операції присвоювання:
- •1.2.1. Умова завдання.
- •1.2.2. Опис методу рішення
- •1.2.3. Опис алгоритму програми
- •1.2.4. Тестування роботи програми
- •1.3.1. Умова завдання
- •1.3.2. Опис методу рішення
- •1.3.3. Опис алгоритму програми
- •1.3.4. Тестування роботи програми
- •1.4.1. Умова завдання
- •1.4.2. Опис методу рішення
- •1.4.3. Опис алгоритму програми
- •1.4.4. Тестування роботи програми
- •Висновки
- •Cписок викоростаних джерел
1.4.3. Опис алгоритму програми
За допомогою #define задається кількість рядків і стовпців в матриці 4х4 (X_DIM 4, Y_DIM 4). Далі інформуємо компілятор про функцію, яка буде використана за текстом раніше, ніж буде описана, після чого
стоврюється масив завдовжки X_DIM, в який потім запишеться адреса найбільшого числа у стовпціint cur_y[X_DIM].
Слідуючим етапом стає створення двовимірного масиву, з яким будуть проводиться операції matrix[][] і масив для знайдених максимумів float matrix[X_DIM][Y_DIM], found_biggest[X_DIM].Створюємо також лічільники i, t = 0 і змінну для находження суми float summ = 0.0f. Після чого програма виводить запит на введення даних, натякаючи на розміри матриці в пристрій стандартного виводу, та поки дійсна умова, що i менше Y_DIM - перемикаються рядки, а t менше X_DIM перемикаються стовпці. Потім друкує запит на введення даних за поточною адресою в матриці в пристрій стандартного виводу і
зчитує введення за поточною адресою в матриці. Поки i менше X_DIM (кількості стовпців) - перемикає стовпці від 0 до X_DIM. Далі призначає масиву для знайдених максимумів за адресою лічильника стовпців знайдений максимум в цьому стовпці found_biggest[i]=biggest_in_column(matrix, i, cur_y) і друкує знайдений максимум в стовпці в пристрій стандартного виводу, вказуючи номер стовпця, само число і де в стовпці воно було знайдене. Після чого підсумовує поточний максимум з попереднім значенням (чи нулем, якщо це перший) summ = summ + found_biggest[i].
Під кінець програма виводить суму максимумів.
Функція пошуку максимуму в стовпці. Їй передається матриця, яка локально буде названа local_matrix, так само номер поточного стовпця і _покажчик_ на масив з адресами максимумів.
Можна використовувати і не покажчик. Наприклад так:
float biggest_in_column(float local_matrix[X_DIM][Y_DIM], int column, int cur_y[Y_DIM], але для масивів це не принципово. Лічильник встановлюється в 0 і потім задається поточний максимум теж як 0, що б не було помилок, інакше при виклику змінної виникне несумісність(float current_biggest = 0.0f. Покилічильник менше висоти стовпця, порівнює чи більше поточне значення в цьому стовпці і в цьому рядку того, що зараз вважається максимумом і якщо так,
призначає максимуму поточне значення в цьому стовпці і в цьому рядку current_biggest=local_matrix[column][i].
Так само записує в якому місці знаходиться це значення у цього стовпця cur_y[column]=i і після чого повертає максимум в стовпці
return current_biggest.
1.4.4. Тестування роботи програми
В даній програмі присутні вхідні та вихідні дані. Присутність вхідних даних забов’язує користувача вводити їх. Вхідними даними можуть бути будь-які числа, навіть дробові. Вводити числа потрібно по черзі по кожній координаті при діалозі, з’являється із запитом. Заповнивши числами матрицю, програма оброблює та показує координати найбільших чисел у стовпцях, після чого сумує ці числа і виводить на екран. Розглянемо декілька прикладів роботи програми.
Перший приклад (рис.1.7) наглядно показує нам
Данні для вводу здійснені користувачем «7, -1, -2.4, 78, -56, 89, 6.7, -8.1, 7.8, 99, 65, -4, -7, 1, 2, -9».
Знаходження координати найбільших чисел у стовпцях
Biggest in column 0 is 7.8 at 2
Biggest in column 0 is 99 at 2
Biggest in column 0 is 65 at 2
Biggest in column 0 is 78 at 2
Відображення cуми найбільших чисел
Summ is 249.8
Рис. 1.10 – Тест task3_1
Рис. 1.11 – Тест task3_2
Як і в першому пркиладі програма працює ісправно в рамках завдання.