Как вывести на экран список ребер, считанных из файла? Используя ООП. Тема - графы. В файле in.txt хранится матрица смежности.from dataclasses import dataclass
# считывание матрицы из файла with open('in.txt') as f: matrix =[list(map(int, row.split())) for row in f.readlines()]
Для чтения списка рёбер графа из матрицы смежности можно создать отдельный класс, который получает матрицу в качестве одного из атрибутов и реализует метод для вывода рёбер.
Вот пример кода на Python:
from dataclasses import dataclass from typing import List @dataclass class Edge: u: int # начальная вершина v: int # конечная вершина weight: int # вес class Graph: def __init__(self, matrix: List[List[int]]): self.matrix = matrix def print_edges(self): n = len(self.matrix) edges = [] for i in range(n): for j in range(n): if self.matrix[i][j] != 0: edges.append(Edge(i, j, self.matrix[i][j])) for edge in edges: print(f"Edge from {edge.u} to {edge.v}, weight = {edge.weight}") # считывание матрицы из файла with open('in.txt') as f: matrix = [list(map(int, row.split())) for row in f.readlines()] # создание графа и вывод рёбер graph = Graph(matrix) graph.print_edges()
Этот код сначала создаёт класс Edge, представляющий ребро графа с указанными характеристиками, а затем класс Graph, который содержит метод print_edges для вывода всех рёбер из матрицы смежности. Когда матрица загружена из файла, создаётся экземпляр класса Graph, и вызывается метод print_edges, который выводит список рёбер.
Для чтения списка рёбер графа из матрицы смежности можно создать отдельный класс, который получает матрицу в качестве одного из атрибутов и реализует метод для вывода рёбер.
Вот пример кода на Python:
from dataclasses import dataclassfrom typing import List
@dataclass
class Edge:
u: int # начальная вершина
v: int # конечная вершина
weight: int # вес
class Graph:
def __init__(self, matrix: List[List[int]]):
self.matrix = matrix
def print_edges(self):
n = len(self.matrix)
edges = []
for i in range(n):
for j in range(n):
if self.matrix[i][j] != 0:
edges.append(Edge(i, j, self.matrix[i][j]))
for edge in edges:
print(f"Edge from {edge.u} to {edge.v}, weight = {edge.weight}")
# считывание матрицы из файла
with open('in.txt') as f:
matrix = [list(map(int, row.split())) for row in f.readlines()]
# создание графа и вывод рёбер
graph = Graph(matrix)
graph.print_edges()
Этот код сначала создаёт класс Edge, представляющий ребро графа с указанными характеристиками, а затем класс Graph, который содержит метод print_edges для вывода всех рёбер из матрицы смежности. Когда матрица загружена из файла, создаётся экземпляр класса Graph, и вызывается метод print_edges, который выводит список рёбер.