diff --git a/TEMA8/task.md b/TEMA8/task.md index 5117661..cfc1231 100644 --- a/TEMA8/task.md +++ b/TEMA8/task.md @@ -1,162 +1,85 @@ -\# Общее контрольное задание по теме 8 - - +# Общее контрольное задание по теме 8 Володин Денис, А-02-23 - - -\## Задание - - +## Задание Разработайте программу, состоящую из трех модулей: -\- Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полученный список должен возвращаться в вызывающую программу. +- Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полученный список должен возвращаться в вызывающую программу. -\- Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу. +- Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу. -\- Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. Затем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки. +- Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. Затем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки. Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы. - - -\## Решение - - +## Решение ```py - - -\#okz1.py - - +#okz1.py def reading (file): -   nums = \[] -   with open(file, 'r') as file: -   for line in file: -   nums.extend(map(float, line.split())) -   return nums - - -\#okz2.py - - +#okz2.py import math - def correlation(a1, a2): -   n = min(len(a1), len(a2)) -   sum1 = sum(a1) -   sum2 = sum(a2) -   sum1sq = sum(now \*\* 2 for now in a1) -   sum2sq = sum(now \*\* 2 for now in a2) -   sum12 = sum(x \* y for x, y in zip(a1, a2)) - -   part1 = n \* sum12 - sum1 \* sum2 -   part2 = math.sqrt((n \* sum1sq - sum1 \*\* 2) \* (n \* sum2sq - sum2 \*\* 2)) - -   try: -   corr = part1 / part2 -   return corr -   except ZeroDivisionError: -   print("Ошибка деления на ноль!") -   return - - -\#okz3.py - - +#okz3.py from okz1 import reading - from okz2 import correlation - - file1 = input("Введите имя первого файла: ") - file2 = input("Введите имя второго файла: ") - - arr1 = reading(file1) - arr2 = reading(file2) - - if arr1 is None or arr2 is None: -   print("Не удалось считать данные из файлов.") - else: -   corr = correlation(arr1, arr2) -   if corr is not None: -   print(f"Коэффициент корреляции: {corr:.2f}") - - - - -\#Проверка - - +#Проверка data1.txt - 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 - - data2.txt - 10.0 9.0 9.5 8.0 7.0 5.0 4.0 2.0 1.0 7.5 - - - Введите имя первого файла: data1.txt - Введите имя второго файла: data2.txt - Коэффициент корреляции: -0.76 - - - Process finished with exit code 0 - -`` +```