Как вывести на экран список ребер, считанных из файла? Используя ООП.
Тема - графы.
В файле in.txt хранится матрица смежности.from dataclasses import dataclass

# считывание матрицы из файла
with open('in.txt') as f:
matrix =[list(map(int, row.split())) for row in f.readlines()]

@dataclass
class edgeStruct:
u: int #начальная вершина
v: int #конечная вершина
weight: int #вес
Содержимое файла in.txt0 6 20 10 13 9 6 10 2 3
6 0 0 11 7 0 9 16 17 2
20 0 0 20 17 10 2 14 2 4
10 11 20 0 2 18 14 16 15 0
13 7 17 2 0 21 6 0 13 18
9 0 10 18 21 0 4 7 18 9
6 9 2 14 6 4 0 3 15 10
10 16 14 16 0 7 3 0 8 3
2 17 2 15 13 18 15 8 0 0
3 2 4 0 18 9 10 3 0 0

21 Авг 2019 в 06:58
175 +1
0
Ответы
1

Для чтения списка рёбер графа из матрицы смежности можно создать отдельный класс, который получает матрицу в качестве одного из атрибутов и реализует метод для вывода рёбер.

Вот пример кода на 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, который выводит список рёбер.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир