§ 13. Максімальны і мінімальны элементы масіву
Сайт: | Профильное обучение |
Курс: | Інфарматыка. 10 клас (Павышаны ўзровень) |
Книга: | § 13. Максімальны і мінімальны элементы масіву |
Напечатано:: | Гость |
Дата: | Воскресенье, 5 Май 2024, 22:20 |
13.1. Пошук максімальнага (мінімальнага) элемента ў масіве
Вельмі часта для рашэння задачы патрабуецца знаходзіць не зададзены элемент масіву, а максімальны (найбольшы) ці мінімальны (найменшы) элемент. Разгледзім задачу знаходжання максімальнага элемента. Калі ў масіве толькі адзін адзінюткі элемент, то ён і ёсць максімальны. Калі элементаў больш за адзін, то максімальным у масіве з i элементаў з’яўляецца максімум з a[i] і максімальнага сярод першых i - 1 элементаў. Знаходзіць максімум будзем паслядоўна, параўноўваючы бягучы элемент з максімумам, знойдзеным на папярэднім кроку. Калі бягучы элемент большы, то значэнне максімуму, знойдзенае на папярэднім кроку, патрэбна абнавіць (прыклад 13.1). Дадзены алгарытм знаходзіць значэнне максімальнага элемента, але не дазваляе вызначыць, на якім месцы ў масіве змешчаны гэты максімальны элемент. Будзем выкарыстоўваць пераменную n_max для захоўвання індэкса максімальнага элемента. Значэнне пераменнай n_max будзе змяняцца тады, калі змяняецца значэнне максімальнага элемента (прыклад 13.2). Калі ў масіве некалькі элементаў маюць максімальнае значэнне, то значэннем пераменнай n_max будзе індэкс першага з іх. Калі выкарыстоўваць умову a[i] >= max, то пераменная n_max будзе захоўваць індэкс апошняга з максімальных элементаў. Калі вядомы індэкс i-га элемента масіву, то значэнне гэтага элемента можна атрымаць, звярнуўшыся да элемента па індэксе: a[i]. Таму пры пошуку максімальнага элемента дастаткова захоўваць толькі яго індэкс n_max. Значэнне максімальнага элемента — a[n_max] (прыклад 13.3). Пошук мінімальнага элемента ажыццяўляецца аналагічна. У праграме дастаткова замяніць знак > ва ўмове аператара галінавання на знак < (прыклад 13.4). Імя пераменнай для захоўвання нумара мінімальнага элемента — n_min. |
Прыклад 13.1. V. Праграма:
VI. Тэсціраванне. Прыклад 13.2. V. Праграма:
VI. Тэсціраванне. Прыклад 13.3. Фрагмент праграмы:
Прыклад 13.4. Фрагмент праграмы:
|
13.2. Рашэнне задач з выкарыстаннем алгарытму пошуку максімальнага (мінімальнага) элемента
Прыклад 13.5. У масіве захоўваецца інфармацыя пра вынікі спартсменаў, якія ўдзельнічаюць у лыжнай гонцы. Вызначыць вынік пераможца і яго нумар. Даныя прачытаць з тэкставага файла. I. Зыходныя даныя: масіў a — лікі, якія з’яўляюцца часам праходжання трасы, лік спартсменаў — n. II. Вынік: a[n_min] — мінімальны час, n_min — нумар пераможца. III. Алгарытм рашэння задачы. 1. Увод зыходных даных. IV. Апісанне пераменных: n, n_min – int, а – vector <double>. Прыклад 13.6. Вызначыць, колькі разоў у лінейным масіве сустракаецца элемент, роўны мінімальнаму. Этапы выканання задання I. Зыходныя даныя: масіў а, колькасць лікаў n. II. Вынік: a[n_min] — мінімальны элемент, k — колькасць мінімальных. III. Алгарытм рашэння задачы. 1. Увод зыходных даных. IV. Апісанне пераменных: n, n_min, k — int, а – vector <int>. Прыклад 13.7. Зададзены масіў са слоў. Знайсці ў ім самае доўгае і самае кароткае слова. I. Зыходныя даныя: масіў а, колькасць cлоў n. II. Вынік: a[n_min] — кароткае слова, a[n_max] — доўгае слова длинное слово. III. Алгарытм рашэння задачы. 1. Увод зыходных даных. IV. Апісанне пераменных: n, n_min, n_max – int, а – vector <string>.
[1] Параўнанне радкоў ажыццяўляецца лексікаграфічна: s1 < s2, калі для першага несупадаючага сімвала з нумарам i правільна, што s1[i] < s2[i], або ўсе сімвалы радкоў супадаюць, але s1 карацейшая s2. |
Прыклад 13.5. V. Праграма:
IV. Тэсціраванне. Прыклад 13.6. V. Праграма:
VI. Тэсціраванне. Прыклад 13.7. V. Праграма:
VI. Тэсціраванне. |
Пытанні да параграфу
1. Які элемент масіву з’яўляецца максімальным? Які мінімальным 2. Як знайсці максімальны элемент у масіве? 3. Як знайсці мінімальны элемент? 4. Якім чынам вызначыць нумар першага элемента, роўнага максімальнаму? 5. Як вызначыць нумар апошняга элемента, роўнага мінімальнаму? |
Практыкаванні
1. Змяніце праграмы з прыкладаў 13.1 і 13.2 так, каб знаходзіўся мінімальны элемент у масіве.
2. Для прыкладу 13.5 выканайце пералічаныя заданні.
1. Знайдзіце нумар спартсмена, які прыйшоў на фініш апошнім.
2. Вызначыце, ці быў пераможца адзіным або ёсць яшчэ лыжнік, які прайшоў трасу з такім жа вынікам (гл. прыклад 13.6).
3. Дабаўце яшчэ адзін масіў і ўвядзіце ў яго прозвішчы спартсменаў. Рэалізуйце пункты 1 і 2 так, каб выводзілася прозвішча, а не нумар (гл. прыклад 12.9).
3. Напішыце праграму, якая заменіць у масіве нулямі ўсе элементы, роўныя мінімальнаму.
4. Напішыце праграму, якая заменіць у масіве нулямі ўсе элементы, якія стаяць перад максімальным. Мяркуецца, што ў масіве адзіны максімальны элемент.
5. Напішыце праграму, якая заменіць нулямі ўсе элементы ў масіве, што стаяць пасля мінімальнага. Калі мінімальных элементаў некалькі, то замяняць трэба элементы, што стаяць пасля апошняга мінімальнага.
6. Напішыце праграму, якая вызначыць, які з элементаў — мінімальны або максімальны — сустракаецца ў масіве раней (мае меншы індэкс).
7. Напішыце праграму, якая вызначыць, які з элементаў — мінімальны або максімальны — сустракаецца ў масіве часцей.
8. Напішыце праграму, якая запіша ў новы масіў тыя элементы з зыходнага, якія размешчаны паміж мінімальным або максімальным (па індэксах).
9. У масіве захоўваецца інфармацыя пра кошт аўтамабіляў. Вызначыце кошт самага дарагога аўтамабіля і яго нумар у масіве. Калі ёсць некалькі такіх аўтамабіляў, то выведзіце ўсе нумары.
10. У масіве захоўваецца інфармацыя пра сярэднясутачную тэмпературу снежня. Вызначыце, колькі ў снежні было дзён з самай нізкай і з самай высокай тэмпературай.
11. Памеры n прамавугольнікаў захоўваюцца ў двух масівах (даўжыня і шырыня). Знайдзіце прамавугольнік з мінімальным перыметрам. (Вывесці нумар прамавугольніка і значэнне перыметра.)
12. Вядомы даныя пра масу (у кг) і аб’ём (у см3) n прадметаў, вырабленых з розных матэрыялаў. Знайдзіце прадметы з мінімальнай і максімальнай шчыльнасцямі. Выведзіце нумар прадмета і значэнне шчыльнасці.
13. Зададзены масіў са слоў. Знайдзіце ў ім самае доўгае слова, якое заканчваецца літарай «а».
14. Зададзены масіў са слоў. Знайдзіце ў ім самае кароткае слова, якое пачынаецца з вялікай літары.
15. Зададзены масіў са слоў. Знайдзіце ў ім слова, у якім максімальная колькасць галосных літар. Калі такіх слоў некалькі, выведзіце ўсе.
16. Зададзены масіў са слоў. Знайдзіце ў ім слова, у якім мінімальная колькасць зычных літар. Калі такіх слоў некалькі, то выведзіце самае доўгае з іх.