Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KURSAK.docx
Скачиваний:
10
Добавлен:
23.03.2015
Размер:
648.16 Кб
Скачать

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) наглядно показує нам

  1. Данні для вводу здійснені користувачем «7, -1, -2.4, 78, -56, 89, 6.7, -8.1, 7.8, 99, 65, -4, -7, 1, 2, -9».

  2. Знаходження координати найбільших чисел у стовпцях

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

  1. Відображення cуми найбільших чисел

Summ is 249.8

Рис. 1.10 – Тест task3_1

Рис. 1.11 – Тест task3_2

Як і в першому пркиладі програма працює ісправно в рамках завдання.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]