§ 15. Двухмерныя масівы
15.3. Апрацоўка двухмерных масіваў
Апрацоўка двухмерных масіваў дазваляе атрымаць якія-небудзь вынікі шляхам аналізу даных у масіве. Сам масіў пры гэтым не змяняецца. Задачы пошуку элементаў, якія задавальняюць умову, падліку сумы, пошуку максімальнага і інш. шмат у чым рашаюцца аналагічна таму, як гэта адбывалася для лінейных масіваў. Прыклад 15.8. Зададзены двухмерны масіў d з m радкоў і n слупкоў. Палічыць суму тых элементаў масіву, у якіх сума квадратаў нумара радка і нумара слупка роўная зададзенаму ліку x. Этапы выканання задання I. Зыходныя даныя: пераменныя m і n (колькасць радкоў і слупкоў у масіве), d — двухмерны масіў, x (лік). II. Вынік: пераменная s (сума шуканых элементаў). III. Алгарытм рашэння задачы.. 1. Увод зыходных даных. Масіў уводзіцца паэлементна. IV. Апісанне пераменных: n, x, s – int, d – vector<vector <int>> Прыклад 15.9. Зададзены двухмерны масіў d з m радкоў і n слупкоў. Вызначыць, ці ёсць у масіве хоць бы адзін элемент, кратны x. Калі так, то вывесці індэксы яго месцазнаходжання. Этапы выканання задання I. Зыходныя даныя: пераменныя m і n (колькасць радкоў і слупкоў у масіве), d — двухмерны масіў, x (лік). II. Вынік: пераменныя r, с (нумары радка і слупка, у якіх знойдзены элемент) або паведамленне «не знойдзены». III. Алгарытм рашэння задач. 1. Увод зыходных даных. Масіў запаўняецца выпадковымі лікамі. IV. Апісанне пераменных: n, x, r, c – int, d – vector<vector <int>> Калі ў масіве некалькі элементаў, якія задавальняюць умову задачы, то будзе выведзены апошні знойдзены элемент. Калі патрэбны першы элемент, то можна ўвесці дадатковую пераменную-флаг, якая будзе роўная true, пакуль значэнні r і c не змяніліся. Пасля іх змянення яна стане false і значэнні r і c больш змяняцца не будуць (прыклад 15.10). Прыклад 15.11. Зададзены двухмерны масіў d з m радкоў і n слупкоў. Знайсці мінімальны і максімальны элементы і вывесці індэксы іх месцазнаходжання. Этапы выканання задання I. Зыходныя даныя: пераменныя m і n — колькасць радкоў і слупкоў у масіве, d — двухмерны масіў, x — лік. II. Вынік: пераменныя r_min, c_min, r_max, c_max — нумары радка і слупка, у якіх знойдзены элемент. III. Алгарытм рашэння задачы. 1. Увод зыходных даных. Масіў запаўняецца выпадковымі лікамі. IV. Апісанне пераменных: n, m, n_min, c_min, r_max, c_max – int, d – vector<vector <int>> Калі ў масіве некалькі элементаў, роўных максімальнаму (мінімальнаму), то будзе выводзіцца месцазнаходжанне першага з такіх элементаў. Калі трэба атрымаць месцазнаходжанне апошняга, то дастаткова замяніць знак «>» («<») на «>=» («<=»). |
Прыклад 15.8. V. Праграма:
VI. Тэсціраванне. VII. Аналіз вынікаў. Будуць падсумаваны элементы, якія маюць нумары [1][2] і [2][1] (яны вылучаны). У матэматыцы для матрыцы вызначаны паняцці галоўная дыяганаль і пабочная дыяганаль. На галоўнай дыяганалі знаходзяцца элементы матрыцы d[i][j], для якіх правільная ўмова i = j. Для элементаў пабочнай дыяганалі: i + j = n – 1 (n — число столбцов, нумерация с 0). Прыклад 15.9. V. Праграма:
VI. Тэсціраванне. Прыклад 15.10. Фрагмент праграмы:
Прыклад 15.11. V. Праграма:
VI. Тэсціраванне. |