Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Пошук найбільшого або найменшого елементу масиву

 

Давайте повернемось до нашого календаря природи і знайдемо, в який день лютого було вранці (не забувайте, що в наш календар природи ми домовились заносити ранкову температуру) зафіксовано найвищу температуру. Іншими словами ми розв’язуємо таку задачу:

Задача 169. Знайти значення температури найтеплішого ранку в лютому.

Задачі такого типу називаються задачами на пошук найбільшого (максимального) елементу масиву. Якби ми нам потрібно було знайти найхолодніший ранок в лютому, то це була б задача на пошук найменшого (мінімуму). Дані дві задачі є практично однаковими, то ми розв’яжемо першу ­– на пошук найбільшого, а задачу на пошук найменшого спробуйте розв’язати самостійно. Якщо ви уважно розберетесь з приведеним нижче розв’язком, то у вас ніяких труднощів не повинно бути.

Розв’язання: Для простоти будемо вважати, що у всі ранки з 8 по 21 число температура була стабільною і змінювалась в межах від –5оС до –8оС. Ще раз приведемо нашу таблицю температур:

-8 -7 -5 -4 -4 -5 -4 ... -9 -7 -4 -2 -1
...

а нижче приведемо значення найвищої температури по проходженню чергового ранку:

-8 -7 -5 -4 -4 -4 -4 ... -4 -4 -4 -2

Як ми знаходили найвище значення? Давайте опишемо процес знаходження найвищої температури словесно. Зрозуміло, що в перший день лютого було зафіксовано найвищу температуру в лютому, адже інші дні ще не настали. Коли було знято покази термометра вранці 2–го лютого, ми порівняли знайдену температуру з найвищою температурою (–8) і побачили, що нова температура є вищою за попереднє значення, тому новим значенням найвищої температури стало –7. Таким самим способом ми поступали кожного дня. Звертаємо вашу увагу на те, що ми порівнювали нове значення температури не з температурою попереднього дня, а з значенням найвищої температури за всі попередні дні. Це значення не є елементом масиву, а є значенням окремої змінної.

Тепер програмна реалізація описаного способу розв’язку поставленої задачі є «справою техніки»:

program temperatura_max;

uses dos, crt;

var i, maxtemp : integer;

temp : array[1..28] of integer;

begin

clrscr;

for i := 1 to 28 do

begin

write(‘Введiть значення температури ’,i,‘-го лютого: ’);

readln(temp[i]);

end;

maxtemp := temp[1];

for i := 2 to 28 do

if temp[i] > maxtemp then maxtemp := temp[i];

writeln(‘ Найвища температура у лютому становить ’,maxtemp);

readln

end.

Задача 170. Спробуйте модифікувати приведену вище програму для знаходження найнижчої температури у лютому.

Розв’яжіть цю задачу самостійно, а ми ж сформулюємо розв’язану вище задачу трішечки інакше.

Задача 171. Знайти найвищу температуру і вказати, якого числа її було зафіксовано.

Розв’язання: Очевидно, що для знаходження номера дня нам потрібно ввести ще одну змінну, наприклад, num_day_max_temp типу integer і в циклі пошуку найбільшої температури додати пошук номера дня найбільшої температури. При цьому слід не забути про те, що до початку циклу пошуку дану температуру було зафіксовано першого дня, тобто зробити початкове присвоєння вказаної змінної. Наведемо лише фрагмент програми, де реалізовано наведені міркування. Весь інший текст програми повністю співпадає з попередньою задачею, за винятком додаткової змінної, описаної више.

...

maxtemp := temp[1];

num_day_max_temp := 1;

for i := 2 to 28 do

if temp[i] > maxtemp then

begin

maxtemp := temp[i];

num_day_max_temp := 1;

end;

...

На перший погляд все нібито вірно. Але даний розв’язок задачі не є вірним.

Спробуйте самостійно знайти помилку у розв’язку задачі і лише після цього приступайте до подальшого розгляду матеріалу. Для знаходження помилки спробуйте скласти свою таблицю температур.

Помилку спровоковано невірним формулюванням самої умови задачі. Наведемо формулювання задачі ще раз і підкреслимо слова, які і спонукають нас до невірного розв’язку: Знайти найвищу температуру і вказати, якого числа її було зафіксовано.Здогадались? Так, звичайно, найвища температура у лютому могла бути зафіксована не одного дня, а в декілька днів. Причому ці дні не обов’язково йдуть підряд. Більше того, теоретично можливий і фантастичний випадок, коли у всі дні лютого температура була однаковою і тоді нам необхідно було б надрукувати номери всіх днів з цією нереальною, але цілком теоретично можливою картою погоди.

Якщо номери днів нам не потрібно зберігати, то вірна програмна реалізація розв’язку задачі матиме вигляд:

program temperatura_max1;

uses dos, crt;

var i, maxtemp : integer;

temp : array[1..28] of integer;

begin

clrscr;

for i := 1 to 28 do

begin

write(‘Введiть значення температури ’,i,‘-го лютого: ’);

readln(temp[i]);

end;

maxtemp := temp[1];

for i := 2 to 28 do

if temp[i] > maxtemp then maxtemp := temp[i];

writeln(‘Найвища температура у лютому становить ’,maxtemp);

write(‘Її було зафіксовано у наступні дні місяця: ’);

for i := 1 to 28 do

if temp[i] = maxtemp then write( temp[i], ‘ ’);

readln

end.

Як бачимо, ми у даному випадку обійшлись і без додаткової змінної. А як бути у тому випадку, коли нам потрібно було б зберігати номери днів з найвищою температурою? У цьому випадку згадувана змінна num_day_max_temp повинна бути описана також як масив, а не окрема змінна. До початку знаходження номерів днів з найвищою температурою необхідно присвоїти елементам цього масиву таке значення, яке вони не можуть мати при подальшому пошуку днів з найвищою температурою, наприклад, 0, так як такого дня місяця не існує. Спробуйте самостійно реалізувати даний випадок розв’язку задачі.

 

 


Читайте також:

  1. Абсолютизація формально-технічних пошуків у мистецтві ХХ ст.
  2. Багатомовна пошукова система
  3. Бібліографія. Інформаційно-пошукові мови бібліографічних фондів. Види каталогів: систематичні, предметні, абеткові.
  4. Будівельний підряд. Підряд на проектні та пошукові роботи.
  5. Визначення методу пошуку.
  6. Використання інформаційних технологій в пошуку вакансій
  7. ВІЛЬНИЙ ПОШУК (у тому числі ВАЛІДАЦІЯ) ® ПРОГНОСТИЧНЕ МОДЕЛЮВАННЯ ® АНАЛІЗ ВИКЛЮЧЕНЬ
  8. Груповий потенціал: пошук синергії
  9. Евристичний пошук
  10. Етап 2. Пошук оновлень
  11. Зародження ” М. Стельмаха як письменника. Риси творчості та стильові пошуки.
  12. Засоби зберігання та пошуку документів




Переглядів: 573

<== попередня сторінка | наступна сторінка ==>
Поняття масиву | Сортування елементів масиву

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.01 сек.