Dmitry Kolomeytsev 4 недель назад
Родитель 5e499cc963
Сommit af3fb08055

@ -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<len(CC2):
x.append(i)
i=i+1
plt.plot(x,CC2)
plt.grid(True)
plt.show()
write_bin("RES2a.bin",CC2)
main()

@ -0,0 +1,53 @@
# 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")

@ -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

@ -0,0 +1,25 @@
Иванов
Петров
Сидоров
Иванов
Смирнов
Кузнецов
Петров
Иванов
Орлов
Орлов
Сидоров
Сидоров
Петров
Смирнов
Иванов
Кузнецов
Кузнецов
Петров
Орлов
Смирнов
Иванов
Петров
Сидоров
Иванов
Смирнов

@ -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

@ -0,0 +1,2 @@
Иванов Петров Сидоров
Смирнов Кузнецов Орлов

Двоичные данные
TEMA9/ikz/RES2a.bin

Двоичный файл не отображается.

@ -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<len(CC2):
x.append(i)
i=i+1
plt.plot(x,CC2)
plt.grid(True)
plt.show()
write_bin("RES2a.bin",CC2)
main()
```
1 запуск:
```py
import M0
NUM50.txt
# Числа
[21, 25, 23, 27, 22, 24, 26, 20]
# Количество повторений
[7, 7, 6, 6, 6, 6, 6, 6]
```
![alt text](../pictures/NUM50.png)
2 запуск:
```py
import M0
NAMES.txt
# Имена
['Иванов', 'Петров', 'Сидоров', 'Смирнов', 'Кузнецов', 'Орлов']
# Количество повторений
[6, 5, 4, 4, 3, 3]
```
![alt text](../pictures/Figure_2.png)
Содержимое RES2.txt после отработки программы:
```py
Иванов Петров Сидоров
Смирнов Кузнецов Орлов
```
RES2a.bin создался успешно, данные занесены в бинарном виде.

Двоичные данные
TEMA9/pictures/Figure_2.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 16 KiB

Двоичные данные
TEMA9/pictures/NUM50.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 12 KiB

@ -1,7 +0,0 @@
# Индивидуальное контрольное задание по теме 9
Коломейцев Дмитрий, А-02-23
## Задание
## Решение
Загрузка…
Отмена
Сохранить