diff --git a/TEMA9/ikz/M0.py b/TEMA9/ikz/M0.py new file mode 100644 index 0000000..4d254ed --- /dev/null +++ b/TEMA9/ikz/M0.py @@ -0,0 +1,22 @@ +# M0.py +import pickle +import matplotlib.pyplot as plt +import M2 + +def write_bin(filename,data): + with open(filename,"wb") as f: + pickle.dump(data,f) + +def main(): + CC2=M2.run() + x=[] + i=0 + while i 0: + f.write(" ") + f.write(str(CC[i])) + in_line = in_line + 1 + + if in_line == n: + f.write("\n") + in_line = 0 + + i = i + 1 + + if in_line != 0: + f.write("\n") diff --git a/TEMA9/ikz/M2.py b/TEMA9/ikz/M2.py new file mode 100644 index 0000000..184eb2c --- /dev/null +++ b/TEMA9/ikz/M2.py @@ -0,0 +1,26 @@ +# M2.py + +import M1 + +def to_value(text): + s = text.strip() + if s.isdigit(): + return int(s) + return s + +def run(): + filename = input() + MM = [] + with open(filename, "r", encoding="utf-8") as f: + for line in f: + parts = line.split() + i = 0 + while i < len(parts): + MM.append(to_value(parts[i])) + i = i + 1 + + CC1, CC2 = M1.func1(MM) + print(CC1) + print(CC2) + M1.func2("RES2.txt", CC1, 3) + return CC2 diff --git a/TEMA9/ikz/NAMES.txt b/TEMA9/ikz/NAMES.txt new file mode 100644 index 0000000..8ff4927 --- /dev/null +++ b/TEMA9/ikz/NAMES.txt @@ -0,0 +1,25 @@ +Иванов +Петров +Сидоров +Иванов +Смирнов +Кузнецов +Петров +Иванов +Орлов +Орлов +Сидоров +Сидоров +Петров +Смирнов +Иванов +Кузнецов +Кузнецов +Петров +Орлов +Смирнов +Иванов +Петров +Сидоров +Иванов +Смирнов diff --git a/TEMA9/ikz/NUM50.txt b/TEMA9/ikz/NUM50.txt new file mode 100644 index 0000000..b647046 --- /dev/null +++ b/TEMA9/ikz/NUM50.txt @@ -0,0 +1,50 @@ +21 +25 +23 +27 +22 +24 +26 +20 +21 +25 +23 +27 +22 +24 +26 +20 +21 +25 +23 +27 +22 +24 +26 +20 +21 +25 +23 +27 +22 +24 +26 +20 +21 +25 +23 +27 +22 +24 +26 +20 +21 +25 +23 +27 +22 +24 +26 +20 +21 +25 diff --git a/TEMA9/ikz/RES2.txt b/TEMA9/ikz/RES2.txt new file mode 100644 index 0000000..fd9b086 --- /dev/null +++ b/TEMA9/ikz/RES2.txt @@ -0,0 +1,2 @@ +Иванов Петров Сидоров +Смирнов Кузнецов Орлов diff --git a/TEMA9/ikz/RES2a.bin b/TEMA9/ikz/RES2a.bin new file mode 100644 index 0000000..6456491 Binary files /dev/null and b/TEMA9/ikz/RES2a.bin differ diff --git a/TEMA9/ikz/test.md b/TEMA9/ikz/test.md new file mode 100644 index 0000000..2e05809 --- /dev/null +++ b/TEMA9/ikz/test.md @@ -0,0 +1,174 @@ +# Индивидуальное контрольное задание по теме 9 + +Коломейцев Дмитрий, А-02-23 + +## Задание + +Вариант M3_5 + +1) Создайте модуль М1, содержащий две функции: + +- функция 1: аргумент - список СС с числовыми или символьными значениями; по этому списку рассчитывается новый список СС1 с неповторяющимися значениями из исходного списка и числовой список СС2 с целочисленными элементами, равными числам повторений значений из СС1 в СС; эти два списка - результаты функции. + +- функция 2: аргументы - имя текстового файла, список с числовыми или символьными значениями и целое число; элементы из входного списка должны быть записаны в указанный файл, причем число элементов в строке файла должно равняться указанному целому числу. + +2) Создайте еще один модуль М2, в котором должны: + +- запрашиваться имя текстового файла с исходными данными, проверяться его наличие и при отсутствии - повторение запроса; + +- считывание значений из каждой строки файла и формирование из них списка ММ; + +- вызов функции 1 с ММ и отображение результатов; + +- вызов функции 2 с передачей ей списка СС1 из функции 1 для записи в файл RES2.txt по 3 элемента в строке. + +3) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает в виде графика полученный список СС2 и записывает его в бинарный файл RES2a.bin. + +4) Подготовьте 2 файла: один с 50 целочисленными случайными значениями из диапазона от 20 до 27, второй - с некоторым набором повторяющихся символьных значений, например, фамилий, и проверьте с ними разработанную программу. + + + +## Решение + +Содержание M1: +```py +# M1.py + +def func1(CC): + CC1 = [] + CC2 = [] + + i = 0 + while i < len(CC): + value = CC[i] + j = 0 + exists = 0 + while j < len(CC1): + if CC1[j] == value: + exists = 1 + break + j = j + 1 + if exists == 0: + CC1.append(value) + i = i + 1 + + i = 0 + while i < len(CC1): + value = CC1[i] + count = 0 + j = 0 + while j < len(CC): + if CC[j] == value: + count = count + 1 + j = j + 1 + CC2.append(count) + i = i + 1 + + return CC1, CC2 + + +def func2(filename, CC, n): + with open(filename, "w", encoding="utf-8") as f: + i = 0 + in_line = 0 + while i < len(CC): + if in_line > 0: + f.write(" ") + f.write(str(CC[i])) + in_line = in_line + 1 + + if in_line == n: + f.write("\n") + in_line = 0 + + i = i + 1 + + if in_line != 0: + f.write("\n") +``` + +Содержание M2: +```py +# M2.py + +import M1 + +def to_value(text): + s = text.strip() + if s.isdigit(): + return int(s) + return s + +def run(): + filename = input() + MM = [] + with open(filename, "r", encoding="utf-8") as f: + for line in f: + parts = line.split() + i = 0 + while i < len(parts): + MM.append(to_value(parts[i])) + i = i + 1 + + CC1, CC2 = M1.func1(MM) + print(CC1) + print(CC2) + M1.func2("RES2.txt", CC1, 3) + return CC2 +``` + +Содержание главного модуля M0: +```py +# M0.py +import pickle +import matplotlib.pyplot as plt +import M2 + +def write_bin(filename,data): + with open(filename,"wb") as f: + pickle.dump(data,f) + +def main(): + CC2=M2.run() + x=[] + i=0 + while i