From 5d3de3b2670911657c7bfaba9f755ff3b640b218 Mon Sep 17 00:00:00 2001 From: evgeny Date: Mon, 8 Dec 2025 14:38:01 +0300 Subject: [PATCH] reiz8andmodul --- TEMA8/11 | Bin 0 -> 96 bytes TEMA8/create_test_data.py | 18 ++++++++ TEMA8/iz.md | 4 +- TEMA8/m0.py | 28 ++++++++++++ TEMA8/m1.py | 28 ++++++++++++ TEMA8/m2.py | 93 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 TEMA8/11 create mode 100644 TEMA8/create_test_data.py create mode 100644 TEMA8/m0.py create mode 100644 TEMA8/m1.py create mode 100644 TEMA8/m2.py diff --git a/TEMA8/11 b/TEMA8/11 new file mode 100644 index 0000000000000000000000000000000000000000..2552102b55bbbafde8c05734ea65d19cbd2b6536 GIT binary patch literal 96 zcmZo*nHtIf0kKmwfXK_^-~az!wf}*H1(4<2&FU2i;_L$nCxArev-vJ%^zG#F&E!f2 kYVeik^=0Ppy}|0s$K)H% 0 else 0 + avg_B = sum(B) / len(B) if len(B) > 0 else 0 + + # Вычисляем пороговое значение P + P = (avg_A + avg_B) / 2 + + return [avg_A, avg_B, P] + +def colvo(C, M): + """ + подсчитывает элементы выше и не выше порога M + """ + up = 0 + down = 0 + + for element in C: + if element > M: + up += 1 + else: + down += 1 + + return up, down diff --git a/TEMA8/m2.py b/TEMA8/m2.py new file mode 100644 index 0000000..463591b --- /dev/null +++ b/TEMA8/m2.py @@ -0,0 +1,93 @@ +# Модуль М2 +import pickle +import os +import matplotlib.pyplot as plt +from m1 import sred, colvo + +def ctenie(): + """Чтение данных из бинарного файла""" + filename = input("Введите имя бинарного файла: ") + + if not os.path.exists(filename): + print(f"Файл {filename} не существует!") + return None, None + + try: + with open(filename, 'rb') as file: + data = pickle.load(file) + if len(data) >= 2: + A = data[0] + B = data[1] + return A, B + else: + print("Файл должен содержать как минимум два списка/кортежа") + return None, None + except Exception as e: + print(f"Ошибка при чтении файла: {e}") + return None, None + +def process_data(): + """Основная функция обработки данных""" + # Чтение данных из файла + A, B = ctenie() + + if A is None or B is None: + return None + + print(f"\nСписок A: {A}") + print(f"Список B: {B}") + + # Применение функции 1 + results = sred(A, B) + avg_A, avg_B, P = results + + print(f"\nСреднее значение A: {avg_A:.2f}") + print(f"Среднее значение B: {avg_B:.2f}") + print(f"Пороговое значение P: {P:.2f}") + + # Применение функции 2 к спискам A и B + up_A, down_A = colvo(A, P) + up_B, down_B = colvo(B, P) + + print(f"\nДля списка A:") + print(f" Элементов выше P ({P:.2f}): {up_A}") + print(f" Элементов не выше P: {down_A}") + + print(f"\nДля списка B:") + print(f" Элементов выше P ({P:.2f}): {up_B}") + print(f" Элементов не выше P: {down_B}") + + # Построение графика + plot_data(A, B, avg_A, avg_B, P) + + return results + +def plot_data(A, B, avg_A, avg_B, P): + """Построение графика для списков A и B""" + plt.figure(figsize=(10, 6)) + + # Создание индексов для элементов + indices_A = range(len(A)) + indices_B = range(len(B)) + + # Построение точек для списка A + plt.scatter(indices_A, A, color='blue', label='Список A', s=50, alpha=0.7) + + # Построение точек для списка B + plt.scatter(indices_B, B, color='red', label='Список B', s=50, alpha=0.7) + + # Горизонтальные линии для средних значений и порога + plt.axhline(y=avg_A, color='blue', linestyle='--', alpha=0.5, label=f'Среднее A: {avg_A:.2f}') + plt.axhline(y=avg_B, color='red', linestyle='--', alpha=0.5, label=f'Среднее B: {avg_B:.2f}') + plt.axhline(y=P, color='green', linestyle='-', alpha=0.7, label=f'Порог P: {P:.2f}') + + # Настройка графика + plt.xlabel('Индекс элемента') + plt.ylabel('Значение элемента') + plt.title('Сравнение списков A и B') + plt.legend() + plt.grid(True, alpha=0.3) + + # Сохранение графика + plt.savefig('comparison_plot.png', dpi=300, bbox_inches='tight') + plt.show()