From b0636ee11a8add3e2d6e9a954194b4038572ced6 Mon Sep 17 00:00:00 2001 From: TerekhovFV Date: Mon, 8 Dec 2025 03:53:40 +0300 Subject: [PATCH] =?UTF-8?q?=D1=82=D0=B5=D0=BC=D0=B0=208=20=D0=B3=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA8/OM1.py | 10 ++++++++++ TEMA8/OM2.py | 13 +++++++++++++ TEMA8/OM3.py | 14 ++++++++++++++ TEMA8/data1.txt | 2 ++ TEMA8/data2.txt | 2 ++ TEMA8/task.md | 8 ++++++++ 6 files changed, 49 insertions(+) create mode 100644 TEMA8/OM1.py create mode 100644 TEMA8/OM2.py create mode 100644 TEMA8/OM3.py create mode 100644 TEMA8/data1.txt create mode 100644 TEMA8/data2.txt create mode 100644 TEMA8/task.md diff --git a/TEMA8/OM1.py b/TEMA8/OM1.py new file mode 100644 index 0000000..c280ead --- /dev/null +++ b/TEMA8/OM1.py @@ -0,0 +1,10 @@ +import os +def read_numbers_from_file(filename): + numbers = [] + with open(os.getcwd()+ '/TEMA8/' + filename, 'r') as file: + for line in file: + elements = line.strip().split() + for element in elements: + if element: + numbers.append(float(element)) + return numbers \ No newline at end of file diff --git a/TEMA8/OM2.py b/TEMA8/OM2.py new file mode 100644 index 0000000..08ad76c --- /dev/null +++ b/TEMA8/OM2.py @@ -0,0 +1,13 @@ +def calculate_correlation(list1, list2): + n = min(len(list1), len(list2)) + x = list1[:n] + y = list2[:n] + + mean_x = sum(x) / n + mean_y = sum(y) / n + + numerator = sum((x[i] - mean_x) * (y[i] - mean_y) for i in range(n)) + denominator = (sum((x[i] - mean_x) ** 2 for i in range(n)) * + sum((y[i] - mean_y) ** 2 for i in range(n))) ** 0.5 + + return numerator / denominator \ No newline at end of file diff --git a/TEMA8/OM3.py b/TEMA8/OM3.py new file mode 100644 index 0000000..73ac907 --- /dev/null +++ b/TEMA8/OM3.py @@ -0,0 +1,14 @@ +import os +from OM1 import read_numbers_from_file +from OM2 import calculate_correlation + +print(os.getcwd()) +filename1 = input("Введите имя первого файла: ") +filename2 = input("Введите имя второго файла: ") + +list1 = read_numbers_from_file(filename1) +list2 = read_numbers_from_file(filename2) + +correlation = calculate_correlation(list1, list2) + +print(f"Коэффициент корреляции: {correlation:.3f}") \ No newline at end of file diff --git a/TEMA8/data1.txt b/TEMA8/data1.txt new file mode 100644 index 0000000..84b8477 --- /dev/null +++ b/TEMA8/data1.txt @@ -0,0 +1,2 @@ +1 2 3 4 5 +6 7 8 9 10 \ No newline at end of file diff --git a/TEMA8/data2.txt b/TEMA8/data2.txt new file mode 100644 index 0000000..b3dfb6a --- /dev/null +++ b/TEMA8/data2.txt @@ -0,0 +1,2 @@ +2 4 6 8 10 +12 14 16 18 20 \ No newline at end of file diff --git a/TEMA8/task.md b/TEMA8/task.md new file mode 100644 index 0000000..01cf839 --- /dev/null +++ b/TEMA8/task.md @@ -0,0 +1,8 @@ +# Общее контрольное задание. + +Разработайте программу, состоящую из трех модулей: +- Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полученный список должен возвращаться в вызывающую программу. +- Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу. +- Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. Затем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки. +Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы. +