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 и отображает рассчитанное значение на экране с округлением до трех цифр после точки. +Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы. +