форкнуто от main/python-labs
Родитель
3503f062d1
Сommit
37b15e5294
@ -0,0 +1,20 @@
|
||||
import matplotlib.pyplot as plt
|
||||
from M2 import process_data_and_save_results
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("--- Запуск главной программы M0 ---")
|
||||
|
||||
|
||||
sps1_for_plot = process_data_and_save_results()
|
||||
|
||||
|
||||
plt.figure(figsize=(10, 6))
|
||||
plt.plot(sps1_for_plot, marker='.', linestyle='-', color='skyblue', label='SPS1 Values')
|
||||
plt.title("График упорядоченного списка SPS1")
|
||||
plt.xlabel("Индекс отсчета")
|
||||
plt.ylabel("Значение элемента")
|
||||
plt.grid(True)
|
||||
plt.legend()
|
||||
plt.show()
|
||||
|
||||
print("\n Программа завершена")
|
||||
@ -0,0 +1,43 @@
|
||||
import math
|
||||
|
||||
def process_tuples(tuple1, tuple2):
|
||||
temp_list = []
|
||||
for item in tuple1:
|
||||
temp_list.append((item, 1))
|
||||
for item in tuple2:
|
||||
temp_list.append((item, 2))
|
||||
|
||||
temp_list.sort(key=lambda x: x[0])
|
||||
|
||||
sps1 = [item[0] for item in temp_list]
|
||||
sps2 = [item[1] for item in temp_list]
|
||||
|
||||
return sps1, sps2
|
||||
|
||||
def calculate_stats(numeric_list):
|
||||
n = len(numeric_list)
|
||||
mean = sum(numeric_list) / n
|
||||
|
||||
min_val = min(numeric_list)
|
||||
max_val = max(numeric_list)
|
||||
|
||||
|
||||
sorted_list = sorted(numeric_list)
|
||||
if n % 2 == 1:
|
||||
median = sorted_list[n // 2]
|
||||
else:
|
||||
median = (sorted_list[n // 2 - 1] + sorted_list[n // 2]) / 2
|
||||
if n <= 1:
|
||||
std_dev = 0.0
|
||||
else:
|
||||
variance = sum((x - mean) ** 2 for x in numeric_list) / (n - 1)
|
||||
std_dev = math.sqrt(variance)
|
||||
|
||||
return {
|
||||
"Среднее": mean,
|
||||
"Наименьшее": min_val,
|
||||
"Наибольшее": max_val,
|
||||
"Медиана": median,
|
||||
"Стандартное отклонение": std_dev
|
||||
}
|
||||
|
||||
@ -0,0 +1,38 @@
|
||||
import os
|
||||
import pickle
|
||||
from M1 import process_tuples, calculate_stats
|
||||
|
||||
def process_data_and_save_results():
|
||||
filename = ""
|
||||
|
||||
while not os.path.exists(filename):
|
||||
filename = input("Введите имя бинарного файла с данными (например, input_data.bin): ")
|
||||
if not os.path.exists(filename):
|
||||
print(f"Файл '{filename}' не найден. Попробуйте еще раз.")
|
||||
|
||||
|
||||
with open(filename, 'rb') as f:
|
||||
krt1 = pickle.load(f)
|
||||
krt2 = pickle.load(f)
|
||||
print(f"\nДанные успешно считаны из файла '{filename}'.")
|
||||
print(f"KRT1 (первые 5 элементов): {krt1[:5]}")
|
||||
print(f"KRT2 (первые 5 элементов): {krt2[:5]}")
|
||||
|
||||
sps1, sps2 = process_tuples(krt1, krt2)
|
||||
print("\n--- Результаты функции 1 ---")
|
||||
print(f"SPS1 (упорядоченный список элементов): {sps1[:10]}... (длина {len(sps1)})")
|
||||
print(f"SPS2 (список происхождения элементов): {sps2[:10]}... (длина {len(sps2)})")
|
||||
|
||||
|
||||
stats = calculate_stats(sps1)
|
||||
print("\n--- Результаты функции 2 (для SPS1) ---")
|
||||
for key, value in stats.items():
|
||||
print(f"{key}: {value:.2f}")
|
||||
|
||||
output_filename = "Res22.txt"
|
||||
with open(output_filename, 'w') as f:
|
||||
for val1, val2 in zip(sps1, sps2):
|
||||
f.write(f"{val1} {val2}\n")
|
||||
print(f"\nРезультаты функции 1 записаны в файл '{output_filename}'.")
|
||||
|
||||
return sps1
|
||||
Двоичный файл не отображается.
Загрузка…
Ссылка в новой задаче