diff --git a/bin/graphs0.dart b/bin/graphs0.dart index 1da0b65..3535c1f 100644 --- a/bin/graphs0.dart +++ b/bin/graphs0.dart @@ -5,37 +5,48 @@ import 'dart:io'; int getIntLine() => int.parse(stdin.readLineSync(encoding: utf8)!); String getStrLine() => stdin.readLineSync(encoding: utf8)!; +void printGraphsName(List inp) { + print("Графы: "); + for (int i = 0; i < inp.length; i++) { + print("$i: ${inp[i].getName()}"); + } +} + void main(List arguments) { - Map x = {1: 10, 2: 11}; + /*Map x = {2: 10}; var p = Dot.fromMap("Т1", x); p.printD(); x = {}; - x[1] = 11; - var p2 = Dot.fromMap("Т2", x); - p2.printD(); + x[3] = 11; + var p2 = Dot.fromMap("Т2", {}); x = {}; var x1 = Graphs.fromList("Граф 1", [p, p2], true, false); - x1.addDot(p); - x1.addDotFromToLists("T3", [1, 2], [10, 20]); + x1.addIsolated("T3"); x1.addIsolated("T4"); - x1.checkDots(true); + x1.addPath(2, 3, 21); + //print(x1.addPath(4, 1, 10)); x1.printG(); - print(x1.addPath(4, 1, 10)); - x1.printG(); - x1.printToFile("outTest.txt"); - var x2 = Graphs.fromFile("outTest.txt"); - x2.printG(); - x2.delPath(1, 4); - x2.printG(); - x2.delDot(1); - x2.printG(); - x2.delDot(2); - x2.printG(); - x2.addPath(1, 2, 11); + x1.printToFile("o.txt"); + var x2 = Graphs.fromFile("o.txt"); x2.printG(); + print(x2.bfsHasPath(1, 4)); + print(x2.bfsPath(1, 3)); + Graphs x1 = Graphs("Gt", false, true); + x1.addIsolated("T1"); + x1.addIsolated("T2"); + x1.addIsolated("T3"); + x1.addIsolated("T4"); + x1.addPath(1, 3, 1); + x1.addPath(3, 2, 5); + + x1.addPath(2, 4, 10); + x1.printG(); + print(x1.bfsPath(1, 4)); + print(x1.bfsHasPath(1, 4)); + */ int deistvie = 1; List graphs = []; String name; @@ -101,23 +112,21 @@ void main(List arguments) { List inn = []; List len = []; - while (str != "" && str != " ") { - List a = str.split(sep.space); - for (var splitted in a) { - var dt = splitted.split(sep.dotToLength); - if (dt.length == 2) { - inn.add(int.parse(dt[0])); - len.add(int.parse(dt[1])); - } + List a = str.split(sep.space); + for (var splitted in a) { + var dt = splitted.split(sep.dotToLength); + if (dt.length == 2) { + inn.add(int.parse(dt[0])); + len.add(int.parse(dt[1])); } - list.add(Dot.fromTwoLists(dotName, inn, len)); } - Graphs newG = - Graphs.fromList(name, list, hasLength, isOriented); - newG.printG(); - graphs.add(newG); - break; + list.add(Dot.fromTwoLists(dotName, inn, len)); } + Graphs newG = + Graphs.fromList(name, list, hasLength, isOriented); + newG.printG(); + graphs.add(newG); + break; } } break; @@ -126,15 +135,11 @@ void main(List arguments) { { // удалить граф int num = graphs.length; - stdout.write( - "Нумерация с 0. Количество сохраненных графов: $num. Удалить граф с номером: "); + printGraphsName(graphs); + stdout.write("Удалить граф с номером: "); int x = getIntLine(); if (x >= 0 && x < num) { - /* - vector::iterator i = grafs.begin(); - for (int j = 0; j < x; j++) { - i++;} - grafs.erase(i);*/ + graphs.removeAt(x); } else { print("Не найден граф с таким номером"); } @@ -145,32 +150,27 @@ void main(List arguments) { // добавить вершину List inn = []; List len = []; - stdout.write( - "Ввод: *куда*|*вес* через пробел. Если граф не взвешенный, то в *вес* ставить 0: "); - String x = getStrLine(); - while (x != "" && x != " ") { - String a = x.substring(0, x.indexOf(sep.dotToLength)); - if (x.contains(sep.dotToLength)) { - x = x.substring(x.indexOf(" ") + 1, x.length); - } else { - x = ""; - } - if (a.contains(sep.dotToLength)) { - inn.add(int.parse((a.substring(0, a.indexOf(sep.dotToLength))))); - len.add(int.parse( - a.substring(a.indexOf(sep.dotToLength) + 1, a.length))); - } else { - inn.add(int.parse(a)); - len.add(0); + stdout.write("Имя вершины: "); + String dotName = getStrLine(); + + stdout.write( + "Ввод: *куда*|*вес* через пробел. Если граф не взвешенный, то *вес* можно не указывать.\nВершина cмежна с: "); + str = getStrLine(); + + List a = str.split(sep.space); + for (var splitted in a) { + var dt = splitted.split(sep.dotToLength); + if (dt.length == 2) { + inn.add(int.parse(dt[0])); + len.add(int.parse(dt[1])); } } - int num = graphs.length; - stdout.write( - "Нумерация с 0. Количество сохраненных графов: $num. Вставка в графа с номером: "); + printGraphsName(graphs); + stdout.write("Вставка в графа с номером: "); int y = getIntLine(); - if (y >= 0 && y < num) { - graphs[y].addDotFromToLists("0", inn, len); + if (y >= 0 && y < graphs.length) { + graphs[y].addDotFromToLists(dotName, inn, len); } else { print("Не найден граф с таким номером"); } @@ -181,11 +181,11 @@ void main(List arguments) { { // удалить вершину int num = graphs.length; - stdout.write( - "Нумерация с 0. Количество сохраненных графов: $num. Вывод графа с номером: "); + printGraphsName(graphs); + stdout.write("Вывод графа с номером: "); int y = getIntLine(); - graphs[y].printG(); if (y >= 0 && y < num) { + graphs[y].printG(); num = graphs[y].getDotAmount(); stdout.write("Количество вершин: $num. Вершина для удаления: "); int x = getIntLine(); @@ -203,11 +203,11 @@ void main(List arguments) { { // добавить ребро/дугу int num = graphs.length; - stdout.write( - "Нумерация с 0. Количество сохраненных графов: $num. Вставка в граф с номером: "); + printGraphsName(graphs); + stdout.write("Вставка в граф с номером: "); int y = getIntLine(); - graphs[y].printG(); if (y >= 0 && y < num) { + graphs[y].printG(); num = graphs[y].getDotAmount(); stdout.write("Количество вершин: $num. Вершина куда вствляется: "); int x1 = getIntLine(); @@ -229,12 +229,12 @@ void main(List arguments) { { // удалить ребро/дугу int num = graphs.length; - stdout.write( - "Нумерация с 0. Количество сохраненных графов: $num. Удаление из графа с номером: "); + printGraphsName(graphs); + stdout.write("Удаление из графа с номером: "); int y = getIntLine(); - graphs[y].printG(); int x1, x2; if (y >= 0 && y < num) { + graphs[y].printG(); num = graphs[y].getDotAmount(); stdout.write( "Количество вершин: $num. Введите через пробел номера вершин между которыми удалить ребро: "); @@ -254,8 +254,8 @@ void main(List arguments) { case 7: // вывод в консоль { int num = graphs.length; - stdout.write( - "Нумерация с 0. Количество сохраненных графов: $num. Вывод графа с номером: "); + printGraphsName(graphs); + stdout.write("Вывод графа с номером: "); int x = getIntLine(); if (x >= 0 && x < num) { graphs[x].printG(); @@ -268,8 +268,8 @@ void main(List arguments) { { // вывод в файл int num = graphs.length; - stdout.write( - "Нумерация с 0. Количество сохраненных графов: $num. Вывод графа с номером: "); + printGraphsName(graphs); + stdout.write("Вывод графа с номером: "); int x = getIntLine(); stdout.write("В файл: "); String out = getStrLine();