Алгоритми опрацювання табличних величин: пошук елемента з найбільшим/найменшим значенням

Як описати програму пошуку елемента з найбільшим/найменшим значенням?

У мові програмування Python для пошуку елемента з найбільшим значенням використовують функцію max(list), з найменшим — min(list).

Наприклад, результатом виконання програми (мал. 13.4) будуть значення: найбільше значення у списку 15, а найменше — 9, що легко перевірити із вказаного набору даних.

A=[10,12,14,9,15,11]

a_max=max(A)

a_min=min(A)

print('Найбільше значення у списку=', a_max )

print('Найменше значення у списку=', a_min )

Виконаємо такий алгоритм:

1) прочитаємо з пам’яті перший елемент списку. Його значення дорівнює 5. Запам’ятаємо його як максимальне — надамо його значення величині max;

2) прочитаємо другий елемент списку. Його значення більше за max, тому «забудемо» про попереднє значення і запам’ятаємо значення max=6;

3) прочитаємо третій елемент списку. Його значення менше за max, тому можна приступати до наступного кроку без зміни значення max.

Продовжимо таким чином кроки алгоритму, допоки не будуть переглянуті усі елементи списку до n включно. На кожній ітерації циклу у змінній max міститиметься найбільше значення з пройденої частини списку, а по завершенні циклу змінна max зберігатиме максимальне

значення в усьому списку.

Пошук найменшого елемента списку здійснюють за аналогічним алгоритмом, знаходячи відповідно елемент (min), який менший від усіх переглянутих елементів.

Працюємо гуртом

Вправа 1. Найменший елемент списку.

Завдання. Складіть програму знаходження найменшого елемента списку без використання функції min.

1. Скористайтеся запропонованою ідеєю: змінній a_min — найменшому значенню з проглянутих — спочатку надають значення елемента списку з найменшим номером. Послідовно переглядаючи значення наступних елементів списку при виявленні значення, меншого від

min, надаємо змінній min цього значення.

2. Проаналізуйте, чи подана програма реалізовує описану ідею.

import random

n=int(input('введіть n='))

max=99

a=[]

for j in range (n):

    a.append(random.randint(1,max))             

print('Шукаємо найменший елемент')

min=a[0]

for j in range (n):

    if a[j]<min:

        min=a[j]                  

print(f'Найменше значення у списку={a}={min}' )

3. Відкрийте середовище програмування https://replit.com/  

4. Створіть новий файл програми мовою програмування Python з іменем Найменший_елемент  в папці Навчальні проєкти своєї структури папок. 

5. У вікні редактора коду введіть обрані команди з програми

6. Запустіть проєкт на виконання. Перевірте на контрольному прикладі, дібраному самостійно, чи відповідають отримані результати умові завдання. Якщо є помилки — виправте їх. 

7. Завершіть роботу з проєктом та середовищем програмування, зберігши всі зміни.  

Вправа 2. Знайти номер максимального елемента списку

import random

a=[]

for j in range (10):

    a.append(random.randint(-10,10))             

print('Шукаємо номер найбільшого елементу списку')

big=a[0]

for j in range (10):

    if a[j]>big:

        big=a[j]

        k=j                

print(f'Номер найбільшого елементу={big} у списку {a}={k}' )

Вправа 3. Знайти номер максимального елемента списку

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

Складіть програму для визначення оцінки за цими правилами.

import random

A=[]

for i in range (8):

    A.append(random.randint(1,9))

print(A)

big=A[0] #шукаємо найбільшу оцінку

for i in range (8):

    if A[i]>big:

        big=A[i]               

print(f'Найбільша оцінка з отриманих {A}={big}' )

small=A[0] #шукаємо найменшу оцінку

for i in range (8):

    if A[i]<small:

        small=A[i]               

print(f'Найменша оцінка з отриманих {A}={small}')

s=0 #шукаємо суму загальну оцінок, суму і кількість мінімальних i максимальних

s_min=0

s_max=0

k_max=0

k_min=0

for i in range (8):

    s=s+A[i]

    if A[i]==big:

       s_max=s_max+A[i]

       k_max=k_max+1

    if A[i]==small:

       s_min=s_min+A[i]

       k_min=k_min+1

bal=(s-s_max-s_min)/(8-k_max-k_min)

print (f'Оцінка за виступ ={round(bal,2)}')

Один з результатів (кожного разу різний)

(4+6+7+3)/4=5

Практичні завдання

1

Практичне завдання до уроку №40-2.pdf

ЧИТАТИ ПІДРУЧНИК