print( "task: Graf2\nПостроение матрицы инцидентности неориентированного графа по матрице смежности" ) import random def create_file(): n = random.randint(3, 6) with open("FileName1", "w") as f: f.write(str(n) + "\n") for i in range(n): row = [] for j in range(n): if i == j: row.append("0") else: row.append(str(random.randint(0, 1))) f.write(" ".join(row) + "\n") def read_graph(): try: with open("FileName1") as f: n = int(f.readline()) a = [list(map(int, f.readline().split())) for _ in range(n)] return n, a except: return None, None def build_incidence(n, a): edges = [] for i in range(n): for j in range(i, n): if a[i][j] != 0: edges.append((i, j)) m = len(edges) b = [[0] * m for _ in range(n)] for idx, (i, j) in enumerate(edges): b[i][idx] = 1 b[j][idx] = 1 return m, b def write_result(n, m, b): with open("FileName2", "w") as f: f.write(f"{n} {m}\n") for row in b: f.write(" ".join(map(str, row)) + "\n") while True: print("\n1 - создать файл FileName1") print("2 - выполнить задачу (результат в FileName2)") print("0 - выход") c = input(">> ") if c == "1": create_file() print("FileName1 создан") elif c == "2": n, a = read_graph() if n is None: print("ошибка чтения FileName1") continue m, b = build_incidence(n, a) write_result(n, m, b) print("результат записан в FileName2") elif c == "0": break